Recherche d’objet

Cette page n’est plus maintenue depuis la version 2022 de Geoconcept Web. Pour accéder à la documentation à jour de ce web service, veuillez suivre ce lien.

Principe

Ce web service permet, en passant une coordonnée, de récupérer les informations contenues dans les champs des objets d’une carte Geoconcept. Les paramètres du nom de la couche, de la structure de la carte et du ou des champ(s) à interroger sont à renseigner lors de l’appel au web service.

Disponibilité

Ce web service est disponible en permanence avec Geoconcept Web et une carte Geoconcept.

Changement de version

Les versions précédente du web service sont conservées dans Geoconcept Web pour assurer la compatibilité avec les développements antérieurs. Il est recommandé d’utiliser la version la plus récente.

Changements avec la V2

  • Le nom du web service a changé de "findObjectsUnder" à "findObjectV2"
  • Le Web service n’est plus disponible en REST GET
  • Remplacement de "mapName" par "layerName"
  • Ajout de plusieurs paramètres de recherche "findObjectsTarget"
  • Ajout des paramètres "targetID", "maxDistance" et "maxCandidates"
  • Ajout des paramètres en sortie "distance" et "wktGeometry"
  • Suppression du paramètre "topology"

V2

Paramètres / propriétés

En entrée

paramètre description optionnel défaut

srs

projection (code EPSG comme epsg:4326 ou wgs84)

non

geometries

Coordonnées à chercher (série de triplets Id,X,Y séparées par le caractère ";")

non

layerName

Nom de la couche à utiliser

non

targets/target (findObjectsTarget)

Propriétés des objets cherchés

non

Cibles (findObjectsTarget)

paramètre description optionnel défaut

targetID

Identifiant

oui

className

Nom du Type

non

subclassName

Nom du Sous-type

non

fields

Nom des champs séparés par le caractère ";"

non

maxDistance

Rayon de recherche maximal (en mètre)

oui

maxCandidates

Nombre maximum de candidats à retourner

oui

En sortie

paramètre type min/max description

id

string

0/1

Identifiant des objets

targets/target (findTargetResult)

array (objectInfo)

0/illimité

Objets

Cibles Infos (findTargetResult)

paramètre type min/max description

targetID

string

0/1

Identifiant

objects/object (objectInfoV2)

string

0/illimité

Description des objets

Objets Infos (objectInfoV2)

paramètre type min/max description

distance

integer

1/1

Distance en mètre entre le point d’orgine et l’objet trouvé
-1 si la distance calculée n’est pas diponible

wktGeometry

string

0/1

Géométrie de l’objet

SOAP

WSDL

http://<server>/<webapp>/api/ws/findObjectsService?wsdl

Requête

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://geoconcept.com/gc/schemas">
   <soapenv:Header/>
   <soapenv:Body>
      <sch:findObjectV2>
         <!--Optional:-->
         <request>
            <!--Optional:-->
            <srs>epsg:4326</srs>
            <geometries>1,-1.80280,47.15524</geometries>
            <layerName>Fond de plan</layerName>
            <!--Optional:-->
            <targets>
               <!--1 or more repetitions:-->
               <target>
                  <!--Optional:-->
                  <targetId>1</targetId>
                  <className>Unité administrative</className>
                  <!--Optional:-->
                  <subClassName>Commune</subClassName>
                  <fields>Name;Code gouvernement</fields>
                  <!--Optional:-->
                  <maxDistance>1000</maxDistance>
                  <!--Optional:-->
                  <maxCandidates>5</maxCandidates>
               </target>
            </targets>
         </request>
      </sch:findObjectV2>
   </soapenv:Body>
</soapenv:Envelope>

Réponse

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:findObjectV2Response xmlns:ns2="http://geoconcept.com/gc/schemas">
         <FindObjectResult>
            <status>OK</status>
            <results>
               <id>1</id>
               <targets>
                  <target>
                     <targetId>1</targetId>
                     <objects>
                        <object>
                           <fields>
                              <field>Port-Saint-Père</field>
                              <field>44133</field>
                           </fields>
                           <distance>0</distance>
                        </object>
                        <object>
                           <fields>
                              <field>Rouans</field>
                              <field>44145</field>
                           </fields>
                           <distance>447</distance>
                        </object>
                     </objects>
                  </target>
               </targets>
            </results>
         </FindObjectResult>
      </ns2:findObjectV2Response>
   </soap:Body>
