Vous avez trouvé ce tutoriel intéressant ? Recommandez le en cliquant sur le bouton +1    

Géocodage inversé : Transformer des coordonnées GPS en adresse

Tutoriel publié le et mis à jour le
Tutoriel en Français

Le terme géocodage se réfère généralement à la transformation d'une adresse postale humainement lisible en ses coordonnées géographiques sur une carte (Latitude, Longitude). Le processus permettant de faire l'inverse, c'est à dire de transformer des coordonnées géographiques (Latitude, Longitude) en une adresse postale humainement compréhensible, est nommé géocodage inversé.

L'API Google Géocoding supporte le géocodage inversé grâce à l'utilisation directe du paramètre latlng.

Géocodeur inverse : Réponse au format JSON

Par exemple, la requête suivante contient les valeurs de latitude/longitude correspondant à un emplacement situé à Tours :

http://maps.googleapis.com/maps/api/geocode/json?latlng=47.393654,0.680525&sensor=true_OU_false

Important : dans la requête ci-dessus Le paramètre sensor a été laissé volontairement avec la variable true_OU_false afin de souligner que vous devez définir impérativement cette valeur de façon explicite sur true ou sur false. Assurez-vous également qu'aucun espace existe entre les latitude et longitude passées dans le paramètre latlng.

Voici la réponse au format JSON :

/**
 * Requête envoyée aux serveurs de Google :
 *
 * http://maps.googleapis.com/maps/api/geocode/json?latlng=47.393654,0.680525&sensor=false
 *
 * Ci-dessous la réponse retournée au format json :
 *
 */

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "25",
               "short_name" : "25",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Place du Grand Marché",
               "short_name" : "Place du Grand Marché",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Tours",
               "short_name" : "Tours",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Indre-et-Loire",
               "short_name" : "37",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Centre",
               "short_name" : "Centre",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "France",
               "short_name" : "FR",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "37000",
               "short_name" : "37000",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "25 Place du Grand Marché, 37000 Tours, France",
         "geometry" : {
            "location" : {
               "lat" : 47.39367390,
               "lng" : 0.6804578999999999
            },
            "location_type" : "ROOFTOP"
         },
         "types" : [ "street_address" ]
      },
      {
         "address_components" : [
            {
               "long_name" : "37000",
               "short_name" : "37000",
               "types" : [ "postal_code" ]
            },
            {
               "long_name" : "Tours",
               "short_name" : "Tours",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Indre-et-Loire",
               "short_name" : "37",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Centre",
               "short_name" : "Centre",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "France",
               "short_name" : "FR",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "37000 Tours, France",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 47.40392650,
                  "lng" : 0.7373837999999999
               },
               "southwest" : {
                  "lat" : 47.37170470,
                  "lng" : 0.66163560
               }
            },
            "location" : {
               "lat" : 47.38327450,
               "lng" : 0.68979660
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 47.40392650,
                  "lng" : 0.7373837999999999
               },
               "southwest" : {
                  "lat" : 47.37170470,
                  "lng" : 0.66163560
               }
            }
         },
         "types" : [ "postal_code" ]
      },
      {
         "address_components" : [
            {
               "long_name" : "Tours",
               "short_name" : "Tours",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Indre-et-Loire",
               "short_name" : "37",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Centre",
               "short_name" : "Centre",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "France",
               "short_name" : "FR",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "Tours, France",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 47.4395930,
                  "lng" : 0.73709490
               },
               "southwest" : {
                  "lat" : 47.3489420,
                  "lng" : 0.65278490
               }
            },
            "location" : {
               "lat" : 47.3941440,
               "lng" : 0.684840
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 47.4395930,
                  "lng" : 0.73709490
               },
               "southwest" : {
                  "lat" : 47.3489420,
                  "lng" : 0.65278490
               }
            }
         },
         "types" : [ "locality", "political" ]
      },
      {
         "address_components" : [
            {
               "long_name" : "Indre-et-Loire",
               "short_name" : "37",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Centre",
               "short_name" : "Centre",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "France",
               "short_name" : "FR",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "Indre-et-Loire, France",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 47.7098680,
                  "lng" : 1.3660490
               },
               "southwest" : {
                  "lat" : 46.7367140,
                  "lng" : 0.0527370
               }
            },
            "location" : {
               "lat" : 47.28949249999999,
               "lng" : 0.8160970
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 47.7098680,
                  "lng" : 1.3660490
               },
               "southwest" : {
                  "lat" : 46.7367140,
                  "lng" : 0.0527370
               }
            }
         },
         "types" : [ "administrative_area_level_2", "political" ]
      },
      {
         "address_components" : [
            {
               "long_name" : "Centre",
               "short_name" : "Centre",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "France",
               "short_name" : "FR",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "Centre, France",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 48.9410290,
                  "lng" : 3.128410
               },
               "southwest" : {
                  "lat" : 46.3469060,
                  "lng" : 0.0527370
               }
            },
            "location" : {
               "lat" : 47.75156860,
               "lng" : 1.67506310
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 48.9410290,
                  "lng" : 3.128410
               },
               "southwest" : {
                  "lat" : 46.3469060,
                  "lng" : 0.0527370
               }
            }
         },
         "types" : [ "administrative_area_level_1", "political" ]
      },
      {
         "address_components" : [
            {
               "long_name" : "France",
               "short_name" : "FR",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "France",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 51.12420,
                  "lng" : 9.66250
               },
               "southwest" : {
                  "lat" : 41.32530000000001,
                  "lng" : -5.55910
               }
            },
            "location" : {
               "lat" : 46.2276380,
               "lng" : 2.2137490
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 51.12420,
                  "lng" : 9.66250
               },
               "southwest" : {
                  "lat" : 41.32530000000001,
                  "lng" : -5.55910
               }
            }
         },
         "types" : [ "country", "political" ]
      }
   ],
   "status" : "OK"
}

