Heim Backend-Entwicklung Python-Tutorial Die Analyse der geografischen Datenverarbeitung in Python verwendet GR für Vektoren

Die Analyse der geografischen Datenverarbeitung in Python verwendet GR für Vektoren

Feb 07, 2021 am 09:47 AM
python

Die Analyse der geografischen Datenverarbeitung in Python verwendet GR für Vektoren

Empfohlenes kostenloses Lernen: Python-Video-Tutorial

1. Overlay-Analyse:

Plotfarbe:
'r' rot, 'g' grün, „b“ Blau, „c“ Cyan, „y“ Gelb, „m“ Magenta, „k“ Schwarz, „w“ Weiß. Die Analyse der geografischen Datenverarbeitung in Python verwendet GR für Vektoren
    Einfache Karte der Stadtgrenzen, Gewässer und Feuchtgebiete von New Orleans:

1. Analyse des städtischen Sumpfgebiets von New Orleans:

Die Analyse der geografischen Datenverarbeitung in Python verwendet GR für Vektoren

import osfrom osgeo import ogrfrom ospybook.vectorplotter import VectorPlotter

data_dir = r'E:\Google chrome\Download\gis with python\osgeopy data'# 得到新奥尔良附近的一个特定的沼泽特征vp = VectorPlotter(True)water_ds = ogr.Open(os.path.join(data_dir, 'US', 'wtrbdyp010.shp'))water_lyr = water_ds.GetLayer(0)water_lyr.SetAttributeFilter('WaterbdyID = 1011327')marsh_feat = water_lyr.GetNextFeature()marsh_geom = marsh_feat.geometry().Clone()vp.plot(marsh_geom, 'c')# 获得新奥尔良边城市边界nola_ds = ogr.Open(os.path.join(data_dir, 'Louisiana', 'NOLA.shp'))nola_lyr = nola_ds.GetLayer(0)nola_feat = nola_lyr.GetNextFeature()nola_geom = nola_feat.geometry().Clone()vp.plot(nola_geom, fill=False, ec='red', ls='dashed', lw=3)# 相交沼泽和边界多边形得到沼泽的部分# 位于新奥尔良城市边界内intersection = marsh_geom.Intersection(nola_geom)vp.plot(intersection, 'yellow', hatch='x')vp.draw()

  2. Berechnen Sie das Feuchtgebiet der Stadt Bereich:

Die Analyse der geografischen Datenverarbeitung in Python verwendet GR für Vektoren

# 获得城市内的湿地多边形# 将多边形的面积进行累加# 除以城市面积water_lyr.SetAttributeFilter("Feature != 'Lake'") # 限定对象water_lyr.SetSpatialFilter(nola_geom)wetlands_area = 0# 累加多边形面积for feat in water_lyr: 
    intersect = feat.geometry().Intersection(nola_geom)
    wetlands_area += intersect.GetArea()pcnt = wetlands_area / nola_geom.GetArea()print('{:.1%} of New Orleans is wetland'.format(pcnt))
28.7% of New Orleans is wetland

Hinweis: Filtern Sie unnötige Features durch räumliche Filterung und Attributfilterung, wodurch die Verarbeitungszeit erheblich verkürzt werden kann. ??

  1. Bestimmen Sie, wie viele Städte in den Vereinigten Staaten im Umkreis von 10 Meilen (1 Meile = 1609,3 Meter) von einem Vulkan entfernt sind. Eine problematische Methode zur Bestimmung der Anzahl von Städten in der Nähe eines Vulkans:

