Guide de référence de Universal Geocoder Server

Le géocodage est l’opération d’obtenir des coordonnées à partir d’adresses. Pour plus d’informations sur la terminologie du géocodeur (types de géocodage, tolérances…) , se reporter au manuel d’utilisation général de Universal Geocoder

Cette documentation présente le composant Universal Geocoder de Geoconcept.

Elle est présentée en trois parties distinctes :

  • UGC JEE : il s’agit d’un composant destiné à l’intégration du moteur de géocodage Universal GeoCoder (UGC) à la plate-forme Java Enterprise Edition (JEE) et ses sous-ensembles comme le moteur de servlet Tomcat. Par extension (déploiement de module optionnel), le produit peut être utilisé dans le but de déployer un web service de géocodage.
  • UGC Command Line
  • UGC .NET
[Note] Note

Cette documentation n’est pas la documentation de Universal Geocoder Standalone de Geoconcept.

Universal Geocoder JEE

Il s’agit d’un composant destiné à l’intégration du moteur de géocodage Universal GeoCoder (UGC) à la plate-forme Java Enterprise Edition (JEE) et ses sous-ensembles comme le moteur de servlet Tomcat. Par extension (déploiement de module optionnel) le produit peut être utilisé dans le but de déployer un web service de géocodage.

Du point de vue fonctionnel, le géocodage est l’opération d’obtenir des coordonnées à partir d’adresses. Pour plus d’informations sur la terminologie du géocodeur (types de géocodage, tolérances…) , se reporter au manuel d’utilisation général de Universal Geocoder. Ce manuel est destiné a décrire spécifiquement la mise en oeuvre d’Universal Geocodeur pour Java Enterprise Edition (ugc-jee).

Principes

Intégration JEE

ugc-jee est un composant d’intégration à la plate-forme JEE, il offre un service de géocodage aux modules JEE déployés sur une serveur d’applications (au sens large, moteur de servlet type Tomcat compris).

Intégration JEE
gcweb-reference-img/guide-reference-ugc/ugc-guide-reference1.png

Le module consommateur peut être de n’importe quel type (webapp, ejb, etc). De même à l’intérieur du module JEE le consommateur peut être de n’importe quel type (servlet, jsp, pojo, etc).

Mode d’accès

L’application utilisant le géocodeur référence le fournisseur via un nom logique de l’annuaire JNDI (Java Naming and Directory Interface) du serveur d’applications. La manière de monter le fournisseur sera décrite plus loin.

Traditionellement, le nom logique utilisé est « geoconcept/ugc/default » du contexte « java:comp/env » mais il est possible d’utiliser un autre nom, un autre contexte ou de monter plusieurs fournisseurs de types différents.

Par soucis de simplicité le cas d’utilisation le plus courant (un seul fournisseur primaire local avec nommage par défaut) sera décrit dans un premier temps.

Mode d’accès
gcweb-reference-img/guide-reference-ugc/ugc-guide-reference2.png

Organisation du composant

Adaptation de ressource JEE et éléments externes

ugc-jee se compose de plusieurs parties. Pour des questions de performances et de réutilisation, le moteur (aussi appelé noyau) est écrit en C++ et est donc diffusé sous forme de librairies natives. La partie intégration (adaptateur de ressource) réalise le lien avec le moteur en gérant sa mise en oeuvre par chargement de ses librairies natives. En terme de déploiement de fichiers cela concerne donc deux arborescences distinctes :

Organisation du composant
gcweb-reference-img/guide-reference-ugc/ugc-guide-reference3.png

En terme d’exécution les librairies natives seront chargées en mémoire dans le processus de l’instance du serveur d’application (ou sa partition éventuelle selon les modèles) au démarrage. La partie adaptateur de ressource expose une interface java et gère le moteur instancié en mémoire directement via JNI.

Organisation du composant
gcweb-reference-img/guide-reference-ugc/ugc-guide-reference4.png

Autre type de fournisseur

L’adaptateur de ressource décrit précédemment correspond au type LocalDll, il s’agit du fournisseur primaire, celui qui est lié au moteur de géocodage et réalise concrètement le traitement.

Dans certaines situations (pour diverses raisons : frontal séparé, partage, architecture, isolation, etc, etc) il est souhaité que le module qui consomme le service ne soit pas déployé sur la même instance de serveur d’application que le fournisseur primaire ugc (par exemple chacun étant sur deux machines serveur différentes - remoting).

