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 :

Problème de géolocalisation inversée


Sujet :

IGN API Géoportail

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Problème de géolocalisation inversée
    Bonjour,

    Je tente sans succès d'obtenir des informations géographiques à partir de coordonnées. La clé de licence que j'utilise est une clé "mission pour service publique" avec dans le détail des services les options "OpenLS-Géoportail - Adresses" et "OpenLS-Géoportail - Toponymes" activées.

    Mes tests sont basés sur les informations fournies par la documentation http://depot.ign.fr/geoportail/api/d...ur/search.html

    il apparaît que seules les recherches "non inverses" fonctionnent.
    L'exemple n°1 Recherche par lieux:

    Code XML : 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
    <?xml version="1.0" encoding="UTF-8"?>
    <XLS
        xmlns:xls="http://www.opengis.net/xls"
        xmlns:gml="http://www.opengis.net/gml"
        xmlns="http://www.opengis.net/xls"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        version="1.2"
        xsi:schemaLocation="http://www.opengis.net/xls http://schemas.opengis.net/ols/1.2/olsAll.xsd">
      <RequestHeader/>
      <Request requestID="1" version="1.2" methodName="LocationUtilityService">
       <GeocodeRequest returnFreeForm="false">
         <Address countryCode="PositionOfInterest">
           <freeFormAddress>rennes</freeFormAddress>
         </Address>
       </GeocodeRequest>
      </Request>
    </XLS>
    Me retourne bien:

    Code XML : 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
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <XLS version="1.2" xsi:schemaLocation="http://wxs.ign.fr/schemas/olsAll.xsd" xmlns:xls="http://www.opengis.net/xls" xmlns="http://www.opengis.net/xls" xmlns:xlsext="http://www.opengis.net/xlsext" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <ResponseHeader/>
        <Response version="1.2" requestID="1">
            <GeocodeResponse>
                <GeocodeResponseList numberOfGeocodedAddresses="18">
                    <GeocodedAddress>
                        <gml:Point>
                            <gml:pos>48.113493 -1.675702</gml:pos>
                        </gml:Point>
                        <Address countryCode="PositionOfInterest">
                            <StreetAddress>
                                <Street></Street>
                            </StreetAddress>
                            <Place type="Municipality">rennes</Place>
                            <Place type="Departement">35</Place>
                            <Place type="Bbox">-1.675702;48.113493;-1.675702;48.113493</Place>
                            <Place type="Commune">Rennes</Place>
                            <Place type="Importance">1</Place>
                            <Place type="INSEE">35238</Place>
                            <Place type="Territoire">FXX</Place>
                            <Place type="Nature">Préfecture de région</Place>
                            <PostalCode>35000</PostalCode>
                        </Address>
                        <GeocodeMatchCode matchType="City" accuracy="1.0"/>
                    </GeocodedAddress>
    		etc ...

    Alors que l'exemple n°7 Recherche Inverse:

    Code XML : 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
    <?xml version="1.0" encoding="UTF-8"?>
    <XLS version="1.2"
      xmlns="http://www.opengis.net/xls"
      xmlns:gml="http://www.opengis.net/gml"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.opengis.net/xls http://schemas.opengis.net/ols/1.2/olsAll.xsd">
      <RequestHeader/>
      <Request
        methodName="ReverseGeocodeRequest"
        maximumResponses="10"
        requestID="abc"
        version="1.2">
       <ReverseGeocodeRequest>
        <ReverseGeocodePreference>StreetAddress</ReverseGeocodePreference>
        <Position>
         <gml:Point>
          <gml:pos>48.8033333 2.3241667</gml:pos>
         </gml:Point>
        </Position>
       </ReverseGeocodeRequest>
    </Request>
    </XLS>

    Me retourne:

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <ExceptionReport><Exception exceptionCode="MissingRights">No rights for this ressource or ressource does not exist</Exception></ExceptionReport>

    Quelqu'un pourrait m'aiguiller ?

    ps: les deux tests sont faits via un GET sur l'url http://wxs.ign.fr/[Ma CLE]/geoportail/ols?xls= suivie de la chaine xml formatée sans espace et urlencodée.


    T.

  2. #2
    Membre éclairé Avatar de jrenard
    Homme Profil pro
    Webdesigner / développeur front-end
    Inscrit en
    Septembre 2013
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Webdesigner / développeur front-end
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2013
    Messages : 456
    Points : 894
    Points
    894
    Par défaut
    Bonjour,

    Nous avons reproduit la requête et constaté la même erreur de notre coté. Nous allons investiguer un peu plus avant pour comprendre d'où ça vient.

    En attendant, vous pouvez effectuer votre requête en POST car nous avons pu constater qu'elle fonctionnait de cette façon. Tout est expliqué dans la documentation.
    Développeur Web - Agglo La Rochelle
    Anciennement pôle technique Géoportail - IGN
    Twitter : @dje_renard

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci pour l'info.

    T.

  4. #4
    Membre éclairé Avatar de jrenard
    Homme Profil pro
    Webdesigner / développeur front-end
    Inscrit en
    Septembre 2013
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Webdesigner / développeur front-end
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2013
    Messages : 456
    Points : 894
    Points
    894
    Par défaut
    C'est une réponse logique. Contrairement à la requête en GET, la requête envoyée en POST ne doit pas faire figurer le XML encodé dans l'URL.

    En pratique, la requête en POST doit être adaptée de la façon suivante :
    - le XML doit être intégré dans le body de la requête
    - l'URL appelée doit être amputée du ?xls= et de tout ce qui suit pour se résumer à http://wxs.ign.fr/[Ma CLE]/geoportail/ols

    EDIT: message envoyé avant édition du message précédent
    Développeur Web - Agglo La Rochelle
    Anciennement pôle technique Géoportail - IGN
    Twitter : @dje_renard

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Effectivement j'ai constaté que vous attendiez un raw post du flux xml (avec forçage obligatoire du content-type) sinon il est refusé. Par contre c'est étrange que le format clé/valeur (application/x-www-form-urlencoded) soit inopérant, aucune info d'ailleurs n'est fournie dans la doc.

    T.

  6. #6
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    Bonjour,

    La documentation que vous citez mentionne pourtant ceci :

    Les requêtes OpenLS peuvent être soit des requêtes POST XML, soit des requêtes KVP GET.
    Je vous l'accorde, c'est très succinct et nous allons corriger la documentation de façon à être plus explicites sur ce sujet. Merci.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    C'était effectivement bien dans la doc, mais faisant mes tests via curl j'avais zappé le content-type.

    Bref je poursuis mes tests en POST donc et je tombe sur un autre problème, les recherches avec contraintes polygonales semblent ne rien retourner.

    ex de la doc:
    Code XML : 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
    <?xml version="1.0" encoding="UTF-8"?>
    <XLS version="1.2"
      xmlns="http://www.opengis.net/xls"
      xmlns:gml="http://www.opengis.net/gml"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.opengis.net/xls http://schemas.opengis.net/ols/1.2/olsAll.xsd">
      <RequestHeader/>
      <Request
        methodName="ReverseGeocodeRequest"
        maximumResponses="10"
        requestID="abc"
        version="1.2">
       <ReverseGeocodeRequest>
        <ReverseGeocodePreference>StreetAddress</ReverseGeocodePreference>
        <Position>
         <gml:Point>
          <gml:pos>48.8033333 2.3241667</gml:pos>
         </gml:Point>
         <gml:Polygon>
          <gml:exterior>
            <gml:LinearRing>
              <gml:pos>48.8033 2.3241</gml:pos>
              <gml:pos>48.8033 2.3242</gml:pos>
              <gml:pos>48.8032 2.3242</gml:pos>
              <gml:pos>48.8032 2.3241</gml:pos>         
            </gml:LinearRing>
          </gml:exterior>
         </gml:Polygon>
        </Position>
       </ReverseGeocodeRequest>
    </Request>
    </XLS>

    Censé retourner:
    Code XML : 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
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XLS version="1.2" xsi:schemaLocation="http://gpp3-wxs.ign.fr/schemas/olsAll.xsd" xmlns:xls="http://www.opengis.net/xls" xmlns="http://www.opengis.net/xls" xmlns:xlsext="http://www.opengis.net/xlsext" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <ResponseHeader/>
        <Response version="1.2" requestID="abc">
            <ReverseGeocodeResponse>
                <ReverseGeocodedLocation>
                    <gml:Point>
                        <gml:pos>48.803159 2.324278</gml:pos>
                    </gml:Point>
                    <Address countryCode="StreetAddress">
                        <StreetAddress>
                            <Building number="580"/>
                            <Street>av aristide briand</Street>
                        </StreetAddress>
                        <Place type="Municipality">Bagneux</Place>
                        <PostalCode>92220</PostalCode>
                    </Address>
                    <xlsext:ExtendedGeocodeMatchCode>point adresse</xlsext:ExtendedGeocodeMatchCode>
                    <SearchCentreDistance value="23.02"/>
                </ReverseGeocodedLocation>
                (...)
            </ReverseGeocodeResponse>
        </Response>
    </XLS>

    Me renvoie:
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XLS version="1.2" xsi:schemaLocation="http://wxs.ign.fr/schemas/olsAll.xsd" xmlns:xls="http://www.opengis.net/xls" xmlns="http://www.opengis.net/xls" xmlns:xlsext="http://www.opengis.net/xlsext" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <ResponseHeader/>
        <Response version="1.2" requestID="abc">
            <ReverseGeocodeResponse/>
        </Response>
    </XLS>

    C'est facheux car je comptais m'appuyer dessus. Pouvez-vous me confirmer le fonctionnement ou non du service ? si non un délai est-il prévu ?

    T.

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 119
    Points : 1 764
    Points
    1 764
    Par défaut
    Je ferme le polygone en mettant un cinquième point identique au premier et cela fonctionnait.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2014
    Messages : 16
    Points : 7
    Points
    7
    Par défaut Géocodage inversé problème polygon
    Bonjour,

    J'écris sur cette discussion car j'ai l'impression que c'est le même problème pour moi.

    J'attaque l'API en PHP avec du curl.

    Lorsque j'envoie un Point, l'API me répond mais si j'envoie un polygone , je n'ai aucune réponse.
    Pourtant j'ai repris le même exemple que dans la documentation https://geoservices.ign.fr/documenta...e-inverse.html, j'ai essayé aussi de fermer sur le même point que le premier comme indiquait "mga_geo", sans aucun résultat.

    Je vous donne un exemple simple du code que j'essaye de faire fonctionner :

    Code :
    Code php : 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
    	$ch=curl_init();
    	// configuration des options
    	curl_setopt($ch, CURLOPT_URL, "https://wxs.ign.fr/$cleign/geoportail/ols?");
    	// curl_setopt($ch, CURLOPT_HEADER, 1);
    	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    	curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: text/xml;', 'Content-length: ' . strlen($xls) ));
    	curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    	curl_setopt($ch, CURLOPT_POSTFIELDS, $xls);
     
    	// exécution de la session
    	$data = curl_exec($ch);
    	$error_no = curl_errno($ch);
    	$intReturnCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    	$aReponse[0]=$error_no;
    	$aReponse[1]=$intReturnCode;
    	$aReponse[2]=$data;
    	// fermeture des ressources
    	curl_close($ch);
    	// print_r($aReponse);
    	print_r($data);

    XML fourni :
    Code XML : 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
    $xls=('<?xml version="1.0" encoding="UTF-8"?>
    	<XLS version="1.2"
    	  xmlns="http://www.opengis.net/xls"
    	  xmlns:gml="http://www.opengis.net/gml"
    	  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	  xsi:schemaLocation="http://www.opengis.net/xls http://schemas.opengis.net/ols/1.2/olsAll.xsd">
    		<RequestHeader/>
    		<Request methodName="ReverseGeocodeRequest" maximumResponses="200" requestID="abc" version="1.2">
    		   <ReverseGeocodeRequest>
    			  <ReverseGeocodePreference>CadastralParcel</ReverseGeocodePreference>
    				<Position>
    				 <gml:Polygon>
                      <gml:exterior>
                          <gml:LinearRing>
                              <gml:pos>48.8033 2.3241</gml:pos>
                              <gml:pos>48.8033 2.3242</gml:pos>
                              <gml:pos>48.8032 2.3242</gml:pos>
                              <gml:pos>48.8032 2.3241</gml:pos>         
                              <gml:pos>48.8033 2.3241</gml:pos>         
                          </gml:LinearRing>
                      </gml:exterior>
                   </gml:Polygon></Position>
    		   </ReverseGeocodeRequest>
    	  </Request>
    	</XLS>');

    Sachant que le but à terme est de fournir dans le XML une géométrie au format GML version 3 à partir d'une requête SQL sur POSTGIS, du coup le GML ne ressemblera pas tout à fait à l'exemple et j'aimerai savoir si l'exemple ci-dessous devrait pouvoir fonctionner ou non ?

    Exemple SQL :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT st_asgml(3, ST_AsText(st_transform(the_geom,4326)),5 , 18) as gml FROM schema.matable WHERE monfiltre=valeurfiltre;
    Exemple résultat GML retourné via SQL :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <gml:Polygon><gml:exterior><gml:LinearRing><gml:posList>44.452 -0.56899 44.45114 -0.56928 44.45088 -0.5681 44.45178 -0.56782 44.452 -0.56899</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon><gml:Polygon><gml:exterior><gml:LinearRing><gml:posList>44.4517 -0.56767 44.45089 -0.56792 44.45068 -0.56676 44.45102 -0.56676 44.45134 -0.56684 44.45179 -0.56746 44.4517 -0.56767</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon>

    Je vous remercie pour l'attention que vous prêterai à mon message.

    Nicolas

Discussions similaires

  1. Problème de date: Inversion jour et mois dans cellule de résultat
    Par tic59 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/11/2010, 21h04
  2. Problème de validation inverse
    Par lordmastrod dans le forum Excel
    Réponses: 4
    Dernier message: 18/06/2010, 20h34
  3. google map géolocalisation inversée
    Par Jasou dans le forum APIs Google
    Réponses: 6
    Dernier message: 22/03/2010, 11h00
  4. Réponses: 6
    Dernier message: 05/03/2009, 07h34
  5. problème de date inversée!EXCEL 07
    Par bahman dans le forum Excel
    Réponses: 5
    Dernier message: 18/08/2008, 08h28

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