# 将湖泊数据排除# 在内存中创建一个临时图层# 将图层相交,将结果储存在临时图层中water_lyr.SetAttributeFilter("Feature != 'Lake'")water_lyr.SetSpatialFilter(nola_geom)wetlands_area = 0for feat in water_lyr:
    intersect = feat.geometry().Intersection(nola_geom) # 求交
    wetlands_area += intersect.GetArea()pcnt = wetlands_area / nola_geom.GetArea()print('{:.1%} of New Orleans is wetland'.format(pcnt))water_lyr.SetSpatialFilter(None)water_lyr.SetAttributeFilter("Feature != 'Lake'")memory_driver = ogr.GetDriverByName('Memory')temp_ds = memory_driver.CreateDataSource('temp')temp_lyr = temp_ds.CreateLayer('temp')nola_lyr.Intersection(water_lyr, temp_lyr)sql = 'SELECT SUM(OGR_GEOM_AREA) AS area FROM temp'lyr = temp_ds.ExecuteSQL(sql)pcnt = lyr.GetFeature(0).GetField('area') / nola_geom.GetArea()print('{:.1%} of New Orleans is wetland'.format(pcnt))
28.7% of New Orleans is wetland

2. Eine bessere Methode zur Bestimmung der Anzahl von Städten in der Nähe eines Vulkans:

from osgeo import ogr

shp_ds = ogr.Open(r'E:\Google chrome\Download\gis with python\osgeopy data\US')volcano_lyr = shp_ds.GetLayer('us_volcanos_albers')cities_lyr = shp_ds.GetLayer('cities_albers')# 在内存中创建一个临时层来存储缓冲区memory_driver = ogr.GetDriverByName('memory')memory_ds = memory_driver.CreateDataSource('temp')buff_lyr = memory_ds.CreateLayer('buffer')buff_feat = ogr.Feature(buff_lyr.GetLayerDefn())# 缓缓冲每一个火山点,将结果添加到缓冲图层中for volcano_feat in volcano_lyr:
    buff_geom = volcano_feat.geometry().Buffer(16000)
    tmp = buff_feat.SetGeometry(buff_geom)
    tmp = buff_lyr.CreateFeature(buff_feat)# 将城市图层与火山缓冲区图层相交result_lyr = memory_ds.CreateLayer('result')buff_lyr.Intersection(cities_lyr, result_lyr)print('Cities: {}'.format(result_lyr.GetFeatureCount()))
Cities: 83

Hinweis: UnionCascaded(): Kombiniert effektiv alle Polygone in Ein zusammengesetztes Polygon

 im ersten Beispiel wird immer dann in die Ausgabe kopiert, wenn sich eine Stadt innerhalb der Vulkanpufferzone befindet. Beachten Sie, dass eine Stadt, die sich innerhalb mehrerer 16.000-Meter-Pufferzonen befindet, mehr als einmal einbezogen wird. 3. Berechnen Sie die Entfernung zwischen einer bestimmten Stadt und dem Vulkan: Wert berücksichtigen, der Die tatsächliche Entfernung beträgt 5.

from osgeo import ogr

shp_ds = ogr.Open(r'E:\Google chrome\Download\gis with python\osgeopy data\US')volcano_lyr = shp_ds.GetLayer('us_volcanos_albers')cities_lyr = shp_ds.GetLayer('cities_albers')# 将缓冲区添加到一个复合多边形,而不是一个临时图层multipoly = ogr.Geometry(ogr.wkbMultiPolygon)for volcano_feat in volcano_lyr:
    buff_geom = volcano_feat.geometry().Buffer(16000)
    multipoly.AddGeometry(buff_geom)# 将所有的缓冲区联合在一起得到一个可以使用的多边形作为空间过滤器cities_lyr.SetSpatialFilter(multipoly.UnionCascaded())print('Cities: {}'.format(cities_lyr.GetFeatureCount()))
Cities: 78
import osfrom osgeo import ogrfrom ospybook.vectorplotter import VectorPlotter

