Heim > Artikel > Backend-Entwicklung > Python-GDAL-Tutorial: Lesen und Schreiben von Vektordaten mit OGR
Warum Open Source verwenden?
Vorteile
Kostenlos, geeignet für Einzelpersonen und kleine Unternehmen
2. Leistungsstarke Entwicklungstools, einfacher zu findende Fehler
3 , Es können sowohl Windows als auch Linux verwendet werden
4.
Nachteile
Kein integrierter Geoprozessor
Nur wenige Leute verwenden es
Open-Source-RS/GIS-Modul
1. OGR-Vektorbibliothek: einfaches Lesen und Schreiben von Vektordaten, ist Teil von GDAL
2. GDAL-Geodatenabstraktionsbibliothek:
a) Lesen und Schreiben von Rasterdaten
b) ArcGIS wird ebenfalls auf Basis der GDAL
c) C++-Bibliothek entwickelt, aber Sie können Python verwenden, um
verwandte Module
1 aufzurufen , denn Rasterdaten sind besonders wichtig
2. NumPy: die nächste Generation von Numeric
Eine leistungsfähigere GIS-Bibliothek http://www.gispython.org/
Bibliothek importieren:
ogr importieren
oder:
von osgeo ogr importieren
Die universelle Methode ist:
versuchen Sie:
von osgeo import ogr
außer:
import ogr
Um einen bestimmten Datentyp zu lesen, müssen Sie zuerst den Datentreiber laden, d. h. Initialisieren Sie ein Objekt und lassen Sie es eine bestimmte Datenstruktur „kennen“.
ogr importieren
driver = ogr.GetDriverByName('ESRI Shapefile')
Die open()-Methode des Datentreibertreibers gibt ein Datenquellenobjekt zurück
open(
wobei update 0 für schreibgeschützt und 1 für beschreibbar ist
Zum Beispiel:
vom Osgeo-Import ogr
driver = ogr.GetDriverByName('ESRI Shapefile')
filename = 'C:/Users/gongwei/Documents/My eBooks/python_and_sage/GDAL python/test/ospy_data1/sites. shp'
dataSource = drivers.Open(filename,0)
wenn dataSource None ist:
print 'konnte nicht geöffnet werden'
sys.exit (1 )
drucke „fertig!“
Beachten Sie, dass der Dateiname ein absoluter Pfad sein muss!
Da absolute Pfade verwendet werden müssen, wird zur Vereinfachung des Codes häufig os.chdir() verwendet
Datenschicht lesen
layer = dataSource.GetLayer( 0)
Im Allgemeinen werden ESRI-Shapefiles mit 0 gefüllt. Wenn nicht ausgefüllt, ist der Standardwert 0.
Sehen Sie sich an, wie viele Punkte es in dieser Datenschicht gibt?
n = layer.GetFeatureCount()
print 'feature count:', n
Lesen Sie die oberen, unteren, linken und rechten Grenzen vor
exctent = layer.GetExtent( )
print 'extent:', excunt
print 'ul:', extent[0], extent[3]
print 'lr :', Ausmaß[1], Ausmaß[2]
Lesen Sie ein bestimmtes Elementmerkmal (kommen Sie endlich zum Punkt), was hier gelesen wird, ist ein Punkt
feat = layer.GetFeature( 41)
fid = feat.GetField('id')
print fid
feat = layer.GetFeature(0)
fid = feat. GetField('id') #sollte eine andere ID sein
print fid
Außerdem können Sie Features der Reihe nach lesen und alle Features durchlaufen
feat = Layer. GetNextFeature() #Read Next
while feat:
feat = layer.GetNextFeature()
later.ResetReading() #Reset
Geometrie extrahieren des Features
geom = feat.GetGeometryRef()
geom.GetX()
geom.GetY()
print geom.
Speicher freigeben
feature.Destroy()
Schließen Sie die Datenquelle, was dem Schließen der Datei im Dateisystembetrieb entspricht
dataSource.Destroy()
Lassen Sie uns nach dem Lesen dieser Anleitung sprechen
Erstellen Sie eine neue Datei
driver.CreateDataSource(
Aber diese Datei darf nicht bereits existieren , andernfalls tritt ein Fehler auf
Neue Ebene erstellen
dataSource.CreateLayer(
Zum Beispiel:
ds2 = drivers.CreateDataSource('test.shp')
layer2 = ds2.CreateLayer('test', geom_type=ogr.wkbPoint)
Um eine SHP-Datei zu löschen
driver.DeleteDataSource('test.shp')
Um ein neues Feld hinzuzufügen, kann es nur in der Ebene hinzugefügt werden und es dürfen keine Daten vorhanden sein
Wenn das hinzugefügte Feld eine Zeichenfolge ist, legen Sie auch die Breite fest
fieldDefn = ogr.FieldDefn('id', ogr.OFTString)
fieldDefn.SetWidth(4)
layer.CreateField(fieldDefn)
Um ein neues Feature hinzuzufügen, müssen Sie zuerst den vorherigen Schritt abschließen und alle Felder hinzufügen
Dann lesen Sie den entsprechenden Feature-Typ aus dem Ebene und erstellen Sie das Feature
featureDefn = layer.GetLayerDefn()
feature = ogr.Feature(featureDefn)
Geometrie festlegen
feature.SetGeometry( point)
Legen Sie den Wert eines Feldes fest
feature.SetField('id', 23)
Schreiben Sie das Feature in die Ebene
layer.CreateFeature (Funktion)
Das Obige ist das Python-GDAL-Tutorial: Verwenden von OGR zum Lesen und Schreiben von Vektordaten. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).