Dans ce cas il existe plusieurs possibilités :

  • soit la création d’un module destiné à la publication qui accèdera au fournisseur ugc (dans ce cas le protocole utilisé et les modalités sont propres au module créé).
  • soit le consommateur est implémenté comme un client d’un module fourni par ugc-jee comme par exemple un web service du module ugc-ws.
  • soit un module fourni par ugc-jee est déployé sur la machine du fournisseur primaire et un adaptateur de ressource client de ce module est monté sur la machine consommatrice.

Le dernier cas est transparent pour l’application consommatrice : que le fournisseur soit local ou distant son code source ne change pas, il ne s’agit que d’une question de déploiement et de configuration (il s’agit en quelque sorte du pattern Multiple business delegate).

Le protocole de transport utilisé dépend du couple module de publication / client choisi : cela peut être web service (http/soap) ou rmi.

Autre type de fournisseur
gcweb-reference-img/guide-reference-ugc/ugc-guide-reference5.png

Dans tous les cas, dans le cadre de la mise en oeuvre de ugc-jee en mode installé (c’est à dire non SAAS), il existe une instance de fournisseur de type LocalDll. Par ailleurs, dans la mesure où ce fournisseur est local (pas de transfert, de sérialisation, etc) il est le plus performant (latence, débit).

Modules additionnels

Un certain nombre de modules additionnels sont fournis dans ugc-jee. Aucun n’est indispensable au bon fonctionnement de l’adaptateur de ressource et leur déploiement est optionnel.

ugc-admin

ugc-admin est une webapp permettant la vérification de la bonne installation du produit, sa configuration et le test de bon fonctionnement.

ugc-ws

ugc-ws est une webapp publiant un web service de géocodage. Elle est basée sur spring-ws (elle publie au format document / encodage litteral).

ugc-axis-fusion

ugc-axis-fusion est une webapp publiant un web service de géocodage prédéployé sur Axis 1.4 (elle publie au format rpc / encodage soapenc).

ugc-remote

ugc-remote est une webapp publiant le service de geocodage via rmi. Elle est notamment utilisée pour le remoting en conjonction avec le fournisseur de type RmiClient.

Administration / Configuration

Configuration de mise en oeuvre

Un référentiel constitué d’un ensemble de fichiers portant des extensions .ugc.xxi, publié constitue une source de données (datasource).

Le fichier service.xml situé dans %ugc%/conf définit la configuration générale du fournisseur de service de géocodage. Celui ci contient notamment une configuration par défaut pour les sources de données (default‑datasource). Il est possible de définir une configuration spécifique à une source de données.

Pour définir une configuration particulière pour une source de données il est recommandé d’utiliser la webapp ugc‑admin (rubrique DataSourcesConfiguration puis configuration > create). Il est aussi possible d'éditer directement le fichier service.xml.

Si aucune configuration spécifique n’a été définie alors la configuration par défaut s’applique à la mise en oeuvre de cette source de données.

Par ailleurs il est possible de définir certains paramètres lors de l’appel (via findAddressOptions). Ainsi la valeur concrète que prend un paramètre (comme par exemple discrepancy) peut provenir (dans l’ordre) :

  • de l’appel si il est affecté dans findAddressOptions (cette affectation est optionnelle)
  • de la valeur indiquée au niveau de la configuration de datasource particulière (si une configuration de datasource particulière a été définie)
  • de la valeur indiquée au niveau de la configuration de datasource par défaut (default-datasource).

Configuration détaillée d’une source de données

Il est possible de définir la configuration de mise en oeuvre d’un référentiel de manière très détaillée.

Cette définition peut répondre à des besoins particuliers, elle n’est pas indispensable car la configuration par défaut convient pour la grande majorité des cas.

Certains paramètres sont définissables au moment de l’appel, d’autres sont fixés à la création de l’instance de source de données et non modifiables par la suite.

Les paramètres que l’on peut définir aussi au moment de l’appel seront décrits dans la section FindAddressOptions.

Datasource identification

Cette partie permet l’identification d’une source de données dans l’administration.

File : référentiel de géocodage utilisé. Elle est contenue dans %geoconcept%/ugc/reftables ou dans un sous-répertoire.

Name : alias de nom de la source de données (optionnel).

Publication information

Cette partie permet d’ajouter des informations sur la source de données.

Title : un titre pour la source de données.

Abstract : contient une courte description de la source de données.

Online ressource : lien HTTP donnant plus d’informations sur la source de données.

Reference table settings

