Heim  >  Artikel  >  Backend-Entwicklung  >  Python-GDAL-Tutorial: Lesen und Schreiben von Vektordaten mit OGR

Python-GDAL-Tutorial: Lesen und Schreiben von Vektordaten mit OGR

黄舟
黄舟Original
2016-12-24 15:59:553560Durchsuche

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(,CreateLayer(, geom_type=, [srs])

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).


Stellungnahme:
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