</soap:Envelope>
REST (POST)

Requête

Requête 

http://<server>/<webapp>/api/lbs/find/findObject/v2.xml

Data (XML) 

<?xml version="1.0" encoding="UTF-8"?>
<findObjectRequestV2>
  <srs>epsg:4326</srs>
  <geometries>1,-1.80280,47.15524</geometries>
  <layerName>Fond de plan</layerName>
  <targets>
    <target>
      <targetId>1</targetId>
      <className>Unité administrative</className>
      <subClassName>Commune</subClassName>
      <fields>Name;Code gouvernement</fields>
      <maxDistance>0</maxDistance>
      <maxCandidates>1</maxCandidates>
    </target>
  </targets>
</findObjectRequestV2>

Réponse

La réponse est toujours encodée en UTF-8.

Format XML 

<findObjectResultsV2>
   <status>OK</status>
   <results>
      <id>1</id>
      <targets>
         <target>
            <targetId>1</targetId>
            <objects>
               <object>
                  <fields>
                     <field>Port-Saint-Père</field>
                     <field>44133</field>
                  </fields>
                  <distance>0</distance>
               </object>
            </objects>
         </target>
      </targets>
   </results>
</findObjectResultsV2>

Requête

Requête JSON 

http://<server>/<webapp>/api/lbs/find/findObject/v2.json

JSON 

{
  "srs" : "epsg:4326",
  "geometries" : "1,-1.80280,47.15524",
  "layerName" : "Fond de plan",
  "targets" : [ {
  "className" : "Unité administrative",
  "subClassName" : "Commune",
  "fields" : "Name;Code gouvernement"
  }]
}

Réponse

La réponse est toujours encodée en UTF-8.

Format JSON 

{
   "message": null,
   "status": "OK",
   "results": [   {
      "id": "1",
      "targets": [{"objects": [      {
         "distance": 0,
         "fields":          [
            "Port-Saint-Père",
            "44133"
         ]
      }]}]
   }]
}

Retours possibles

Cas d’une réponse trouvée (findObjectsResults/status est OK) 

<findObjectResultsV2>
   <status>OK</status>
   <results>
      <id>1</id>
      <targets>
         <target>
            <targetId>1</targetId>
            <objects>
               <object>
                  <fields>
                     <field>Port-Saint-Père</field>
                     <field>44133</field>
                  </fields>
                  <distance>0</distance>
               </object>
            </objects>
         </target>
      </targets>
   </results>
</findObjectResultsV2>

Absence d’objet sur la position recherché (findObjectsResultsV2/status est OK) 

<findObjectsResultsV2>
   <status>OK</status>
   <results>
      <id>1</id>
      <objects/>
   </results>
</findObjectsResultsV2>

Mauvaise projection / srs (serviceResult/status est ERROR) 

<serviceResult>
    <message>
        CoordinateTransformEngineException: Coordinate transformation failed
    </message>
    <status>ERROR</status>
</serviceResult>

Cas, absence d’un argument pour geometries (serviceResult/status est ERROR) 

<serviceResult>
   <message>IllegalArgumentException: Geometry has too few fields : String[][{1,-1.80280}]</message>
   <status>ERROR</status>
</serviceResult>

Cas de la couche non trouvée (serviceResult/status est ERROR) 

<serviceResult>
   <message>WebServiceException: Layer name 'Fond de lan' does not exist</message>
   <status>ERROR</status>
</serviceResult>

Cas du Type non trouvé (serviceResult/status est ERROR) 

<serviceResult>
   <message>WebServiceException: Error in finding objects
failed to execute text request
failed to execute gcis request (text response)
failed to execute gcis request
exception occured while servicing request
Failed to service request
com.geoconcept.gc.GcException: native returned exception (code=1)
native returned exception
[FindObject-88304] unknown type 'Unité administrtive'</message>
   <status>ERROR</status>
</serviceResult>

Cas du Sous-type non trouvé (serviceResult/status est ERROR) 

<serviceResult>
   <message>WebServiceException: Error in finding objects
failed to execute text request
failed to execute gcis request (text response)
failed to execute gcis request
exception occured while servicing request
Failed to service request
com.geoconcept.gc.GcException: native returned exception (code=1)
native returned exception
[FindObject-88305] unknown subtype 'Commun'</message>
   <status>ERROR</status>
</serviceResult>

