.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "gallery/plot_WMS_WFS.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_gallery_plot_WMS_WFS.py: Exploitation des flux WFS et WMS ---------------------------------------------------------------- Dans ce notebook, nous allons exploiter des flux WMS et WFS, comprendre leur contenu et afficher les cartes. Ces deux protocoles sont présentés dans la section :ref:`geoserver`. Nous utilisons les services mis à disposition par le partenariat breton des données géolocalisées sur le site https://cms.geobretagne.fr. Les services proposés sont listés à l'adresse https://cms.geobretagne.fr/services. .. GENERATED FROM PYTHON SOURCE LINES 7-17 .. code-block:: default # sphinx_gallery_thumbnail_number = 1 import io import matplotlib.pyplot as plt import requests import geopandas as gpd from owslib.wms import WebMapService from owslib.wfs import WebFeatureService import json from lxml import etree .. GENERATED FROM PYTHON SOURCE LINES 18-21 Récupération du flux WFS ================================ .. GENERATED FROM PYTHON SOURCE LINES 23-27 Exploration du contenu de la requête GetCapabilities ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ On effectue la requête GetCapabilities qui permet d'accéder aux paramètres du service et aux couches disponibles avec les informations nécessaires pour paramétrer les requêtes. .. GENERATED FROM PYTHON SOURCE LINES 27-31 .. code-block:: default wfs_url="https://ows.region-bretagne.fr/geoserver/rb/wfs?service=wfs&request=getCapabilities" response=requests.get(wfs_url).content .. GENERATED FROM PYTHON SOURCE LINES 32-33 On peut par exemple afficher l'ensemble des opérations réalisables avec ce service. .. GENERATED FROM PYTHON SOURCE LINES 33-53 .. code-block:: default root=etree.fromstring(response) ns={'xsi':"http://www.w3.org/2001/XMLSchema-instance", 'wfs':"http://www.opengis.net/wfs/2.0", 'wps':"http://www.opengis.net/wps/1.0.0", 'ows':"http://www.opengis.net/ows/1.1", 'gml':"http://www.opengis.net/gml/3.2", 'fes':"http://www.opengis.net/fes/2.0", 'xlink':"http://www.w3.org/1999/xlink", 'xs':"http://www.w3.org/2001/XMLSchema", 'inspire_dls':"http://inspire.ec.europa.eu/schemas/inspire_dls/1.0", 'inspire_common':"http://inspire.ec.europa.eu/schemas/common/1.0", 'rb':"http://bretagne.fr/rb", 'schemaLocation':"http://www.opengis.net/wfs/2.0 https://ows.region-bretagne.fr/geoserver/schemas/wfs/2.0/wfs.xsd http://inspire.ec.europa.eu/schemas/inspire_dls/1.0 http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd" } for element in root.findall('.//ows:Operation', ns): print(element.attrib) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none {'name': 'GetCapabilities'} {'name': 'DescribeFeatureType'} {'name': 'GetFeature'} {'name': 'GetPropertyValue'} {'name': 'ListStoredQueries'} {'name': 'DescribeStoredQueries'} {'name': 'CreateStoredQuery'} {'name': 'DropStoredQuery'} .. GENERATED FROM PYTHON SOURCE LINES 54-55 On peut aussi afficher le nom des couches disponibles .. GENERATED FROM PYTHON SOURCE LINES 55-62 .. code-block:: default root=etree.fromstring(response) features=[] for name in root.iter('{http://www.opengis.net/wfs/2.0}Name'): features.append(name.text) print(features[0:4]) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none ['rb:batiment_region_accessibilite', 'rb:site_region_accessibilite', 'rb:aire_urbaine', 'rb:aire_retournement_vn'] .. GENERATED FROM PYTHON SOURCE LINES 63-66 Récupération des données de la couche relative aux aires urbaines ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. GENERATED FROM PYTHON SOURCE LINES 68-69 Méthode 1 : on peut les récupérer directement si on connaît la formulation de la requête .. GENERATED FROM PYTHON SOURCE LINES 69-72 .. code-block:: default wfs_url="https://ows.region-bretagne.fr/geoserver/rb/wfs?service=wfs&version=2.0.0&request=GetFeature&typeName=rb:aire_urbaine&outputFormat=json" .. GENERATED FROM PYTHON SOURCE LINES 73-74 On affiche les premières observations de la base de données .. GENERATED FROM PYTHON SOURCE LINES 74-76 .. code-block:: default gpd.read_file(wfs_url).head(2) .. raw:: html
id aiu_code aiu_nom aiu_tau aiu_cat aiu_typologie geometry
0 1 000 Communes isolées hors influence des pôles 00 400 Communes isolées hors influence des pôles MULTIPOLYGON Z (((229137.256 6848858.127 0.000...
1 2 011 Rennes 09 112 Aire urbaine MULTIPOLYGON Z (((336889.814 6826047.064 0.000...


.. GENERATED FROM PYTHON SOURCE LINES 77-78 On affiche la carte diffusée par le flux WFS .. GENERATED FROM PYTHON SOURCE LINES 78-81 .. code-block:: default ax=gpd.read_file(wfs_url).plot() .. image:: /gallery/images/sphx_glr_plot_WMS_WFS_001.png :alt: plot WMS WFS :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 82-83 Méthode 2 : on peut les récupérer à partir du package owslib .. GENERATED FROM PYTHON SOURCE LINES 85-86 On indique l'URL du service .. GENERATED FROM PYTHON SOURCE LINES 86-88 .. code-block:: default url = "https://ows.region-bretagne.fr/geoserver/rb/wfs" .. GENERATED FROM PYTHON SOURCE LINES 89-90 On initialise .. GENERATED FROM PYTHON SOURCE LINES 90-92 .. code-block:: default wfs = WebFeatureService(url=url) .. GENERATED FROM PYTHON SOURCE LINES 93-94 On peut afficher le nom des couches disponibles .. GENERATED FROM PYTHON SOURCE LINES 94-96 .. code-block:: default print(list(wfs.contents)[0:4]) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none ['rb:batiment_region_accessibilite', 'rb:site_region_accessibilite', 'rb:aire_urbaine', 'rb:aire_retournement_vn'] .. GENERATED FROM PYTHON SOURCE LINES 97-98 On précise la couche souhaitée .. GENERATED FROM PYTHON SOURCE LINES 98-100 .. code-block:: default layer='rb:aire_urbaine' .. GENERATED FROM PYTHON SOURCE LINES 101-102 On effectue la requête pour récupérer les données .. GENERATED FROM PYTHON SOURCE LINES 102-106 .. code-block:: default params = dict(service='WFS', version="1.0.0", request='GetFeature', typeName=layer, outputFormat='json') q = requests.Request('GET', url, params=params).prepare().url .. GENERATED FROM PYTHON SOURCE LINES 107-108 On met en forme les données et affiche les deux premières observations .. GENERATED FROM PYTHON SOURCE LINES 108-112 .. code-block:: default data = gpd.read_file(q) data.head(2) .. raw:: html
id aiu_code aiu_nom aiu_tau aiu_cat aiu_typologie geometry
0 1 000 Communes isolées hors influence des pôles 00 400 Communes isolées hors influence des pôles MULTIPOLYGON Z (((229137.256 6848858.127 0.000...
1 2 011 Rennes 09 112 Aire urbaine MULTIPOLYGON Z (((336889.814 6826047.064 0.000...


.. GENERATED FROM PYTHON SOURCE LINES 113-116 Récupération et exploitation du flux WMS ================================ .. GENERATED FROM PYTHON SOURCE LINES 118-122 Affichage de la carte diffusée relative à la couche de la localisation des cœurs d'habitat (ou réservoirs de biodiversité) du campagnol amphibie en Bretagne et Loire-Atlantique continentales. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Méthode 1 : on peut récupérer directement l'image si on connaît la formulation de la requête avec la requête GetMap puis l'afficher .. GENERATED FROM PYTHON SOURCE LINES 122-129 .. code-block:: default wfs_url="https://geobretagne.fr/geoserver/gmb/wms?request=GetMap&format=image/png&width=600&height=600&layers=campagnol_amphibie&bbox=124702.3554,6651480.7257,403802.3554,6881080.7257&CRS=EPSG:2154" response=requests.get(wfs_url).content img=plt.imread(io.BytesIO(response)) ax=plt.imshow(img) .. image:: /gallery/images/sphx_glr_plot_WMS_WFS_002.png :alt: plot WMS WFS :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 130-131 Méthode 2 : on peut la récupérer à partir du package owslib .. GENERATED FROM PYTHON SOURCE LINES 131-146 .. code-block:: default wms = WebMapService('https://geobretagne.fr/geoserver/gmb/wms') name = 'campagnol_amphibie' layer = wms.contents[name] response = wms.getmap(layers=[name,], bbox=layer.boundingBox[0:4], # Left, bottom, right, top format='image/png', size=(600,600), srs=layer.boundingBox[4], time=layer.timepositions, transparent=True) img=plt.imread(io.BytesIO(response.read())) ax=plt.imshow(img) .. image:: /gallery/images/sphx_glr_plot_WMS_WFS_003.png :alt: plot WMS WFS :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 1 minutes 4.718 seconds) .. _sphx_glr_download_gallery_plot_WMS_WFS.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_WMS_WFS.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_WMS_WFS.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_