Géolocalisation des missions

La géolocalisation des missions sur l'API permet d'utiliser les filtres de localisation afin de connaître les missions proches d'un lieu choisi, en France. Pour cela, il faut connaître la longitude et la latitude de l’adresse de la mission. Le traitement de l'API lors de l'importation consiste à récupérer ces valeurs si elles ne sont pas renseignées.

Champs de l'adresse

Les champs pris en compte lors de la géolocalisation de l'adresse sont les suivants:

Nom du champTypeDescription

country

String

Code du pays sur 2 lettre en majuscule, ex: “FR”

address

String

Adresse de la mission sans ville ni code postal, ex: "1 rue les trois cornières"

city

String

Nom de la ville de la mission, ex: “Mauron”

postalCode

String

Code postal de la mission, ex: “56430”

departmentCode

String

Département de la mission, ex: “56”

departmentName

String

Nom du département de la mission, ex: "Morbihan"

region

String

Région de la mission, ex: “Bretagne”

lonlat

Float[]

Longitude puis latitude de la mission séparées par une ",", ex : "-2.297475, 48.088759" (Attention à l’ordre! La longitude est en premier)

Procédure

Si la longitude et la latitude ne sont pas renseignées ou mal renseignées (valeurs fausses), l’API utilise l'api-adresse pour retrouver ces valeurs.

La mission est géolocalisée dans les cas où au moins l’un des champs address, city ou postalCode est renseigné.

La mission n’est pas géolocalisée si elle a déjà été géolocalisée une fois.

Géolocalisation

La géolocalisation est faite suivant le code simplifié suivant:

const q = `${mission.address} ${mission.postalCode} ${mission.city}`;
const url = encodeURI(`https://api-adresse.data.gouv.fr/search/?q=${q}&limit=1`);
const res = await fetch(url).then((response) => response.json());

Le premier résultat est récupéré afin de renseigner la localisation.

Exemple : localisation renseignée

<mission>
	{...}
	<address><![CDATA[1 rue les trois cornieres]]></address>
	<postalCode><![CDATA[56430]]></postalCode>
	<departmentCode><![CDATA[56]]></departmentCode>
	<departmentName><![CDATA[Morbihan]]></departmentName>
	<city><![CDATA[Mauron]]></city>
	<region><![CDATA[Bretagne]]></region>
	<country><![CDATA[FR]]></country>
	<lonlat><![CDATA[-2.297475,48.088759]]></lonlat>
<mission>

Aucune géolocalisation n'est effectuée ici car tous les champs sont renseignés.

Exemple : localisation manquante mais adresse + ville + code postal connus

<mission>
	{...}
	<address><![CDATA[1 rue les trois cornieres]]></address>
	<postalCode><![CDATA[56430]]></postalCode>
	<departmentCode><![CDATA[56]]></departmentCode>
	<city><![CDATA[Mauron]]></city>
	<region><![CDATA[Bretagne]]></region>
	<country><![CDATA[FR]]></country>
<mission>

L’adresse, la ville et le code postal sont connus, alors cette requête est envoyée :

GET <https://api-adresse.data.gouv.fr/search/?q=1%20rue%20les%20trois%20cornieres%2056430%20Mauron&limit=1>

La réponse récupérée est la suivante :

{
    "type": "Feature",
    "geometry": {
        "type": "Point",
        "coordinates": [
            -2.297475,
            48.088759
        ]
    },
    "properties": {
        "label": "1 Les 3 Cornieres 56430 Mauron",
        "score": 0.6043526573426573,
        "housenumber": "1",
        "id": "56127_b341_00001",
        "name": "1 Les 3 Cornieres",
        "postcode": "56430",
        "citycode": "56127",
        "x": 305874.02,
        "y": 6789712.68,
        "city": "Mauron",
        "context": "56, Morbihan, Bretagne",
        "type": "housenumber",
        "importance": 0.41711,
        "street": "Les 3 Cornieres"
    }
}

Exemple : localisation + adresse manquantes, mais ville + code postal connus

<mission>
	{...}
	<postalCode><![CDATA[56430]]></postalCode>
	<departmentCode><![CDATA[56]]></departmentCode>
	<city><![CDATA[Mauron]]></city>
	<region><![CDATA[Bretagne]]></region>
	<country><![CDATA[FR]]></country>
<mission>

Seuls la ville et le code postal sont connus, alors cette requête est envoyée :

GET <https://api-adresse.data.gouv.fr/search/?q=56430%20Mauron&limit=1>

La réponse récupérée est la suivante :

{
    "type": "Feature",
    "geometry": {
        "type": "Point",
        "coordinates": [
            -2.307683,
            48.090167
        ]
    },
    "properties": {
        "label": "Mauron",
        "score": 0.9407090909090908,
        "id": "56127",
        "type": "municipality",
        "name": "Mauron",
        "postcode": "56430",
        "citycode": "56127",
        "x": 305126.21,
        "y": 6789919.8,
        "population": 3145,
        "city": "Mauron",
        "context": "56, Morbihan, Bretagne",
        "importance": 0.3478,
        "municipality": "Mauron"
    }
}

On remarque que la longitude et latitude sont moins précises mais permettent toujours de géolocaliser la mission. Il en est de même si seul le code postal est renseigné.

Attention, si seule l’adresse ou la ville est renseignée il se peut qu’il y ait des doublons et donc que la géolocalisation choisie corresponde au mauvais doublon : le code postal est une valeur sûre.

Last updated