Cas de champ non trouvé (serviceResult/status est ERROR) 

<serviceResult>
   <message>WebServiceException: Error in finding objects
failed to execute text request
failed to execute gcis request (text response)
failed to execute gcis request
exception occured while servicing request
Failed to service request
com.geoconcept.gc.GcException: native returned exception (code=1)
native returned exception
[FindObject-88300] unknown field 'Code governement'</message>
   <status>ERROR</status>
</serviceResult>

V1

Paramètres / propriétés

En entrée

paramètre description optionnel défaut

srs

projection (code EPSG comme epsg:4326 ou wgs84)

oui

geometries

Coordonnées à chercher (série de triplets Id,X,Y séparées par le caractère ";")

non

topology

Relation topologique entre le geometries et les objets à chercher

oui

mapName

Nom de la carte

non

className

Nom du Type

non

subclassName

Nom du Sous-type

non

fields

Nom des champs séparés par le caractère ";"

non

En sortie

Objets (findObjectsResult)

paramètre type min/max description

id

string

0/1

Identifiant des objets

objects

array (objectInfo)

0/illimité

Objets

Objets Infos (objectInfo)

paramètre type min/max description

fields

string

0/illimité

Attributs des champs

SOAP

WSDL

http://<server>/<webapp>/api/ws/findObjectsService?wsdl

Requête

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://geoconcept.com/gc/schemas">
   <soapenv:Header/>
   <soapenv:Body>
      <sch:findObjectsUnder>
         <!--Optional:-->
         <srs>epsg:4326</srs>
         <!--Optional:-->
         <geometries>1,-1.80280,47.15524</geometries>
         <!--Optional:-->
         <topology></topology>
         <!--Optional:-->
         <mapName>Loire.gcm</mapName>
         <!--Optional:-->
         <className>Unité administrative</className>
         <!--Optional:-->
         <subclassName>Commune</subclassName>
         <!--Optional:-->
         <fields>Nom;Population</fields>
      </sch:findObjectsUnder>
   </soapenv:Body>
</soapenv:Envelope>

Réponse

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:findObjectsUnderResponse xmlns:ns2="http://geoconcept.com/gc/schemas">
         <FindObjectsResult>
            <status>OK</status>
            <results>
               <id>1</id>
               <objects>
                  <object>
                     <fields>
                        <field>Port-Saint-Père</field>
                        <field>2724</field>
                     </fields>
                  </object>
               </objects>
            </results>
         </FindObjectsResult>
      </ns2:findObjectsUnderResponse>
   </soap:Body>
</soap:Envelope>
REST

Requête

Requête JSON 

http://<server>/<webapp>/api/lbs/find/under.json?srs=epsg:4326&geometries=1,-1.80280,47.15524&mapName=Loire.gcm&className=Unit%C3%A9%20administrative&subclassName=Commune&fields=Nom;Population

Requête JSON-P 

http://<server>/<webapp>/api/lbs/find/under.xml?srs=epsg:4326&geometries=1,-1.80280,47.15524&mapName=Loire.gcm&className=Unit%C3%A9%20administrative&subclassName=Commune&fields=Nom;Population&callback=myCallback

Requête XML 

http://<server>/<webapp>/api/lbs/find/under.xml?srs=epsg:4326&geometries=1,-1.80280,47.15524&mapName=Loire.gcm&className=Unit%C3%A9%20administrative&subclassName=Commune&fields=Nom;Population

Réponse

La réponse est toujours encodée en UTF-8.

Format JSON 

{
   "message":null,
   "status":"OK",
   "results":[
      {
         "id":"1",
         "objects":[
            {
               "fields":[
                  "Port-Saint-Père",
                  "2724"
               ]
            }
         ]
      }
   ]
}

Format JSON-P 

myCallback({
           "message":null,
           "status":"OK",
           "results":[
                  {
                         "id":"1",
                         "objects":[
                                {
                                   "fields":[
                                          "Port-Saint-Père",
                                          "2724"
                                   ]
                                }
                         ]
                  }
           ]
        }
);

Format XML 

<findObjectsResults>
        <status>OK</status>
        <results>
                <id>1</id>
                <objects>
                        <object>
                                <fields>
                                        <field>Port-Saint-Père</field>
                                        <field>2724</field>
                                </fields>
                        </object>
                </objects>
        </results>
</findObjectsResults>

Retours possibles