data_dir = r'E:\Google chrome\Download\gis with python\osgeopy data'shp_ds = ogr.Open(os.path.join(data_dir, 'US'))volcano_lyr = shp_ds.GetLayer('us_volcanos_albers')cities_lyr = shp_ds.GetLayer('cities_albers')# 西雅图到雷尼尔山的距离volcano_lyr.SetAttributeFilter("NAME = 'Rainier'")feat = volcano_lyr.GetNextFeature()rainier = feat.geometry().Clone()cities_lyr.SetSpatialFilter(None)cities_lyr.SetAttributeFilter("NAME = 'Seattle'")feat = cities_lyr.GetNextFeature()seattle = feat.geometry().Clone()meters = round(rainier.Distance(seattle))miles = meters / 1600print('{} meters ({} miles)'.format(meters, miles))
92656 meters (57.91 miles)
 Die Fläche von 2,5D beträgt tatsächlich 141.

# 2Dpt1_2d = ogr.Geometry(ogr.wkbPoint)pt1_2d.AddPoint(15, 15)pt2_2d = ogr.Geometry(ogr.wkbPoint)pt2_2d.AddPoint(15, 19)print(pt1_2d.Distance(pt2_2d))
rrreeVerwandte kostenlose Lernempfehlungen:

Python-Tutorial

(Video)

Das obige ist der detaillierte Inhalt vonDie Analyse der geografischen Datenverarbeitung in Python verwendet GR für Vektoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHP-Tutorial
1510
276
Was sind gemeinsame Strategien zum Debuggen eines Speicherlecks in Python? Was sind gemeinsame Strategien zum Debuggen eines Speicherlecks in Python? Aug 06, 2025 pm 01:43 PM

UsetracemalloctoTrackMemoryAllocations undidentififyHigh-Memorindininen; 2.MonitorObjectCountswithgcandobjgraphoToDeCtGrowingObjecttypes;

Wie automatisieren Sie die Dateneingabe von Excel zu einem Webformular mit Python? Wie automatisieren Sie die Dateneingabe von Excel zu einem Webformular mit Python? Aug 12, 2025 am 02:39 AM

Die Methode zum Ausfüllen von Excel -Daten in Webformulare mithilfe von Python lautet: Verwenden Sie zunächst Pandas, um Excel -Daten zu lesen und dann mit Selen das Browser zu steuern, um das Formular automatisch zu füllen und zu übermitteln. Zu den spezifischen Schritten gehören die Installation von Pandas, OpenPyxl- und Selenium -Bibliotheken, das Herunterladen des entsprechenden Browsertreibers, die Verwendung von Pandas zum Lesen von Namen, E -Mails, Telefon und anderen Feldern in der Datei data.xlsx, starten Sie den Browser über Selen, um das Ziel -Last zu erstellen. Wenn Sie die Ausnahme des Stellverfahrens verarbeiten, können Sie die Ausnahme des Stellverfahrens verarbeiten. Formieren und verarbeiten Sie alle Datenlinien in einer Schleife.

Was ist die Stimmungsanalyse im Kryptowährungshandel? Was ist die Stimmungsanalyse im Kryptowährungshandel? Aug 14, 2025 am 11:15 AM

Inhaltsverzeichnis Was ist die Stimmungsanalyse im Kryptowährungshandel? Warum die Stimmungsanalyse für Kryptowährungsinvestitionen wichtig ist, wobei wichtige Quellen von Emotionsdaten a. Social -Media -Plattform b. Nachrichtenmedien c. Instrumente für die Stimmungsanalyse und Technologie häufig verwendete Tools in der Stimmungsanalyse: Angenommene Techniken: Integrieren Sie die Stimmungsanalyse in Handelsstrategien, wie Händler es verwenden: Strategie Beispiel: Annahme von BTC -Handelsszenario -Szenario -Szenario -Szenario -Szenario -Szenario -Szenario -Einstellung: Emotionales Signal: Händlern Interpretation: Entscheidung: Ergebnisse und Einschränkungen und Rissen der Stimmungsanalyse, die Emotionen für die Kryption des Trading -Verständnisses im Verknüpfung des Kryptionsverbots. Eine kürzlich von Hamid 2025 Studie 2025

So richten Sie die virtuelle Python -Umgebung in VSCODE ein So richten Sie die virtuelle Python -Umgebung in VSCODE ein Aug 06, 2025 am 02:30 AM

