Skip to Content

Python - Interrogation d'un service cartographique


python

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

  1. >>> from owslib.wms import WebMapService #(import du module)
  2. >>> wms = WebMapService('http://www.geosignal.org/cgi-bin/wmsmap?', version='1.1.1') #connexion au serveur
  3. >>> wms.identification.title #titre du serveur
  4. 'Serveur Geosignal'
  5.  
  6. >>> list(wms.contents) #liste des cartes servies
  7. ['RASTER25k', 'RASTER500k', 'Communes', 'Arrondissements', 'Regions', 'RASTER250k', 'RASTER1000k', 'RASTER5k', 'Autoroutes', 'RASTER100k', 'Cantons', 'Monde', 'Departementales', 'RASTER4000k', 'CommunesXY', 'RASTER50k', 'Serveur Geosignal', 'Voirie', 'Autres', 'Secondaires', 'Nationales', 'Departements']
  8.  
  9. >>> wms['CommunesXY'].boundingBox #emprise d'une couche
  10. (51000.0, 1622600.0, 1194820.0, 2675140.0, 'EPSG:27582')
  11.  
  12. >>> wms['CommunesXY'].boundingBoxWGS84 #emprise de la couche en WGS84
  13. (-5.4478900000000001, 41.369100000000003, 10.767300000000001, 51.069000000000003)
  14.  
  15. >>> [op.name for op in wms.operations] #requêtes possibles
  16. ['GetCapabilities', 'GetMap', 'GetFeatureInfo', 'DescribeLayer', 'GetLegendGraphic']
  17.  
  18. >>> wms.getOperationByName('GetMap').methods #comment interroger le serveur
  19. {'Post': {'url': 'http://www.geosignal.org/cgi-bin/wmsmap?'}, 'Get': {'url': 'http://www.geosignal.org/cgi-bin/wmsmap?'}}
  20.  
  21. >>> wms.getOperationByName('GetMap').formatOptions #formats possibles des images récupérées
  22. ['image/png', 'image/gif', 'image/png; mode=24bit', 'image/jpeg', 'image/wbmp', 'image/tiff']
  23.  
  24. >>> wms['CommunesXY'].styles #styles éventuels
  25. {} #il n'y en a pas
  26.  
  27. #récupération de la totalité de l'image png de CommunesXY (chaque paramètre est modifiable)
  28. >>> img = wms.getmap( layers=['CommunesXY'],
  29. ... srs='EPSG:27582',
  30. ... bbox=(-51000.0, 1622600.0, 1194820.0, 2675140.0),
  31. ... size=(400, 300),
  32. ... format='image/png',
  33. ... transparent=True)
  34.  
  35. #écriture du fichier sur le disque
  36. >>> communes = open('communesxy.png', 'wb')
  37. >>> communes.write(img.read())
  38. >>> communes.close()

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

Commentaires

Très bon article conne

Très bon article conne d’hab
Merci pour vos articles.

Bonjour Je trouve cet article

Bonjour
Je trouve cet article très riche des informations très utiles et pratiques.
Bravo continuez

Merci pour cet article, comme

Merci pour cet article, comme d’habitude

Poster un nouveau commentaire

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.