L'objet Layer possède une méthode appelée SetAttributeFilter(
>>> layer.GetFeatureCount()
42
>>> layer.SetAttributeFilter("cover = 'shrubs'")
>>> layer.GetFeatureCount()
6
>>> layer.SetAttributeFilter(Aucun)
> > ;> layer.GetFeatureCount()
42
Filtres spatiaux Il existe deux types de filtres spatiaux
. L'un est SetSpatialFilter(
dans la couche. ;, < miny>,
SetSpatialFilter(None) dans la case pour effacer le filtre d'attribut spatial.
Par exemple, dans le code suivant, layerAreas est un polygone et layerSites est un point
>>> featAreas = layerAreas.GetNextFeature()
>> > poly = featAreas.GetGeometryRef()
>>> layerSites.GetFeatureCount()
42
>>> )
>>> layerSites.GetFeatureCount()
4
>>> ; layerSites.SetSpatialFilter (Aucun)
>>> layerSites.GetFeatureCount()
42
Il existe également des filtres plus complexes, tels que l'exécution d'instructions de requête SQL ExecuteSQL(
result = dsSites.ExecuteSQL("select * from sites which 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
La dernière phrase ReleaseResultSet(
L'exemple suivant compte le nombre de toutes les fonctionnalités dont la couverture est en herbe
>>> result = dsSites.ExecuteSQL("select count(*) from sites which cover = ' grass '")
>>> result.GetFeatureCount()
11
>>> result.GetFeature(0).GetField(0 )
11
>>> dsSites.ReleaseResultSet(result)
Liste tous les différents types de couverture
result = ds.ExecuteSQL ("select couverture distincte des sites")
resultFeat = result.GetNextFeature()
while resultFeat:
print resultFeat.GetField(0)
resultFeat = result .GetNextFeature()
ds.ReleaseResultSet(result)
arbustes
arbres
rochers
herbe
nue
Eau
Comptez le nombre de fonctionnalités disponibles pour chaque type de couverture
coverLayer = ds.ExecuteSQL('select distinct cover from sites')
coverFeat = coverLayer.GetNextFeature()
while coverFeat:
cntLayer = ds.ExecuteSQL("select count(*) from sites which cover = ' " coverFeat.GetField(0) " ' " )
imprimer coverFeat.GetField(0) ' ' imprimer coverFeat.GetField(0) ' ' cntLayer.GetFeature(0).GetFieldAsString(0)
ds.ReleaseResultSet(cntLayer )
coverFeat = coverLayer.GetNextFeature()
ds.ReleaseResultSet(coverLayer)
arbustes 6
arbres 11
rochers 6
herbe 11
nue 6
eau 2
Intersect détermine si deux éléments se croisent
poly2.Intersect(poly1)
Renvoie 0 pour disjoint et 1 pour intersection
Disjoint détermine si deux éléments sont disjoints
poly2.Disjoint(poly1)
Retour 1 signifie disjoint, retour 0 signifie intersection, juste à l'opposé de Intersect
Touch signifie adjacent (bord)
poly2.Touches(poly1)
Retour 0 signifie non bord, retourner 1 signifie frotter le bord
Croix croisée, généralement une ligne passe par un polygone
poly2.Crosses(line)
Retour 0 signifie ne pas passer par, renvoyer 1 signifie passer par
À l'intérieur, un élément est complètement entouré par un autre élément
ptB.Within(poly1)
Renvoyer 0 signifie que le point est à l'extérieur du polygone et 1 est renvoyé pour indiquer que le point est dans le polygone.
Contient contient, ce qui est l'opposé de
poly1.Contains(ptB)
consiste à combiner le principal. objet appelant et paramètres. Modifiez-le
Chevauchements, il semble que seuls deux polygones peuvent se chevaucher
poly2.Overlaps(poly3)
Renvoyer 0 signifie qu'il n'y a pas de chevauchement, renvoyer 1. signifie chevauchement
Jetons un coup d'œil au géotraitement simple du traitement des données géographiques
Polygonal :
Intersection : poly3.Intersection(poly2)
Union : poly3. Union(poly2 )
Différence : poly3.Difference(poly2)
Supplément : poly3.SymmetricDifference(poly2)
géométrie :
La fonction, l'exception et le module de Python peuvent être trouvés dans n'importe quel manuel Python et ne seront pas mentionnés ici. détails
Ce qui précède est le tutoriel python gdal : filtres, analyse spatiale simple, fonctions et modules. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !