tutoriel python gdal : filtres, analyse spatiale simple, fonctions et modules

黄舟
Libérer: 2016-12-24 17:05:28
original
2554 Les gens l'ont consulté

L'objet Layer possède une méthode appelée SetAttributeFilter() qui peut filtrer les fonctionnalités de la couche qui remplissent certaines conditions. Après avoir défini le filtre, vous pouvez utiliser la méthode GetNextFeature() pour récupérer séquentiellement les fonctionnalités qui remplissent les conditions. SetAttributeFilter(None) peut effacer un filtre. Par exemple

>>> 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(), qui filtre un certain type de fonctionnalité. Par exemple, remplir Polygon dans le paramètre consiste à sélectionner tous les Polygon

dans la couche. ;, < miny>, , ), entrez quatre coordonnées comme paramètres et vous pouvez sélectionner Feature

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(), Grâce aux fonctions puissantes de SQL, vous pouvez effectuer des tâches plus complexes. Par exemple, le code suivant sélectionne les fonctionnalités dont le type de couverture est herbe et les trie par ordre décroissant par numéro d'identification.

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() consiste à publier les résultats de la requête . Il doit être libéré avant d'exécuter la prochaine instruction SQL.

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 :

.Buffer () Ajouter un tampon à une géométrie signifie transformer la ligne de points en polygone et la rendre plus épaisse

.Equal() Les deux géométries sont-elles égales ?

.Distance() Renvoie la distance la plus courte entre deux géométries

.GetEnvelope() Enveloppe, intéressante, utilise en fait une méthode Frame this géométrique façonner et renvoyer les coordonnées des quatre coins (minx, maxx, miny, maxy)

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


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal