¿Cómo genero imágenes en miniatura de muchos shapefiles?


9

Recientemente, un colega y yo lanzamos un proyecto de código abierto llamado Mapoteca, que es un conjunto de secuencias de comandos Python que se integra con una instalación GDAL / FWTools que permite un recorrido completo de directorios en busca de datos espaciales y extensión de extracción, geometría, número de elementos, proyección y el usuario lo escribe en un archivo csv. Estamos trabajando en la parte que describe los archivos DBF asociados y queríamos generar una imagen en miniatura de cada archivo de forma, ¿conoce alguna forma de generar estas miniaturas en jpeg o png usando Python?

Respuestas:




2

La forma más sencilla sería llamar a gdal_rasterize usando subprocess.call (), pero sospecho que no hace ninguna interpolación, por lo que se alias hasta el punto de ilegibilidad si genera una imagen en miniatura directamente desde los datos. Por lo tanto, debe generar una imagen temporal de "tamaño razonable" * y utilizar la biblioteca de imágenes de Python para escalarla al tamaño que desee.

Pero espero que el mayor problema sea ¿en qué atributo (s) basará su estilo? Los archivos de forma no tienen información de visualización inherente, estoy seguro de que lo sabe, por lo que deberá encontrar una manera de decidir qué colores usar. gdal_rasterize le brinda la capacidad de hacer esto, pero la elección normalmente se basa en el conocimiento específico del dominio. Para tener una herramienta genérica, tendrá que tener un esquema de estilo genérico.

* Esto también es algo para lo que puede que tenga que hacer algunas reglas codificadas. Quizás comience con un tamaño de píxel ideal (digamos 10 m por píxel) y aumente eso si la imagen resultante es demasiado grande para ser práctica.



1

Solo en aras de la exhaustividad: el servidor de mapas también puede generar mapas atractivos desde un rango de datos base, en la línea de comandos utilizando la utilidad shp2img . Una vez más, deberá elegir un estilo muy genérico y muy simple que se ajuste a sus propósitos.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.