Le PortailSIG est issu d'une volonté de vous informer sur l'actualités des Systèmes d'Information Géographique, mais également de mettre en commun des ressources s'y rapportant, aussi diverses que des articles, des tutoriaux, des FAQs, des scripts et documents téléchargeables et d'autres fonctionnalités que nous essaierons de vous apporter au cours des évolutions de cette version 2 du PortailSIG.
Python - Interrogation d'un service cartographique
![]()
Un premier petit exemple avec le module http://pypi.python.org/pypi/OWSLib/0.3.1 , utilisé, entre autres, par Quantum Gis. Il permet de récupérer toutes les caractéristiques et les images d'un serveur WMS.
Me basant sur les exemples donnés, je vais interroger le service cartographique de geosignal (voir http://geotribu.net/node/59)
python
>>> from owslib.wms import WebMapService #(import du module) >>> wms = WebMapService('http://www.geosignal.org/cgi-bin/wmsmap?', version='1.1.1') #connexion au serveur >>> wms.identification.title #titre du serveur 'Serveur Geosignal' >>> list(wms.contents) #liste des cartes servies ['RASTER25k', 'RASTER500k', 'Communes', 'Arrondissements', 'Regions', 'RASTER250k', 'RASTER1000k', 'RASTER5k', 'Autoroutes', 'RASTER100k', 'Cantons', 'Monde', 'Departementales', 'RASTER4000k', 'CommunesXY', 'RASTER50k', 'Serveur Geosignal', 'Voirie', 'Autres', 'Secondaires', 'Nationales', 'Departements'] >>> wms['CommunesXY'].boundingBox #emprise d'une couche (51000.0, 1622600.0, 1194820.0, 2675140.0, 'EPSG:27582') >>> wms['CommunesXY'].boundingBoxWGS84 #emprise de la couche en WGS84 (-5.4478900000000001, 41.369100000000003, 10.767300000000001, 51.069000000000003) >>> [op.name for op in wms.operations] #requêtes possibles ['GetCapabilities', 'GetMap', 'GetFeatureInfo', 'DescribeLayer', 'GetLegendGraphic'] >>> wms.getOperationByName('GetMap').methods #comment interroger le serveur {'Post': {'url': 'http://www.geosignal.org/cgi-bin/wmsmap?'}, 'Get': {'url': 'http://www.geosignal.org/cgi-bin/wmsmap?'}} >>> wms.getOperationByName('GetMap').formatOptions #formats possibles des images récupérées ['image/png', 'image/gif', 'image/png; mode=24bit', 'image/jpeg', 'image/wbmp', 'image/tiff'] >>> wms['CommunesXY'].styles #styles éventuels {} #il n'y en a pas #récupération de la totalité de l'image png de CommunesXY (chaque paramètre est modifiable) >>> img = wms.getmap( layers=['CommunesXY'], ... srs='EPSG:27582', ... bbox=(-51000.0, 1622600.0, 1194820.0, 2675140.0), ... size=(400, 300), ... format='image/png', ... transparent=True) #écriture du fichier sur le disque >>> communes = open('communesxy.png', 'wb') >>> communes.write(img.read()) >>> communes.close()
- Ajouter un commentaire
- 265 lectures
En pratique le module est un parseur du fichier xml renvoyé par la requête :
http://www.geosignal.org/cgi-bin/wmsmap?service=WMS&version=1.1.1&request=GetCapabilities
mais c'est bien plus facile de le déchiffrer...., avant d'utiliser openlayers, par exemple.
Site officiel :
python - 1264 lectures
Commentaires
Poster un nouveau commentaire