Je me demande s'il y a une bibliothèque GIS open source Python qui a des API pour prendre en charge les appels WMS / WFS à partir d'un autre serveur SIG (par exemple, GeoServer), puis enregistrer les données de réponse (WMS Basemap et couche WFS) sous forme d'images.
des recommandations?
merci pour toutes les entrées!
MISE À JOUR :
ce que j'essaie de faire, c'est un service d'impression de cartes, en utilisant OpenLayers comme frontal et Django comme serveur; L'utilisateur client définit l'étendue et les couches, puis envoie la demande d'impression (qui fait référence aux paramètres, c'est-à-dire l'étendue de la carte, les noms des couches) au serveur, puis le serveur reprend cette demande et appelle à nouveau WMS / WFS en utilisant les paramètres de demande, enregistrez la réponse au format PDF, exportez ce lien PDF vers le client.
La partie difficile est que la façon dont le serveur appelle WMS / WFS et combine / superpose ces réponses (c'est-à-dire, assemble ces cartes / couches, puisque WMS est généralement la carte de base, WFS pointe vers les couches d'entités), enfin, enregistrez cet objet combiné comme image.
dans les réponses actuelles, urllib semble bon, mais je ne sais pas comment combiner ces réponses (WMS, WFS) ensemble; OWSLib semble également une autre bonne option, mais cela indique que c'est un outil de programmation client, je suis un peu confus que ce soit approprié pour mon utilisation ...
toute autre entrée supplémentaire ???
apprécier!
la source
Réponses:
Il y a OWSLib qui devrait fournir exactement ce dont vous avez besoin.
Documentation et exemples ici . Dans ce contexte, le client signifie qu'il s'agit d'une application client vers un serveur WMS / WFS - elle peut être exécutée sur un serveur si nécessaire.
Après avoir ajouté plus de détails à votre réponse, il semble que l'application d'impression MapFish correspond exactement à vos besoins. Il s'agit d'une application Java qui peut être intégrée avec OpenLayers et assembler des tuiles, WMS, WFS, etc. et produire un PDF.
Comme il s'agit d'une application en ligne de commande, elle peut être manipulée avec un wrapper Python. Voir les liens suivants pour plus de détails:
http://geographika.co.uk/mapfish-print-module-for-iis
https://github.com/amercader/MapFish-Print-IIS
la source
Vous pouvez utiliser la bibliothèque python urllib pour appeler directement un WMS et écrire la réponse dans un fichier. Il y a un bon exemple d'utilisation d'urllib dans cette réponse . Remplacez simplement l'URL par une pour un WMS, par exemple 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 = image / png .
Vous pouvez également utiliser la bibliothèque GDAL pour accéder à WMS ( http://www.gdal.org/frmt_wms.html ) et la bibliothèque OGR pour accéder à WFS ( http://www.gdal.org/ogr/drv_wfs.html )
Si vous souhaitez créer une image du WFS, vous pouvez utiliser la fonction gdal.RasterizeLayer pour créer un jpg. Il y a un exemple ici .
la source
Voici un exemple simple. Côté serveur:
Et côté client en utilisant jquery:
la source
Vous pouvez utiliser GeoTools pour extraire les données des serveurs WMS / WFS et les rendre dans un objet graphique Java. Ensuite, quelque chose comme iText peut être converti en pdf.
Si vous devez vraiment utiliser Python, je m'attends à ce que vous puissiez utiliser un wrapper pour tout gérer.
la source