Version : version du référentiel.

Zone meaning : sens de l’attribut "zone" de l’adresse. Exemple : Code postal.

UniqueId meaning : sens de l’identifiant de recherche uniqueId.

SecondaryZone meaning : sens de l’attribut secondaryZone de l’adresse. Exemple : Code IRIS.

StreetSectionId meaning : sens de l’attribut streetSectionId de l’adresse. Exemple : PID navteq.

Coordinate system : identifiant du système de coordonnées de référence pour la publication (cf norme OpenGIS).

Country : pays concerné.

Bounds : rectangle d’encombrement des données du référentiel

Run time settings

Cache : activation ou non du cache. Ce cache permet de garder en mémoire des villes du référentiel.

Max Cache Mem Size est utilisé uniquement si le cache est actif. Taille de la mémoire réservé pour le cache en Ko.

Min processors : nombre initial d’instances de géocodage.

Max processors : nombre maximum d’instances de géocodage.

Finder general settings

City scoring method : méthode de calcul à utiliser pour le score de la ville :

  • Standard : rapide mais moins précis. Recommandé pour une utilisation de type batch,
  • Levenshtein : moins rapide mais plus précis. Recommandé pour une utilisation de type saisie d’adresse en ligne.

Street scoring method : méthode de calcul à utiliser pour le score de la rue :

  • Standard : rapide mais moins précis. Utilisation non recommandé,
  • Levenshtein : moins rapide mais plus précis. Recommandé pour une utilisation de type saisie d’adresse en ligne ou batch.

Min streets : nombre de rues minimum pour qu’une ville soit considérée comme couverte. Utilisé pour la tolérance à la vill ( FindAddressResults.TOLERATE_TYPE_CITY ).

Stratégie de recherche :

Pour plus de détail sur les stratégies de recherche, se reporter au manuel d’utilisation de Universal Geocoder

Finder request defaults settings

Max candidates : nombre maximum de résultats renvoyés par un géocodage. Voir FindAddressOptions.candidateCount.

Score threshold : score au-delà duquel les résultats du géocodage sont conservés. Voir FindAddressOptions. ScoreThreshold.

Score threshold : seuil de proposition de candidats de type « rue ». Voir FindAddressOptions. ScoreThreshold.

Find type : type de géocodage souhaité. Voir FindAddressOptions.geocodingType.

Tolerate geocoding type : tolérance de géocodage souhaitée. Voir FindAddressOptions.tolerateGeocodingType.

Max meter error : erreur de placement maximale (en mètres) pour considérer un géocodage à la rue comme un géocodage au numéro. Voir FindAddressOptions.maxMeterError. Discrepency : décalage latéral. Voir FindAddressOptions.discrepency.

Discrepancy along street : décalage longitudinal. Voir FindAddressOptions.discrepency.

Favor city match element : orienter la recherche de la ville avec un élément descriptif de la ville. Voir FindAddressOptions.favorCityMatchElement.

Zone match digits : prise en compte de n premiers caractères de l’attribut zone de l’adresse. Voir FindAddressOptions.zoneMatchDigits.

Tests / Troubleshooting pour AXIS 1.4

Vérifier le bon chargement de l’adaptateur de ressource au démarrage de Tomcat. Vous pouvez utiliser la webapp ugc-admin pour valider l’installation.

Dans le cas de l’utilisation du Web Service, vérifier la présence du service AddressFinder dans axis :

Tests / Troubleshooting pour AXIS 1.4
gcweb-reference-img/guide-reference-ugc/ugc-guide-reference6.png

Interface JAVA

Lorsque le fournisseur est utilisé directement à l’intérieur de la plate-forme java (via des objets java simples ou « POJO »), l’appel prend la forme suivante :

  • récupération d’une connection au fournisseur via JNDI
  • appel de la fonction findAddress

La fonction findAddress a la forme simplifiée suivante :

FindAddressResults findAddress(Address, FindAddressOptions);

C’est à dire que l’appel prend en entrée une adresse et des options et renvoie en sortie un certain nombre de candidats.

La décomposition précise est donnée ci-après.

Package com.geoconcept.ugc.service

Class CodingProvider

Méthode getConnection :

Cette méthode permet d’ouvrir une connexion sur le fournisseur de géocodage. Une connexion doit être par la suite fermée par sa méthode Close.

Prototype :

Connection getConnection() throws ResourceException;

Valeur retournée :

Connexion sur le fournisseur de service de géocodage.

Class Connection

Méthode findAddress :

Cette méthode permet de géocoder une adresse avec d'éventuelles options de géocodage.

Prototype

FindAddressResults findAddress(Address address, FindAddressOptions options)

throws InvalidDataSourceException , InternalErrorException;

Paramètre Description

address Adresse à géocoder

options Options de géocodage

Valeur retournée

Liste résultat du géocodage.

Package com.geoconcept.common.geo

class Location

Cette classe contient les coordonnées trouvées lors d’un géocodage.

Membres

Type Nom Description

double

x

Coordonnées X

double

y

Coordonnées Y

String

coordinateSystem

Identifiant de système de coordonnées. Identifiant "SRS" ("Spatial Reference System") de Web Map Service. Voir la norme OpenGIS.

Package com.geoconcept.ugc

class Address

Cette classe contient la description d’une adresse.

Membres

Type Nom Description

String

addressLine

Concaténation du numéro, du type de voie et du nom de la voie. Exemple : 25 rue de Tolbiac

String

zone

Code de la ville(exemple : le code postal avec 75013)

String

cityName

Nom de la ville (exemple : Paris)

String

uniqueId

Code unique { ville, zone } de recherche (exemple : 75113000)

String

secondaryZone

Code secondaire de l’adresse (exemple : le code INSEE, le code IRIS…)

String

StreetSectionId

Identifiant de tronçon (non utilisé pour l’instant)

class FindAddressOptions

Cette classe contient le paramétrage d’un géocodage.

Tous les éléments, à part dataSourceName sont optionnels. Si ils ne sont pas affectés ils prennent leur valeur par défaut qui est optimale dans la grande majorité des cas.

Type Nom Description

String

dataSourceName

Nom de la source de données défini dans l’administrateur à utiliser pour les options de géocodage

short

candidateCount

Nombre maximum de résultats à renvoyer lors du géocodage

String

findType

Type de géocodage souhaité. Il existe trois types de géocodage : à la ville (FindAddressResults.FIND_TYPE_CITY), à la rue (FindAddressResults.FIND_TYPE_STREET) , au numéro (FindAddressResults.FIND_TYPE_STREET_NUMBER )

String

tolerateFindType

Cette propriété permet de fixer et d’obtenir la valeur cumulée des géocodages tolérés. Il existe trois niveaux de tolérance :
- à la ville (FindAddressResults.TOLERATE_TYPE_CITY) dans le cas où la rue n’a pu être trouvée et que la ville n’est pas couverte (nombre de rues de cette ville non significatif dans la table de référence),
- à la rue (FindAddressResults.TOLERATE_TYPE_STREET) dans le cas où le numéro demandé n’a pu être trouvé,
- au numéro estimé(FindAddressResults.TOLERATE_TYPE_STREET_ENHANCE), si le numéro n’a pu être trouvé et que l’erreur du placement n’excède pas la valeur de "maxMeterError".
Les tolérances sont des "flags" que l’on peut cumuler. Par exemple, si l’on tolère ces trois catégories, on fixe un numéro de tolérance à 7, tandis qu’une tolérance uniquement à la ville correspond à une tolérance de valeur 1. Le tableau suivant récapitule les possibilités existantes :

long

maxMeterError

Erreur de placement maximale (en mètres) pour considérer un géocodage à la rue comme un géocodage au numéro. Le type de géocodage dépend donc de la longueur d’une rue,

double

discrepency

Décalage orthogonal (en mètres) à la rue trouvée à appliquer. Ceci permet de ne pas placer l’adresse géocodée sur le milieu de la voie

double

discrepancyAlongStreet

Décalage longitudinal (en mètres) à appliquer. Ceci permet de ne pas placer l’adresse géocodée sur un carrefour

long

favorCityMatchElement

Permet d’améliorer la recherche de la ville en spécifiant l'élément de la ville (le nom de la ville, le code de la ville ou le code unique de la ville dont on est certain de la nature des données. L’affectation de cette valeur dépend donc de l’adresse à géocoder. Trois valeurs sont possibles : le nom de la ville (FindAddressResults.FAVOR_CITY_NAME), le code de la ville (FindAddressResults.FAVOR_ZONE), le code unique de la ville (FindAddressResults.FAVOR_UNIQUE_ID )

long

zoneMatchDigits

Permet de fixer le nombre de caractères à utiliser pour l’appariement entre le code de la ville stockée dans la table de référence et celui passé en paramètre de géocodage. Une valeur peut être spécifiée uniquement si le membre favorCityMatchElement est différent de (FindAddressResults.FAVOR_ZONE), il faut utiliser l’intégralité du code postal.

