Python GDAL-Tutorial: Filter, einfache räumliche Analyse, Funktionen und Module

黄舟
Freigeben: 2016-12-24 17:05:28
Original
2556 Leute haben es durchsucht

Das Layer-Objekt verfügt über eine Methode namens SetAttributeFilter(), die Features im Layer herausfiltern kann, die bestimmte Bedingungen erfüllen. Nachdem Sie den Filter festgelegt haben, können Sie die Methode GetNextFeature() verwenden, um nacheinander Features abzurufen, die die Bedingungen erfüllen. SetAttributeFilter(None) kann einen Filter löschen. Zum Beispiel

>>> Layer.GetFeatureCount()

42

>>> Layer.SetAttributeFilter("cover = 'shrubs'")

>>>layer.GetFeatureCount()

6

>>>layer.SetAttributeFilter(None)

> > ;> layer.GetFeatureCount()

42

Räumliche Filter Es gibt zwei Arten von räumlichen Filtern

. Eine davon ist SetSpatialFilter(), das einen bestimmten Feature-Typ filtert. Wenn Sie beispielsweise Polygon in den Parameter eingeben, werden alle Polygon

in der Ebene ausgewählt. Es gibt auch SetSpatialFilterRect(, , , ), geben Sie vier Koordinaten als Parameter ein und Sie können Feature

SetSpatialFilter(None) im Feld auswählen, um den räumlichen Attributfilter zu löschen.

Im folgenden Code ist beispielsweise „layerAreas“ ein Polygon und „layerSites“ ein Punkt

>>> >poly = featAreas.GetGeometryRef()

>>>layerSites.GetFeatureCount()

42

>>>layerSites.SetSpatialFilter(poly ). ; (Keine)

>>> layerSites.GetFeatureCount()

42

Es gibt auch komplexere Filter, wie zum Beispiel das Ausführen der SQL-Abfrageanweisung ExecuteSQL( ) Mit den leistungsstarken Funktionen von SQL können Sie komplexere Aufgaben ausführen. Der folgende Code wählt beispielsweise Features aus, deren Abdeckungstyp Gras ist, und sortiert sie in absteigender Reihenfolge nach ID-Nummer.

result = dsSites.ExecuteSQL("select * from sites where cover = 'grass' order by id desc")

resultFeat = result.GetNextFeature()

while resultFeat :

print resultFeat.GetField('id')print resultFeat.GetField('id')

resultFeat = result.GetNextFeature()

dsSites.ReleaseResultSet(result)

42

40

:

4

Der letzte Satz ReleaseResultSet() dient dazu, die Abfrageergebnisse freizugeben . Es muss vor der Ausführung der nächsten SQL-Anweisung freigegeben werden.

Das folgende Beispiel zählt die Anzahl aller Features, deren Abdeckung Gras ist

>>> result = dsSites.ExecuteSQL("select count(*) from sites where cover = ' grass '")

>>> result.GetFeatureCount()

11

>>> result.GetFeature(0).GetField(0 )

11

>>> dsSites.ReleaseResultSet(result)

Alle verschiedenen Covertypen auflisten

result = ds.ExecuteSQL ("select eindeutiges Cover von Websites")

resultFeat = result.GetNextFeature()

while resultFeat:

print resultFeat.GetField(0)

resultFeat = result .GetNextFeature()

ds.ReleaseResultSet(result)

Sträucher

Bäume

Felsen

Gras

bare

Wasser

Zählen Sie, wie viele Features es für jeden Cover-Typ gibt

coverLayer = ds.ExecuteSQL('wählen Sie ein bestimmtes Cover aus Websites aus')

coverFeat = coverLayer.GetNextFeature()

while coverFeat:

cntLayer = ds.ExecuteSQL("select count(*) from sites where cover = ' " + coverFeat.GetField(0 ) + " ' ")

print coverFeat.GetField(0) + ' ' +print coverFeat.GetField(0) + ' ' + cntLayer.GetFeature(0).GetFieldAsString(0)

Ds. releaseResultSet (cntlayer)

Coverfeat = Coverlayer.GetNextfeature ()

Ds.releaseResultSet (Coverlayer) Rees 11

rocks 6

grass 11

bar 6

Wasser 2

Intersect bestimmt, ob sich zwei Elemente schneiden

poly2.Intersect(poly1)

Gibt 0 für disjunkt und 1 für Schnittpunkt zurück

Disjunkt bestimmt, ob zwei Elemente disjunkt sind
poly2.Disjoint(poly1)

Return 1 bedeutet disjunkt, Return 0 bedeutet Schnittpunkt, genau das Gegenteil von Intersect

Touch bedeutet angrenzend (Kante)

poly2.Touches(poly1)

Return 0 bedeutet nein Kante, 1 zurückgeben bedeutet Kante reiben

Kreuzungen kreuzen, normalerweise verläuft eine Linie durch ein Polygon

poly2.Crosses(line)

0 zurückgeben bedeutet, dass es nicht durchgeht und 1 zurückgibt bedeutet Durchgang

Innerhalb ist ein Element vollständig von einem anderen Element umgeben

ptB.Within(poly1)

Die Rückgabe von 0 bedeutet, dass der Punkt außerhalb des Polygons liegt und 1 zurückgegeben, um anzuzeigen, dass sich der Punkt innerhalb des Polygons befindet.

Contains enthält, was das Gegenteil von Within ist Aufrufobjekt und Parameter. Ändern Sie es.

Überlappungen, es scheint, dass sich nur zwei Polygone überlappen können

poly2.Overlaps(poly3)

Rückgabe 0 bedeutet keine Überlappung, Rückgabe 1 bedeutet Überlappung

Werfen wir einen Blick auf die einfache Geoverarbeitung der geografischen Datenverarbeitung

Polygonal:

Schnittpunkt: poly3.Intersection(poly2)

Union: poly3. Union(poly2)

Differenz: poly3.Difference(poly2)

Ergänzung: poly3.SymmetricDifference(poly2)

Geometrie:

.Buffer () Das Hinzufügen eines Puffers zu einer Geometrie bedeutet, die Punktlinie in ein Polygon umzuwandeln und sie dicker zu machen

.Equal() Sind die beiden Geometrien gleich?

.Distance() Gibt den kürzesten Abstand zwischen zwei Geometrien zurück

.GetEnvelope() Der Umschlag verwendet interessanterweise tatsächlich eine Methode. Rahmen Sie diese Geometrie ein Formen und geben Sie die Koordinaten der vier Ecken zurück (minx, maxx, miny, maxy)

Pythons Funktionsfunktion, Ausnahmeausnahme und Modulmodul sind in jedem Python-Lehrbuch zu finden und werden hier nicht mehr erwähnt Details

Das Obige ist das Python-GDAL-Tutorial: Filter, einfache räumliche Analyse, Funktionen und Module. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage