IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IGN API Géoportail Discussion :

obtenir une liste de parcelles à partir d'un ou plusieurs polygones et le filtre intersects


Sujet :

IGN API Géoportail

  1. #1
    Membre du Club
    Homme Profil pro
    Archéologue
    Inscrit en
    Novembre 2017
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Archéologue

    Informations forums :
    Inscription : Novembre 2017
    Messages : 67
    Points : 57
    Points
    57
    Par défaut obtenir une liste de parcelles à partir d'un ou plusieurs polygones et le filtre intersects
    Bonjour,
    Dans une interface montée à partir d'openlayers 4.4,
    j'essaie à partir d'un ou plusieurs polygones d'obtenir une liste des parcelles avec n° insee, nom communes, commune absorbée, section et numero (pas besoin des géométries)
    mais je ne sais comment faire.
    j'ai tenté de rajouter un filtre dans l'url pour interroger le wfs mais la réponse est longue et j'obtiens 1000 parcelles (au lieu des 4 supoosées) et je suppose que la longueur de l'url est limitée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     fetch('https://wxs.ign.fr/cle/geoportail/wfs?request=GetCapabilities&SERVICE=WFS&VERSION=2.0.0&request=GetFeature&typename=BDPARCELLAIRE-VECTEUR_WLD_BDD_WGS84G:parcelle&outputFormat=application/json&<Filter xmlns="http://www.opengis.net/fes/2.0"><Intersects><ValueReference>the_geom</ValueReference><MultiSurface srsName="EPSG:4326"><surfaceMember><Polygon srsName="EPSG:4326"><exterior><LinearRing srsName="EPSG:4326"><posList srsDimension="2">3.3806484170587487,45.82325568712767 3.381347523823933,45.82329470652596 3.3813178008007956,45.82302538901595 3.380759901325698,45.82301791233695 3.3806484170587487,45.82325568712767</posList></LinearRing></exterior></Polygon></surfaceMember></MultiSurface> </Intersects></Filter>', {
            method: 'POST',
          }).then(function(response) {
            return response.json();
          }).then(function(json) {
            var features = new ol.format.GeoJSON().readFeatures(json);
    		console.log('features--------------------------------------------------',features)
          });

  2. #2
    Membre régulier
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2019
    Messages : 35
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    Pour la requête WFS en POST, l'URL est: https://wxs.ign.fr/cle/geoportail/wfs uniquement.
    Il faut fournir les paramètres de la requête dans le body, au format xml.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <wfs:GetFeature
      service="WFS"
      version="2.0.0"
      outputFormat="JSON"
      resultType="results"
      xmlns:wfs="http://www.opengis.net/wfs/2.0"
      xmlns:fes="http://www.opengis.net/fes/2.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:gml="http://www.opengis.net/gml/3.2"
      xsi:schemaLocation="http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0.0/wfs.xsd">
      <wfs:Query typeNames="BDPARCELLAIRE-VECTEUR_WLD_BDD_WGS84G:parcelle" srsName="EPSG:4326">
        <Filter xmlns="http://www.opengis.net/fes/2.0">
          <Intersects>
            <ValueReference>the_geom</ValueReference>
            <gml:MultiSurface srsName="EPSG:4326">
              <gml:surfaceMember>
                <gml:Polygon srsName="EPSG:4326">
                  <gml:exterior>
                    <gml:LinearRing srsName="EPSG:4326">
                      <gml:posList srsDimension="2">3.3806484170587487 45.82325568712767 3.381347523823933 45.82329470652596 3.3813178008007956 45.82302538901595 3.380759901325698 45.82301791233695 3.3806484170587487 45.82325568712767</gml:posList>
                    </gml:LinearRing>
                  </gml:exterior>
                </gml:Polygon>
              </gml:surfaceMember>
            </gml:MultiSurface>
          </Intersects>
        </Filter>
      </wfs:Query>
    </wfs:GetFeature>
    A noter, les paires longitudes/latitude sont séparées par un espace, mais entre les deux coordonnées, c'est aussi un espace.

    Pour vous aider, je vous met un snippet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    fetch('https://wxs.ign.fr/cle/geoportail/wfs', {
        method: 'POST',
        headers: {
          'Content-Type': 'application/xml'
        },
        body: '<wfs:GetFeature \
                      	service="WFS"\
                      	version="2.0.0"\
                      	outputFormat="JSON"\
                      	resultType="results"\
                      	xmlns:wfs="http://www.opengis.net/wfs/2.0"\
                      	xmlns:fes="http://www.opengis.net/fes/2.0"\
                      	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\
                      	xmlns:gml="http://www.opengis.net/gml/3.2"\
                      	xsi:schemaLocation="http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0.0/wfs.xsd">\
                          <wfs:Query typeNames="BDPARCELLAIRE-VECTEUR_WLD_BDD_WGS84G:parcelle" srsName="EPSG:4326">\
                              <Filter xmlns="http://www.opengis.net/fes/2.0">\
                                  <Intersects>\
                                      <ValueReference>the_geom</ValueReference>\
                                      <gml:MultiSurface srsName="EPSG:4326">\
                                          <gml:surfaceMember>\
                                              <gml:Polygon srsName="EPSG:4326">\
                                                  <gml:exterior>\
                                                      <gml:LinearRing srsName="EPSG:4326">\
                                                          <gml:posList srsDimension="2">' + c + '</gml:posList>\
                                                      </gml:LinearRing>\
                                                  </gml:exterior>\
                                              </gml:Polygon>\
                                          </gml:surfaceMember>\
                                      </gml:MultiSurface>\
                                  </Intersects>\
                              </Filter>\
                          </wfs:Query>\
                      </wfs:GetFeature>'
      }).then(function(response) {
         //  votre code ici
    }
    Cordialement

  3. #3
    Membre du Club
    Homme Profil pro
    Archéologue
    Inscrit en
    Novembre 2017
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Archéologue

    Informations forums :
    Inscription : Novembre 2017
    Messages : 67
    Points : 57
    Points
    57
    Par défaut
    hello
    merci pour la suggestion
    voici le code passé sans résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    fetch('https://wxs.ign.fr/cle/geoportail/wfs', {
        method: 'POST',
        headers: {
          'Content-Type': 'application/xml'
        },
        body: '<wfs:GetFeature \
                      	service="WFS"\
                      	version="2.0.0"\
                      	outputFormat="JSON"\
                      	resultType="results"\
                      	xmlns:wfs="http://www.opengis.net/wfs/2.0"\
                      	xmlns:fes="http://www.opengis.net/fes/2.0"\
                      	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\
                      	xmlns:gml="http://www.opengis.net/gml/3.2"\
                      	xsi:schemaLocation="http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0.0/wfs.xsd">\
                          <wfs:Query typeNames="BDPARCELLAIRE-VECTEUR_WLD_BDD_WGS84G:parcelle" srsName="EPSG:4326">\
                              <Filter xmlns="http://www.opengis.net/fes/2.0">\
                                  <Intersects>\
                                      <ValueReference>the_geom</ValueReference>\
                                      <gml:MultiSurface srsName="EPSG:4326">\
                                          <gml:surfaceMember>\
                                              <gml:Polygon srsName="EPSG:4326">\
                                                  <gml:exterior>\
                                                      <gml:LinearRing srsName="EPSG:4326">\
                                                          <gml:posList srsDimension="2">43.84437538633691 4.359930797497837 43.84475841083611 4.359785958211033 43.844599784826755 4.359147592465488 43.844267055729375 4.359458728711216 43.84437538633691 4.359930797497837</gml:posList>\
                                                      </gml:LinearRing>\
                                                  </gml:exterior>\
                                              </gml:Polygon>\
                                          </gml:surfaceMember>\
                                      </gml:MultiSurface>\
                                  </Intersects>\
                              </Filter>\
                          </wfs:Query>\
                      </wfs:GetFeature>'
      }).then(function(response) {
      console.log('Request successful',response);
         return response.json();
      }).then(function(myJson) {
        console.log(JSON.stringify(myJson));
      });
    le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"type":"FeatureCollection","totalFeatures":0,"features":[],"crs":null}

  4. #4
    Membre régulier
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2019
    Messages : 35
    Points : 76
    Points
    76
    Par défaut
    Vous avez inversé latitude et longitude, en les permutant, j’obtiens un résultat

  5. #5
    Membre du Club
    Homme Profil pro
    Archéologue
    Inscrit en
    Novembre 2017
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Archéologue

    Informations forums :
    Inscription : Novembre 2017
    Messages : 67
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par sfabry Voir le message
    Vous avez inversé latitude et longitude, en les permutant, j’obtiens un résultat
    oui merci je m'en suis aperçu en comparant avec une autre requête.
    C'est une des fonctions d'openlayers qui met les coordonnées dans l'autre sens.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 2.X] obtenir une liste de valeurs a partir d'un tableau
    Par pascaloupsu dans le forum Général Python
    Réponses: 1
    Dernier message: 16/04/2015, 09h24
  2. Réponses: 0
    Dernier message: 09/03/2012, 18h38
  3. obtenir une liste à partir de prédicats
    Par ge_ka dans le forum Prolog
    Réponses: 1
    Dernier message: 08/11/2011, 11h16
  4. Réponses: 17
    Dernier message: 09/06/2011, 00h50
  5. Réponses: 4
    Dernier message: 14/10/2003, 08h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo