Référentiel précis France et Monde
Traitement de gros volumes d’adresses ponctuel ou par batch
Géocodage jusqu’à l’IRIS (France uniquement)
Qu’est-ce que le géocodage ?
Le géocodage est le processus qui permet de transformer des adresses postales en coordonnées géographiques (latitude et longitude).
Ainsi le géocodage de : 149 avenue du Général de Gaulle, 37230 Fondettes retournera 47.396635, 0.645589
Fonctionnement de l’API de Géocodage Articque
Exemple de requête et de réponse
En se basant sur une architecture de type REST, l’API de géocodage permet de géocoder une adresse par un simple appel de l’url.
Géocodage FRANCE – Format d’une requête pour géocoder une adresse postale
http://geocodage.articque.com/api/france/token/adresse/codepostal/ville
- Token : la clé de votre API
- Adresse : le numéro suivi du type et du nom de la voie
- Codepostal : le code postal sur 5 chiffres
- Ville : le nom de la ville
Exemple de requête pour géocoder l’adresse « 12 rue nationale, 37000 Tours »
http://geocodage.articque.com/api/france/token/12+rue+nationale/37000/tours
La réponse à cette requête de géocodage est fournie ci-dessous, au format JSON :
{"adresse":"12+rue+nationale","code_postal":"37000","ville":"Tours","latitude":47.395949,"longitude":0.686797, "precision":"adresse","score":0.95894545454545}
Le résultat retourné contient les coordonnées géographiques de l’adresse (latitude et longitude) et des statistiques sur le niveau de précision du géocodage obtenu (« precision » et « score »)
Le champ « precision » contenu dans la réponse peut contenir les valeurs suivantes :
- « adresse » : le point est géolocalisé à son adresse exacte.
- « rue » : le point est géolocalisé à la rue.
- « commune » : le point est géolocalisé à la commune.
Géocodage MONDE – Format d’une requête pour géocoder une adresse postale :
http://geocodage.articque.com/api/france/token/adresse/codepostal/ville/etat/pays
- Token : la clé de votre API
- Adresse : le numéro suivi du type et du nom de la voie
- Codepostal : le code postal sur 5 chiffres
- Ville : le nom de la ville
- Etat : le nom de l’état du pays (exemple : Arizona) – champ optionnel
- Pays : le nom du pays
Exemple de requête pour géocoder l’adresse « 100 Aquarium Way, Long Beach, CA 90802, États-Unis »
http://geocodage.articque.com/api/france/token/100+aquarium+way/90802/Long+Beach/Californie/Etats-Unis
La réponse à cette requête de géocodage est fournie ci-dessous, au format JSON :
{"adresse":"100+aquarium+way","code_postal":"90802","ville":"Long Beach","latitude":38.914036,"longitude":-77.078538,"precision":"adresse","score":0.95894545454545}
Les différents types d’appel
1. Les appels synchrones
Le client attend la réponse du serveur pour envoyer la deuxième requête.
Temps de traitement moyen par adresse: 0.2 seconde
Exemple d’appel via un script PHP :
<?php ini_set('max_execution_time',60*10); header( 'Content-type: text/html; charset=utf-8' ); $token = 'token’; $baseurl = 'https://geocodage.articque.com/api/'.$token.'/'; $start = microtime(true); $outputfilename = 'synchrone-'.date('Y-m-d H-i-s').'.csv'; $i = 0;$found = 0; if (($handle = fopen("test_charge_100.csv", "r")) !== FALSE) { while (($row = fgetcsv($handle, 0, ";")) !== FALSE) { $i++; $result = json_decode(file_get_contents($baseurl.implode('/',array_map("urlencode",$row))),true); if(!array_key_exists('error',$result)) { file_put_contents($outputfilename,implode(';',array_map("urldecode",$result))."n", FILE_APPEND); } if($i%10 == 0) { echo $i.' adresses traitées -en '.(microtime(true)-$start).' secondes<br/>'; flush(); ob_flush(); } } fclose($handle); } $duration = (microtime(true)-$start); echo $i.' adresses traitées en '.$duration.' secondes<hr/>En moyenne par adresse : '.$duration/$i.' seconde'; ob_end_flush(); ?>
2. Les appels asynchrones
Le client envoi plusieurs requêtes en même temps.
Temps de traitement moyen par adresse: 0.07 seconde
Exemple d’appel via un script PHP :
<?php ini_set('max_execution_time',60*10); header( 'Content-type: text/html; charset=utf-8' ); $token = 'token’; $baseurl = 'https://geocodage.articque.com/api/'.$token.'/'; $start = microtime(true); $outputfilename = 'asynchrone-'.date('Y-m-d H-i-s').'.csv'; // D'abord, on récupère toutes les lignes du fichier $rows = array_map("trim", explode("n",file_get_contents("test_charge_100.csv"))); echo 'Récupération du fichier '.(microtime(true)-$start).' seconde<br/>'; flush(); ob_flush(); /*** * CURL MULTITHREAD */ $master = curl_multi_init(); // On traite les données 10 par 10 for($i=0; $i < count($rows); $i = $i + 10) { $running = null; $handles = array(); $srv_alt = false; for($j = $i; $j < min(count($rows),$i+10); $j++) { $ch = curl_init($baseurl.implode('/',array_map("urlencode",explode(';',$rows[$j])))); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, 0); curl_multi_add_handle($master, $ch); $handles[] = $ch; } echo 'Initialisation des appels de '.$i.' à '.$j.' -'.(microtime(true)-$start).' seconde<br/>'; flush(); ob_flush(); // Run the multi exec until it's over do { curl_multi_exec($master,$running); } while ($running > 0 );<br /> foreach($handles as $handle)<br /> {<br /> $result = json_decode(curl_multi_getcontent($handle),true);<br /> file_put_contents($outputfilename, implode(‘;’,array_map(« urldecode »,$result)). »n », FILE_APPEND);<br /> curl_multi_remove_handle($master,$handle);<br /> }</p> <p> echo $j.’ adresses traitées -en ‘.(microtime(true)-$start).’ secondes<br/>’;<br /> flush();<br /> ob_flush();<br /> }<br /> curl_multi_close($master);<br /> $duration = (microtime(true)-$start);<br /> echo $i.’ adresses traitées en ‘.$duration.’ secondes<br /> <hr/>En moyenne par adresse : ‘.$duration/$i.’ seconde’;<br /> ob_end_flush();<br /> ?>
Comment obtenir une clé d’API
Contactez-nous pour en savoir plus sur nos APIs ou pour obtenir votre clé de géocodage.
Nos tarifs sont transparents et sans surprise :
API de Géocodage Articque
990 € / an pour 1 million d’adresses
Vous avez besoin de géocoder 20 M d’adresses ?
Nous avons également la solution. Contactez-nous