Cliquez sur le lien ci-desssous pour voir le résultat dans votre navigateur :

http://maps.googleapis.com/maps/api/geocode/json?latlng=47.393654,0.680525&sensor=false

Notez que le géocodage inversé retourne plusieurs résultats. Les résultats "formatted_addresses" ne sont pas seulement des adresses postales, mais également tous les moyens permettant de nommer un emplacement géographique.

Par exemple, lors du géocodage d'un point dans la ville de Tours, le point géocodé peut être désigné par :

  • une adresse postale,
  • le nom de la ville (Tours),
  • le nom de la région (Centre)
  • le nom du pays (France).

Tous sont des "adresses" pour le géocodeur. Le géocodage inverse retourne un de ces types de résultats valables.

Le géocodage inversé correspond à des entités politiques (pays, provinces, villes et quartiers), d'adresses et codes postaux.

La liste complète des valeurs "formatted_address" renvoyées par la requête précédente est affichée ci-dessous :

"formatted_address" : "25 Place du Grand Marché, 37000 Tours, France",
"formatted_address" : "37000 Tours, France",
"formatted_address" : "Tours, France",
"formatted_address" : "Indre-et-Loire, France",
"formatted_address" : "Centre, France",
"formatted_address" : "France",

Généralement, les adresses sont retournées dans l'ordre suivant : de la plus précise à la moins précise; l'adresse la plus précise est le résultat le plus important, comme dans notre exemple. Notez que Google retourne différents types d'adresses, de l'adresse de rue la plus précise, aux entités politiques spécifiques telles que les quartiers, villes, comtés, états, etc. Si vous souhaitez faire correspondre une adresse plus générale, vous pouvez inspecter les "types" des "Placemark" retournés. (Voir ci-dessus les types de composants adresse.)

Remarque : le géocodage inversé fourni une estimation. Le géocodeur tentera de trouver l'adresse postale la plus proche avec une certaine tolérance. Si aucune correspondance n'est trouvée, le géocodeur retournera aucun résultat.

Géocodeur inverse : Réponse au format XML

La requête suivante est identique à la précédente, la seule différence se situe au niveau du format de la réponse demandée (ici XML) :

http://maps.googleapis.com/maps/api/geocode/xml?latlng=47.393654,0.680525&sensor=true_OU_false

Important : dans la requête ci-dessus Le paramètre sensor a été laissé volontairement avec la variable true_OU_false afin de souligner que vous devez définir impérativement cette valeur de façon explicite sur true ou sur false. Assurez-vous également qu'aucun espace existe entre les latitude et longitude passées dans le paramètre latlng.