Erstellen Sie eine virtuelle Umgebung: Führen Sie Python-mvenvvenv im Projektordner aus. 2. Aktivieren Sie die virtuelle Umgebung: Windows verwendet Venv \ scripts \ aktivieren, MacOS/Linux verwendet SourceVenv/bin/activate. 3. Öffnen Sie das Projekt in VSCODE und drücken Sie STRG Shift P, um den Python -Interpreter auszuwählen. Geben Sie den Interpreter in der virtuellen Umgebung an. 4. Überprüfen Sie, ob es effektiv ist: Führen Sie die Importsys aus; drucken (sys.execable), und der Ausgangspfad sollte auf den Griffordner verweisen. 5. Optionale Konfiguration: Aktivieren Sie python.terminal.a in Einstellungen

Wie implementieren Sie einen benutzerdefinierten Iterator in einer Python -Klasse? Wie implementieren Sie einen benutzerdefinierten Iterator in einer Python -Klasse? Aug 06, 2025 pm 01:17 PM

Define__iter __ () toreturn theiteratorObject, typisch SelfoRaseParateiterinInstance

Wie drucke ich eine JSON -Datei in Python ziemlich aus? Wie drucke ich eine JSON -Datei in Python ziemlich aus? Aug 07, 2025 pm 12:10 PM

Um JSON -Dateien zu verschönern und zu drucken, müssen Sie die Einstellparameter des JSON -Moduls verwenden. Die spezifischen Schritte sind: 1. Verwenden Sie JSON.LOAD (), um die JSON -Dateidaten zu lesen; 2. Verwenden Sie JSON.DUMP () und setzen Sie den Einzug auf 4 oder 2, um in eine neue Datei zu schreiben, und dann kann die formatierte JSON -Datei generiert werden und der verschönernde Druck kann abgeschlossen werden.

So verwenden Sie die Aufzählung zur Schleife mit einem Index in Python So verwenden Sie die Aufzählung zur Schleife mit einem Index in Python Aug 11, 2025 pm 01:14 PM

Wenn Sie die Sequenz durchqueren und auf den Index zugreifen müssen, sollten Sie die Funktion "Enumerate () verwenden. 1.. Enumerate () liefert automatisch den Index und den Wert, der prägnanter ist als Bereich (Len (Sequenz)); 2. Sie können den Startindex über den Startparameter angeben, z. B. Start = 1, um 1 basierte Zählung zu erreichen. 3.. Sie können es in Kombination mit bedingter Logik verwenden, z. B. das Überspringen des ersten Elements, die Anzahl der Schleifen oder die Formatierung der Ausgabe. 4. Für iterable Objekte wie Listen, Zeichenfolgen und Tupel sowie für das Auspacken von Elementen anwendbar; 5. Verbesserung der Code -Lesbarkeit, vermeiden Sie manuell verwaltet und reduzieren Sie Fehler.

So kopieren Sie Dateien und Verzeichnisse von einem Ort zum anderen in Python So kopieren Sie Dateien und Verzeichnisse von einem Ort zum anderen in Python Aug 11, 2025 pm 06:11 PM

Um Dateien und Verzeichnisse zu kopieren, bietet das Shutil -Modul von Python einen effizienten und sicheren Ansatz. 1. verwenden Sie Shutil.copy () oder Shutil.copy2 (), um eine einzelne Datei zu kopieren, die Metadaten behält; 2. Verwenden Sie Shutil.copyTree (), um das gesamte Verzeichnis rekursiv zu kopieren. Das Zielverzeichnis kann nicht im Voraus existieren, aber das Ziel kann durch DIRS_EXIST_OK = TRUE (Python3.8) existieren. 3.. Sie können bestimmte Dateien in Kombination mit Ignorierparametern und Shutil.ignore_Patterns () oder benutzerdefinierten Funktionen filtern. 4. Das Kopieren von Verzeichnissen erfordert nur OS.Walk () und OS.Makedirs ()

See all articles