int

scoreThreshold

Score minimal des propositions du géocodeur à retenir

int

scoreThreshold
ToTolerateStreet
GeocodingType

Défini un score minimum pour que des candidats de type « rue » soient renvoyés. Si aucune rue n’atteint ce seuil, alors la commune sera retournée comme candidat

String

coordinateSystem

Défini le Système de référence pour des coordonnées à retourner

Class FindAddressResults

Classe qui contient les résultats d’un géocodage, classés par score.

Membres

Type Nom Description

FindAddressResult[]

results

Tableau de candidats trouvés

int

matchType

Type de géocodage effectué

Constantes

Type Nom Valeur Description

int

FIND_MATCH_TYPE_CITY

1

Type de géocodage demandé : l’adresse doit être géocodée à la ville

int

FIND_MATCH_TYPE_STREET

2

Type de géocodage demandé : l’adresse doit être géocodée à la rue

int

FIND_MATCH_TYPE_STREET_NUMBER

3

Type de géocodage demandé : l’adresse doit être géocodée au numéro de rue

int

FOUND_MATCH_TYPE_CITY

1

Type de géocodage résultat : l’adresse a été géocodée à la ville

int

FOUND_MATCH_TYPE_STREET

2

Type de géocodage résultat : l’adresse a été géocodée à la rue

int

FOUND_MATCH_TYPE_STREET_ENHANCED

3

Type de géocodage résultat : l’adresse a été géocodée au numéro de rue approché

int

FOUND_MATCH_TYPE_STREET_NUMBER

4

Type de géocodage résultat : l’adresse a été géocodée au numéro de rue exact

int

TOLERATE_TYPE_CITY

1

Tolérance du géocodage à la ville

int

TOLERATE_TYPE_STREET

2

Tolérance du géocodage à la rue

int

TOLERATE_TYPE_STREET_ENHANCED

4

Tolérance du géocodage au numéro estimé

int

FAVOR_CITY_NAME

1

Oriente la recherche de la ville à géocoder avec le nom de la ville

int

FAVOR_ZONE

2

Oriente la recherche de la ville à géocoder avec le code de la ville

int

FAVOR_UNIQUE_ID

3

Oriente la recherche de la ville à géocoder avec le code unique de la ville

class FindAddressResult

Classe qui contient le résultat d’un géocodage.

Membres

Type Nom Description

Address

address

Adresse trouvée

Location

location

Coordonnées trouvées

double

score

Score de ressemblance attribué entre l’adresse à géocoder et l’adresse trouvée. Varie entre 0 ( aucune ressemblance ) et 1 ( adresse exacte )

int

type

Type de géocodage trouvée. Les valeurs possibles sont :
- FindAddressResults.FOUND_MATCH_TYPE_CITY
- FindAddressResults.FOUND_MATCH_TYPE_STREET
- FindAddressResults.FOUND_MATCH_TYPE_STREET_ENHANCED
- FindAddressResults.FOUND_MATCH_TYPE_STREET_NUMBER

Utilisation

Principe d’utilisation

Pour réaliser un géocodage il faut effectuer les opérations suivantes :

  • Connection au fournisseur de service de géocodage,
  • Construction de l’adresse à géocoder,
  • Construction des options de géocodage,
  • Exécution du géocodage,
  • Exploitation du résultat,
  • Déconnexion du fournisseur de service de géocodage.

Exemple

Connection au fournisseur de service de géocodage

import com.geoconcept.ugc.service.CodingProvider;
import com.geoconcept.ugc.service.Connection;

/*
*Open a connection on the geocoding server
*/
public Connection getConnection() throws Exception
{
        Connection connection = null;
        try
        {
                // get context
                Context initCtx = new InitialContext();
                Context envCtx = (Context) initCtx.lookup("java:comp/env");

                // retrieves the geocoding server form the logical name
                CodingProvider codingProvider = (CodingProvider) envCtx.lookup("geoconcept/ugc/default");
                connection = codingProvider.getConnection();
        }
        catch (Exception e) { e.printStackTrace(); }
        return connection;
}

Construction de l’adresse à géocoder

import com.geoconcept.ugc.Address;