Voici la réponse au format XML :

/**
 * Requête envoyée aux serveurs de Google :
 *
 * http://maps.googleapis.com/maps/api/geocode/xml?latlng=47.393654,0.680525&sensor=false
 *
 * Ci-dessous la réponse retournée au format xml :
 *
 */

<?xml version="1.0" encoding="UTF-8"?>
<GeocodeResponse>
	<status>OK</status>
	<result>
		<type>street_address</type>
		<formatted_address>25 Place du Grand Marché, 37000 Tours, France</formatted_address>
		<address_component>
			<long_name>25</long_name>
			<short_name>25</short_name>
			<type>street_number</type>
		</address_component>
		<address_component>
			<long_name>Place du Grand Marché</long_name>
			<short_name>Place du Grand Marché</short_name>
			<type>route</type>
		</address_component>
		<address_component>
			<long_name>Tours</long_name>
			<short_name>Tours</short_name>
			<type>locality</type>
			<type>political</type>
		</address_component>
		<address_component>
			<long_name>Indre-et-Loire</long_name>
			<short_name>37</short_name>
			<type>administrative_area_level_2</type>
			<type>political</type>
		</address_component>
		<address_component>
			<long_name>Centre</long_name>
			<short_name>Centre</short_name>
			<type>administrative_area_level_1</type>
			<type>political</type>
		</address_component>
		<address_component>
			<long_name>France</long_name>
			<short_name>FR</short_name>
			<type>country</type>
			<type>political</type>
		</address_component>
		<address_component>
			<long_name>37000</long_name>
			<short_name>37000</short_name>
			<type>postal_code</type>
		</address_component>
		<geometry>
			<location>
				<lat>47.3936739</lat>
				<lng>0.6804579</lng>
			</location>
			<location_type>ROOFTOP</location_type>
			<viewport>
				<southwest>
					<lat>47.3923249</lat>
					<lng>0.6791089</lng>
				</southwest>
				<northeast>
					<lat>47.3950229</lat>
					<lng>0.6818069</lng>
				</northeast>
			</viewport>
		</geometry>
	</result>
	<result>
		<type>postal_code</type>
		<formatted_address>37000 Tours, France</formatted_address>
		<address_component>
			<long_name>37000</long_name>
			<short_name>37000</short_name>
			<type>postal_code</type>
		</address_component>
		<address_component>
			<long_name>Tours</long_name>
			<short_name>Tours</short_name>
			<type>locality</type>
			<type>political</type>
		</address_component>
		<address_component>
			<long_name>Indre-et-Loire</long_name>
			<short_name>37</short_name>
			<type>administrative_area_level_2</type>
			<type>political</type>
		</address_component>
		<address_component>
			<long_name>Centre</long_name>
			<short_name>Centre</short_name>
			<type>administrative_area_level_1</type>
			<type>political</type>
		</address_component>
		<address_component>
			<long_name>France</long_name>
			<short_name>FR</short_name>
			<type>country</type>
			<type>political</type>
		</address_component>
		<geometry>
			<location>
				<lat>47.3832745</lat>
				<lng>0.6897966</lng>
			</location>
			<location_type>APPROXIMATE</location_type>
			<viewport>
				<southwest>
					<lat>47.3717047</lat>
					<lng>0.6616356</lng>
				</southwest>
				<northeast>
					<lat>47.4039265</lat>
					<lng>0.7373838</lng>
				</northeast>

			</viewport>
			<bounds>
				<southwest>
					<lat>47.3717047</lat>
					<lng>0.6616356</lng>
				</southwest>
				<northeast>
					<lat>47.4039265</lat>
					<lng>0.7373838</lng>
				</northeast>
			</bounds>
		</geometry>
	</result>
	<result>
		<type>locality</type>
		<type>political</type>
		<formatted_address>Tours, France</formatted_address>
		<address_component>
			<long_name>Tours</long_name>
			<short_name>Tours</short_name>
			<type>locality</type>
			<type>political</type>
		</address_component>
		<address_component>
			<long_name>Indre-et-Loire</long_name>
			<short_name>37</short_name>
			<type>administrative_area_level_2</type>
			<type>political</type>
		</address_component>
		<address_component>
			<long_name>Centre</long_name>
			<short_name>Centre</short_name>
			<type>administrative_area_level_1</type>
			<type>political</type>
		</address_component>
		<address_component>
			<long_name>France</long_name>
			<short_name>FR</short_name>
			<type>country</type>
			<type>political</type>
		</address_component>
		<geometry>
			<location>
				<lat>47.3941440</lat>
				<lng>0.6848400</lng>
			</location>
			<location_type>APPROXIMATE</location_type>
			<viewport>
				<southwest>
					<lat>47.3489420</lat>
					<lng>0.6527849</lng>
				</southwest>
				<northeast>
					<lat>47.4395930</lat>
					<lng>0.7370949</lng>


				</northeast>
			</viewport>
			<bounds>
				<southwest>
					<lat>47.3489420</lat>
					<lng>0.6527849</lng>
				</southwest>
				<northeast>
					<lat>47.4395930</lat>
					<lng>0.7370949</lng>
				</northeast>
			</bounds>
		</geometry>
	</result>
	<result>
		<type>administrative_area_level_2</type>
		<type>political</type>
		<formatted_address>Indre-et-Loire, France</formatted_address>
		<address_component>
			<long_name>Indre-et-Loire</long_name>
			<short_name>37</short_name>
			<type>administrative_area_level_2</type>
			<type>political</type>
		</address_component>
		<address_component>
			<long_name>Centre</long_name>
			<short_name>Centre</short_name>
			<type>administrative_area_level_1</type>
			<type>political</type>
		</address_component>
		<address_component>
			<long_name>France</long_name>
			<short_name>FR</short_name>
			<type>country</type>
			<type>political</type>
		</address_component>
		<geometry>
			<location>
				<lat>47.2894925</lat>
				<lng>0.8160970</lng>
			</location>
			<location_type>APPROXIMATE</location_type>
			<viewport>
				<southwest>
					<lat>46.7367140</lat>
					<lng>0.0527370</lng>
				</southwest>
				<northeast>
					<lat>47.7098680</lat>
					<lng>1.3660490</lng>
				</northeast>
			</viewport>
			<bounds>
				<southwest>
					<lat>46.7367140</lat>
					<lng>0.0527370</lng>
				</southwest>
				<northeast>
					<lat>47.7098680</lat>
					<lng>1.3660490</lng>
				</northeast>
			</bounds>
		</geometry>
	</result>
	<result>
		<type>administrative_area_level_1</type>
		<type>political</type>
		<formatted_address>Centre, France</formatted_address>
		<address_component>
			<long_name>Centre</long_name>
			<short_name>Centre</short_name>
			<type>administrative_area_level_1</type>
			<type>political</type>
		</address_component>
		<address_component>
			<long_name>France</long_name>
			<short_name>FR</short_name>
			<type>country</type>
			<type>political</type>
		</address_component>
		<geometry>
			<location>
				<lat>47.7515686</lat>
				<lng>1.6750631</lng>
			</location>
			<location_type>APPROXIMATE</location_type>
			<viewport>
				<southwest>
					<lat>46.3469060</lat>
					<lng>0.0527370</lng>
				</southwest>
				<northeast>
					<lat>48.9410290</lat>
					<lng>3.1284100</lng>
				</northeast>
			</viewport>
			<bounds>
				<southwest>
					<lat>46.3469060</lat>
					<lng>0.0527370</lng>
				</southwest>
				<northeast>
					<lat>48.9410290</lat>
					<lng>3.1284100</lng>
				</northeast>
			</bounds>
		</geometry>
	</result>
</GeocodeResponse>

Cliquez sur le lien ci-desssous pour voir le résultat dans votre navigateur :

http://maps.googleapis.com/maps/api/geocode/xml?latlng=47.393654,0.680525&sensor=false

Attention :

Afin de pouvoir utiliser les API de Google, JavaScript doit être activé sur votre navigateur.

Or, il semble que JavaScript est désactivé ou qu'il n'est pas supporté par votre navigateur.

Pour afficher Google Maps, activez JavaScript en modifiant les options de votre navigateur, puis rafraîchissez la page.