Estoy construyendo un script en python usando OGR / GDAL.
Tengo un conjunto de archivos de forma y un conjunto de archivos ráster GeoTiff.
Me gustaría que mi script ignore los archivos de forma si no se cruzan con el área de la trama.
El shapefile no es un rectángulo, por lo que no puedo simplemente comparar los valores xmin / xmax, ymin / ymax devueltos por layer.GetExtent (). Necesito que el polígono real represente su forma general, y luego alguna forma de determinar si ese polígono se cruza con el cuadrado ráster.
Estaba pensando que de alguna manera podría fusionar todos los polígonos en el archivo de forma en una entidad, y luego leer la geometría de esa entidad, y luego comparar esa información con la extensión ráster. Sin embargo, no estoy seguro de cómo ejecutar esto específicamente.
- ¿Cómo extraer información de polígono de borde del archivo shape?
- ¿Cómo determinar si ese polígono se cruza con un área cuadrada dada?
Respuestas:
El siguiente script determina el cuadro delimitador de un ráster y crea una geometría basada en el cuadro delimitador.
A continuación, se determina la geometría del polígono vectorial. Esto responde a tu primera pregunta.
Por último, se prueba la intersección de la geometría del vector y el ráster (retornos
True
oFalse
). Esto responde a tu segunda pregunta.fuente
Encuentro la solución @ustroetz muy útil, pero necesitaba corregirse en dos lugares. En primer lugar, pixelHeight = transform [5] ya es un valor negativo, por lo que la ecuación debería ser
En segundo lugar, el orden de los puntos en el anillo debe ser en sentido antihorario. Estaba teniendo problemas con eso. El orden correcto es:
fuente