Cas d’une réponse trouvée (findObjectsResults/status est OK) 

<findObjectsResults>
        <status>OK</status>
        <results>
                <id>1</id>
                <objects>
                        <object>
                                <fields>
                                        <field>Port-Saint-Père</field>
                                        <field>2724</field>
                                </fields>
                        </object>
                </objects>
        </results>
</findObjectsResults>

Absence d’objet sur la position recherché (findObjectsResults/status est OK) 

<findObjectsResults>
   <status>OK</status>
   <results>
      <id>1</id>
      <objects/>
   </results>
</findObjectsResults>

Mauvaise projection / srs (serviceResult/status est ERROR) 

<serviceResult>
    <message>
        CoordinateTransformEngineException: Coordinate transformation failed
    </message>
    <status>ERROR</status>
</serviceResult>

Cas, absence d’un argument pour geometries (serviceResult/status est ERROR) 

<serviceResult>
   <message>IllegalArgumentException: Candidate has too few fields : [Ljava.lang.String;@5890d398</message>
   <status>ERROR</status>
</serviceResult>

Cas de la carte non trouvée (serviceResult/status est ERROR) 

<serviceResult>
   <message>ServiceException: getLayerInfo : Error reading map info on Loir.gcm
No metadata for this map has been found</message>
   <status>ERROR</status>
</serviceResult>

Cas du Type non trouvé (serviceResult/status est ERROR) 

<serviceResult>
   <message>WebServiceException: Error in finding objects
Error on ObjClass</message>
   <status>ERROR</status>
</serviceResult>

Cas du Sous-type non trouvé (serviceResult/status est ERROR) 

<serviceResult>
   <message>WebServiceException: Error in finding objects
Error on ObjSubclass</message>
   <status>ERROR</status>
</serviceResult>

Cas de champ non trouvé (serviceResult/status est ERROR) 

<serviceResult>
   <message>WebServiceException: Error in finding objects
Error on ObjField</message>
   <status>ERROR</status>
</serviceResult>

FAQ

1. Est-il possible d’utiliser d’autres relations topologiques entre les objets ?
2. Comment traiter les cartes avec des encodages non latin ?
3. Est-il possible de passer plusieurs geometries lors d’un appel au Web Service?

1.

Est-il possible d’utiliser d’autres relations topologiques entre les objets ?

Non, pour l’instant seule la relation Intersect est disponible.

2.

Comment traiter les cartes avec des encodages non latin ?

Dans Administration / Paramètres changer la valeur de "geographics.server.gcis.gcisServerCharset" par "UTF-8".

3.

Est-il possible de passer plusieurs geometries lors d’un appel au Web Service?

Oui, il suffit de préciser plus de triplets séparés par le caractère ";"

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://geoconcept.com/gc/schemas">
   <soapenv:Header/>
   <soapenv:Body>
      <sch:findObjectsUnder>
         <!--Optional:-->
         <srs>epsg:4326</srs>
         <!--Optional:-->
         <geometries>1,6.01501,49.350;2,6.01701,49.390</geometries>
         <!--Optional:-->
         <topology></topology>
         <!--Optional:-->
         <mapName>geowebSmp.gcm</mapName>
         <!--Optional:-->
         <className>Pyr</className>
         <!--Optional:-->
         <subclassName>P2L2</subclassName>
         <!--Optional:-->
         <fields>Nom;X;Y</fields>
      </sch:findObjectsUnder>
   </soapenv:Body>
</soapenv:Envelope>

Retourne :

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>
                <ns2:findObjectsUnderResponse xmlns:ns2="http://geoconcept.com/gc/schemas">
                        <FindObjectsResult>
                                <status>OK</status>
                                <results>
                                        <id>1</id>
                                        <objects>
                                                <object>
                                                        <fields>
                                                                <field>FONTOY</field>
                                                                <field>868858</field>
                                                                <field>2489508</field>
                                                        </fields>
                                                </object>
                                        </objects>
                                </results>
                                <results>
                                        <id>2</id>
                                        <objects>
                                                <object>
                                                        <fields>
                                                                <field>HAVANGE</field>
                                                                <field>864342.4</field>
                                                                <field>2494239.52</field>
                                                        </fields>
                                                </object>
                                        </objects>
                                </results>
                        </FindObjectsResult>
                </ns2:findObjectsUnderResponse>
        </soap:Body>
</soap:Envelope>