Je construis un script en python en utilisant OGR / GDAL.
J'ai un ensemble de fichiers de formes et un ensemble de fichiers raster GeoTiff.
J'aimerais que mon script ignore les fichiers de formes s'ils ne se croisent pas avec la zone raster.
Le fichier de formes n'est pas un rectangle, donc je ne peux pas simplement comparer les valeurs xmin / xmax, ymin / ymax retournées par layer.GetExtent (). J'ai besoin du polygone réel représentant sa forme globale, puis d'un moyen de déterminer si ce polygone croise le carré raster.
Je pensais que je pouvais en quelque sorte fusionner tous les polygones du fichier de formes en une seule entité, puis lire la géométrie de cette entité, puis comparer ces informations à l'étendue raster. Cependant, je ne sais pas exactement comment exécuter cela.
- Comment extraire des informations de polygone de bordure à partir d'un fichier de formes?
- Comment déterminer si ce polygone coupe une zone carrée donnée?
Réponses:
Le script suivant détermine le cadre de sélection d'un raster et crée en fonction du cadre de sélection une géométrie.
Ensuite, la géométrie du polygone vectoriel est déterminée. Cela répond à votre première question.
Enfin, la géométrie du vecteur et du raster est testée pour l'intersection (renvoie
True
ouFalse
). Cela répond à votre deuxième question.la source
Je trouve la solution @ustroetz très utile mais elle devait être corrigée à deux endroits. Premièrement, pixelHeight = transform [5] est déjà une valeur négative, donc l'équation doit être
Deuxièmement, l'ordre des points dans l'anneau doit être dans le sens inverse des aiguilles d'une montre. J'avais des problèmes avec ça. L'ordre correct est:
la source