/*
*Construct an adress to geocode
*@param  addressLine address number + address  way type + address  way name. Sample : "25 rue de Tolbiac"
*@param   zone adress sone. Sample : "75013"
*@param  cityName city name. Sample : "Paris"
*@param  uniqueId city unique identifier. Sample : "75113000"
*
*/
public Address getAddressToGeocode(String  addressLine, String  zone,String cityName,String uniqueId)
throws Exception
{
        Address address = new Address();
        address.addressLine = addressLine;
        address.zone = zone;
        address.cityName = cityName;
        address.uniqueId = uniqueId;
        return  address;
}

Construction des options de géocodage

import com.geoconcept.ugc.FindAddressOptions;

/*
*Retrieves geocoding options from the data source defined in administration
*@param  datasource Name of a data source
*/
public FindAddressOptions  getOptions(String datasource) throws Exception
{
        FindAddressOptions options = new com.geoconcept.ugc.FindAddressOptions("myDataSource");
     return  options;
}

Exécution du géocodage

import com.geoconcept.ugc.service.Connection;
import com.geoconcept.ugc.Address;
import com.geoconcept.ugc.FindAddressOptions;
import com.geoconcept.ugc.FindAddressResults;

/*
*Launch geocode process and retrieves results
*@param  connection Connection to the geocode server
*@param  address Address to geocode
*@param   options Geocoding options
*/
public FindAddressResults  findGeocode(Connection connection, Address address , FindAddressOptions options) throws Exception
{
        FindAddressResults findAddressResults  = connection.findAddress(address, options);
        return  findAddressResults;
}

Exploitation du résultat

import com.geoconcept.ugc.FindAddressResults;
import com.geoconcept.ugc.FindAddressResult;
/*
*Browse geocoding results and display result
*@param  findAddressResults  Results of geocode process
*/
public void displayResult(FindAddressResults findAddressResults) throws Exception
{
        // if at least one found result
        if (findAddressResults.results.length > 0)
        {
                // Display colunm name
                system.out.println("Found results : ");
                system.out.println( "N°"+ "\t"
                                + "Geocoding Type"+ "\t"
                                + "Score"+ "\t"
                                + "Address line"+ "\t"
                                + "Zone"+ "\t"
                                + "City Name"+ "\t"
                                + "City Unique Identifier"+ "\t"
                                + "Adress Secondary Zone"+ "\t"
                                + "Coordinates (Coordinates System)");

                // For each found results
                for (int i = 0; i < findAddressResults.results.length; i++)
                {
                // get next found result
                       FindAddressResult findAddressResult = found.results[i];

                String  coordinateSystem = null;
                if (findAddressResult.location.coordinateSystem != null)
                {
                        coordinateSystem = findAddressResult.location.coordinateSystem;
                }
                else
                        coordinateSystem = "(Unknown)";

                        // Display result
                system.out.println( i + "\t"
                                + findAddressResult.address.type + "\t"
                                + findAddressResult.address.score + "\t"
                                + findAddressResult.address.addressLine + "\t"
                                + findAddressResult.address.zone + "\t"
                                + findAddressResult.address.cityName + "\t"
                                + findAddressResult.address.uniqueId + "\t"
                                + findAddressResult.address.secondaryZone + "\t"
                                + findAddressResult.location.x + ","+ findAddressResult.location.y
                                + "( + coordinateSystem + ")");
                }
        }
        else
        {
                system.out.println("No found result.");
        }
}

Déconnexion du fournisseur de service de géocodage

import com.geoconcept.ugc.FindAddressResult;
import com.geoconcept.ugc.service.Connection;
/*
*Disconnection of the geocode server
*@param  connection  Connection to the geocode server
*/
public void closeConnection(Connection connection) throws Exception
{
         connection.close();
}

Exemple complet

import com.geoconcept.ugc.service.CodingProvider;
import com.geoconcept.ugc.service.Connection;
import com.geoconcept.ugc.Address;
import com.geoconcept.ugc.FindAddressOptions;
import com.geoconcept.ugc.FindAddressResults;
public void geocodingSample()
{
        try
        {
                // Open connection
                Connection connection = getConnection();
                // Construct the address to geocode
                Address address = getAddressToGeocode("25 rue de Tolbiac","75013","Paris","");
                // retrieves geocode options
                FindAddressOptions options = getOptions("myDataSource");
                // launch geocode process
                FindAddressResults findAddressResults = findGeocode(connection, address , options);
                // print geocoding result.
                displayResult(findAddressResults);
                // disconnection
                closeConnection(connection);
        }
        catch(Exception e)
        {
                // geocoding problem
        }
}