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 :

Interroger OpenLS v1.2 depuis le contrôle de recherche d'adresse


Sujet :

IGN API Géoportail

  1. #1
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 34
    Points : 46
    Points
    46
    Par défaut Interroger OpenLS v1.2 depuis le contrôle de recherche d'adresse
    Bonjour,

    J'ai récemment effectué la montée de version de Géoportail de la 1.2 à la 1.3.
    Suite à ce changement, je souhaiterais également faire évoluer mon contrôle de recherche d'adresse de manière à ce qu'il interroge la nouvelle version du service de Géolocalisation, OpenLS v1.2 (et non plus OpenLS v1.0).
    Je rencontre cependant certaines difficultés.

    Mon contrôle permettant la recherche d'adresse est actuellement le suivant :
    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
    var searchbar= new Geoportal.Control.SearchToolbar(
                {
                    div: OpenLayers.Util.getElement(tbx.id+'_search'),
                    geocodeOptions: {
                        layerOptions: {
                            name: 'ADDRESSES.CROSSINGS:OPENLS',
                            formatOptions: {
                                version:'1.0'
                            }
                        },
                        matchTypes: [
                            {re:/city/i,    src:Geoportal.Util.getImagesLocation()+'OLScity.gif'},
                            {re:/street$/i, src:Geoportal.Util.getImagesLocation()+'OLSstreet.gif'},
                            {re:/number/i,  src:Geoportal.Util.getImagesLocation()+'OLSstreetnumber.gif'},
                            {re:/enhanced/i,src:Geoportal.Util.getImagesLocation()+'OLSstreetenhanced.gif'},
                            {re:null,       src:Geoportal.Util.getImagesLocation()+'OLSstreet.gif'}
                        ]
                    }
                }
            );
    Pour interroger le service de géolocalisation en v1.2, j’ai donc modifié l’attribut « version » à « 1.2 ».
    Les résultats obtenus sont les suivants :
    Les sections en gras indiquent les différences entre les résultats obtenus et ceux attendus (i.e. ceux indiqués dans la documentation).
    (Les résultats attendus sont en dessous).

    Flux XML envoyé au service de géocodage :
    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
    <xls:XLS xmlns:xls="http://www.opengis.net/xls" version="1.2">
    	<xls:RequestHeader sessionID="" />
    	<xls:Request methodName="GeocodeRequest" version="1.2"
    		requestID="" maximumResponses="10">
    		<xls:GeocodeRequest>
    			<xls:Address countryCode="FR">
    				<xls:StreetAddress>
    					<xls:Street></xls:Street>
    				</xls:StreetAddress>
    				<xls:Place type="Municipality"></xls:Place>
    				<xls:PostalCode></xls:PostalCode>
    			</xls:Address>
    		</xls:GeocodeRequest>
    	</xls:Request>
    </xls:XLS>
    Flux XML reçu en réponse du service de géocodage :
    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
    <xls:XLS xmlns:xls="http://www.opengis.net/xls" version="1.000000"
    	xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://www.opengis.net/xls /WEBS/ign/interop-ols.ign.fr/docs/lbs_p/gen/data/openls/LocationUtilityService.xsd">
    	<ResponseHeader xmlns="http://www.opengis.net/xls" />
    	<Response xmlns="http://www.opengis.net/xls" requestID=""
    		version="1.0">
    		<GeocodeResponse>
    			<GeocodeResponseList numberOfGeocodedAddresses="1">
    				<GeocodedAddress>
    					<Point xmlns="http://www.opengis.net/gml">
    						<pos dimension="2">coordonnées</pos>
    					</Point>
    					<Address countryCode="FR">
    						<StreetAddress>
    							<Street>numéro et rue</Street>
    						</StreetAddress>
    						<Place type="Municipality">ville</Place>
    						<PostalCode></PostalCode>
    					</Address>
    					<GeocodeMatchCode accuracy="1" matchType="Street number" />
    				</GeocodedAddress>
    			</GeocodeResponseList>
    		</GeocodeResponse>
    	</Response>
    </xls:XLS>
    Le XML décrit dans la documentation est le suivant :
    Requête attendue :
    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
    <?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="StreetAddress">
    				<StreetAddress>
    					<Street>1 rue Marconi</Street>
    				</StreetAddress>
    				<Place type="Municipality">Metz</Place>
    				<PostalCode>57000</PostalCode>
    			</Address>
    		</GeocodeRequest>
    	</Request>
    </XLS>
    Réponse attendue :
    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
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XLS
    	version="1.2"
    	ns4:schemaLocation="http://www.opengis.net/xls
    	http://schemas.opengis.net/ols/1.2/olsAll.xsd"
    	xmlns="http://www.opengis.net/xls"
    	xmlns:ns4="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns:xlsext="http://www.opengis.net/xlsext"
    	xmlns:gml="http://www.opengis.net/gml">
    	<ResponseHeader/>
    	<Response version="1.2" requestID="1">
    		<GeocodeResponse>
    			<GeocodeResponseList numberOfGeocodedAddresses="1">
    				<GeocodedAddress>
    					<gml:Point>
    						<gml:pos>49.104565 6.214763</gml:pos>
    					</gml:Point>
    					<Address countryCode="StreetAddress">
    						<StreetAddress>
    							<Building number="1"/>
    							<Street>R MARCONI</Street>
    						</StreetAddress>
    						<Place type="Municipality">Metz</Place>
    						<Place type="IRIS">57463</Place>
    						<PostalCode>57463</PostalCode>
    					</Address>
    					<GeocodeMatchCode matchType="StreetNumber" accuracy="0.9495000000000001"/>
    				</GeocodedAddress>
    			</GeocodeResponseList>
    		</GeocodeResponse>
    	</Response>
    </XLS>
    Le service OpenLS semble donc avoir été interrogé en version 1.0 et non pas en version 1.2 (puisqu’il me répond en version 1.0…).

    Suite à ce test infructueux, j’ai consulté la documentation de la version 2.0 de Géoportail afin de déterminer si le contrôle de recherche d’adresse avait été modifié, ce qui semble être le cas (cf. http://api.ign.fr/documentation/89/barre-de-recherche).
    J’ai donc mis à jour mon contrôle tel que défini dans la documentation du site api.ign.fr, à savoir que j’ai transformé mon contrôle de recherche d’adresse de la manière suivante (toujours avec Géoportail v1.3) :
    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
    var panel= new Geoportal.Control.Panel({
    		       div:OpenLayers.Util.getElement(tbx.id+'_search')//hook/anchor
     });
    var searchbar= new Geoportal.Control.LocationUtilityService.Geocode(
    new Geoportal.Layer.OpenLS.Core.LocationUtilityService(
    'ADDRESSES.CROSSINGS:OPENLS', 
    			{
    				formatOptions: {
    			            		version:'1.2'
    				}
    			}
    			 ),{
    				title: 'gpControlLocationUtilityService.geocode.title',
    				setZoom: Geoportal.Control.LocationUtilityService.Geocode.setZoomForBDNyme
    			}
    		);
    panel.addControls([searchbar]);
    viewer.getMap().addControls([panel]);
    Avec ce nouveau contrôle, les résultats sont strictement identiques aux précédents.

    J’ai donc passé Géoportail en version 2.0.0beta pour déterminer s’il s’agit d’un problème de version, et dans ce cas mon contrôle ne fonctionne plus. La requête POST XML est bien envoyée (et elle est par ailleurs identique à celle indiqué plus haut dans ce message), mais je ne reçois une réponse « inattendue » du serveur de géocodage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <html><body><h1>It works!</h1></body></html>
    Il semblerait que j’ai raté une étape…

    Mes questions sont les suivantes :
    • Le service OpenLS en version 1.2 est-il accessible depuis Géoportail en v1.3 ? Si oui, pourriez-vous m’indiquer la procédure à suivre ?
    • Si non :
    o OpenLS v1.0 étant supposé s’arrêter cet été, devrais-je obligatoirement passer Géoportail en v2.0 pour interroger OpenLs en v1.2 ?
    o Pourriez-vous m’indiquer comment accéder au service de géocodage en version 1.2 depuis Géoportail v2.0.0beta ?

    Enfin, je souhaiterais savoir si les valeurs possibles de l’attribut « matchType » de la réponse XML ont évolué. En effet, en version 1.0 de OpenLS, le matchType indiqué dans la documentation possédait l’orthographe « Street number » et non pas « StreetNumber ». Etant donné que je me sers de cet attribut afin de déterminer si ma géolocalisation est un succès ou non, vous serait-il possible de m’indiquer les nouvelles valeurs possibles de cet attribut ?

    Toutes mes excuses pour la longueur de ce post...

    Dans l'attente de vous lire,

    Cordialement,

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Citation Envoyé par vremac Voir le message
    • Le service OpenLS en version 1.2 est-il accessible depuis Géoportail en v1.3 ? Si oui, pourriez-vous m’indiquer la procédure à suivre ?
    Non

    Citation Envoyé par vremac Voir le message
    • Si non :
    o OpenLS v1.0 étant supposé s’arrêter cet été, devrais-je obligatoirement passer Géoportail en v2.0 pour interroger OpenLs en v1.2 ?
    Oui

    Citation Envoyé par vremac Voir le message
    o Pourriez-vous m’indiquer comment accéder au service de géocodage en version 1.2 depuis Géoportail v2.0.0beta ?
    Normalement, il n'y a rien à changer dans le code JavaScript, si ce n'est de remplacer 1.0 par 1.2 dans la version et 'FR' par 'StreetAddress' ou 'PositionOfInterest' suivant un géococage par adresse ou lieux. Il faut aussi remplacer 'ADDRESSES.CROSSINGS:OPENLS' par 'StreetAddress:OpenLS;Geocode'.

    Voir les exemples en ligne.

    Citation Envoyé par vremac Voir le message
    Enfin, je souhaiterais savoir si les valeurs possibles de l’attribut « matchType » de la réponse XML ont évolué. En effet, en version 1.0 de OpenLS, le matchType indiqué dans la documentation possédait l’orthographe « Street number » et non pas « StreetNumber ». Etant donné que je me sers de cet attribut afin de déterminer si ma géolocalisation est un succès ou non, vous serait-il possible de m’indiquer les nouvelles valeurs possibles de cet attribut ?
    C'est possible (et merci pour le retour, c'est un oubli dans la documentation) : ces valeurs ne sont pas fixées par le standard OpenLS.

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

Discussions similaires

  1. Comment interroger un cube SSAS depuis VS2010 ?
    Par stdebordeau dans le forum ADO.NET
    Réponses: 0
    Dernier message: 22/05/2013, 16h10
  2. [OpenLDAP] Interroger 2 serveurs LDAP depuis un seul client
    Par lavazavio dans le forum Sécurité
    Réponses: 0
    Dernier message: 16/03/2011, 16h28
  3. [VBA Excel]Interroger une base access depuis Excel
    Par Stephane_123 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 12/02/2007, 10h43
  4. Réponses: 1
    Dernier message: 24/07/2006, 14h15
  5. Interroger le modem ADSL depuis le LAN
    Par Kimael dans le forum Réseau
    Réponses: 12
    Dernier message: 10/08/2004, 09h07

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