Me pregunto si hay una biblioteca GIS de código abierto de Python que tiene API para admitir llamadas WMS / WFS desde otro servidor SIG (por ejemplo, GeoServer) y luego guardar los datos de respuesta (mapa base WMS y capa WFS) como imágenes.
¿alguna recomendación?
gracias por cualquier entrada!
ACTUALIZACIÓN :
lo que intento hacer es un servicio de impresión de mapas, usando OpenLayers como front-end y Django como servidor; El usuario del cliente establece la extensión y las capas y luego envía la solicitud de impresión (que se refiere a los parámetros, es decir, la extensión del mapa, los nombres de las capas) al servidor, luego el servidor se hace cargo de esta solicitud y vuelve a llamar a WMS / WFS utilizando los parámetros de solicitud, guardar la respuesta como PDF, exporte este enlace PDF al cliente.
La parte difícil es que la forma en que el servidor llama a WMS / WFS y combina / superpone estas respuestas juntas (es decir, combina estos mapas / capas, ya que WMS suele ser el mapa base, WFS apunta a las capas de entidades), finalmente guarda este objeto combinado como imagen.
en las respuestas actuales, urllib parece una buena, pero no estoy seguro de cómo combinar estas respuestas (WMS, WFS) juntas; OWSLib también parece otra buena opción, pero indica que es una herramienta de programación del cliente, estoy un poco confundido sobre si es apropiado para mi uso ...
¿Alguna otra entrada adicional?
¡apreciar!
fuente
Respuestas:
Hay OWSLib que debe proporcionar exactamente lo que necesita.
Documentación y ejemplos aquí . Cliente en este contexto significa que es una aplicación cliente para un servidor WMS / WFS; se puede ejecutar en un servidor si es necesario.
Después de agregar más detalles a su respuesta, parece que la aplicación de impresión MapFish se adapta exactamente a sus necesidades. Es una aplicación Java que se puede integrar con OpenLayers y unir mosaicos, WMS, WFS, etc. y produce un PDF.
Como es una aplicación de línea de comandos, puede manipularse con un contenedor Python. Vea los siguientes enlaces para más detalles:
http://geographika.co.uk/mapfish-print-module-for-iis
https://github.com/amercader/MapFish-Print-IIS
fuente
Puede usar la biblioteca urllib de python para llamar a un WMS directamente y escribir la respuesta en un archivo. Hay un ejemplo decente de usar urllib en esta respuesta . Simplemente reemplace la URL con una para un WMS, por ejemplo, http: //some.wms.service? Request = GetMap & VERSION = 1.1.1 & BBOX = 141.00, -29.00,141.80, -28.40 & SRS = EPSG: 4326 & LAYERS = LANDSAT_MOSAIC & WIDTH = 800 & HEIGHT = 600 & FORMAT = imagen / png .
También puede usar la biblioteca GDAL para acceder a WMS ( http://www.gdal.org/frmt_wms.html ) y la biblioteca OGR para acceder a WFS ( http://www.gdal.org/ogr/drv_wfs.html )
Si desea crear una imagen de WFS, puede usar la función gdal.RasterizeLayer para crear un jpg. Hay un ejemplo aquí .
fuente
Aquí hay un ejemplo simple. En el lado del servidor:
Y en el lado del cliente usando jquery:
fuente
Puede usar GeoTools para obtener los datos de los servidores WMS / WFS y procesarlos en un objeto gráfico Java. Entonces algo como iText puede convertir a un pdf.
Si realmente tiene que usar Python, espero que pueda usar un contenedor para administrarlo todo.
fuente