Das Layer-Objekt verfügt über eine Methode namens SetAttributeFilter(
>>> 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(
in der Ebene ausgewählt. Es gibt auch SetSpatialFilterRect(
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(
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(
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
bar 6Wasser 2Intersect 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:
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)!