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 :
Pour interroger le service de géolocalisation en v1.2, j’ai donc modifié l’attribut « version » à « 1.2 ».
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'} ] } } );
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 :
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 <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>
Le XML décrit dans la documentation est 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
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>
Requête attendue :
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 <?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>
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…).
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>
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) :
Avec ce nouveau contrôle, les résultats sont strictement identiques aux précédents.
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]);
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 :
Il semblerait que j’ai raté une étape…
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <html><body><h1>It works!</h1></body></html>
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,
Partager