Question

Soi-disant, il est possible de l'obtenir à partir de Google Maps ou d'un tel service. (Les adresses américaines ne suffisent pas.)

Était-ce utile?

La solution

Le terme que vous recherchez est géocodage et oui, Google fournit ce service.

Autres conseils

En plus du service Web de géocodage de Google , il existe également un service concurrent fourni par Yahoo . Dans un projet récent où le géocodage est effectué avec une interaction utilisateur, j'ai inclus le support pour les deux. La raison en est que j’ai découvert que, particulièrement à l’extérieur des États-Unis, leur traitement des lieux les plus obscurs varie considérablement. Parfois, Google aura la meilleure réponse, parfois Yahoo.

Il faut savoir: si Google pense vraiment qu'il ne sait pas où se trouve votre maison, il renverra une erreur 602 indiquant un échec. Yahoo, en revanche, s'il peut extraire une ville / province / état / etc. de votre adresse fictive, le site du centre de cette ville sera renvoyé. Donc, vous devez faire attention aux résultats que vous obtenez pour voir s'ils correspondent vraiment à ce que vous voulez. Certains résultats, dans certains résultats, contiennent des champs auxiliaires: Yahoo appelle ce champ "précision". et Google l'appelle "précision".

Si vous voulez faire cela sans faire appel à un service, téléchargez le Fichiers de formes TIGER du recensement des États-Unis.

Vous regardez dans la rue qui vous intéresse, qui comportera plusieurs segments. Chaque segment aura une adresse de début et une adresse de fin, et vous interpolerez le long du segment pour trouver où se trouve le numéro de votre rue.

Ceci vous fournira une paire lon / lat.

Gardez toutefois à l'esprit que les services en ligne utilisent beaucoup de vérification et de correction d'adresse, qu'il vous faudrait également dupliquer pour obtenir de bons résultats.

Notez également que les données gratuites sont intéressantes, mais qu’elles ne sont pas parfaites. Les dernières rues ne s'y trouvent pas (elles sont peut-être dans les données utilisées par Google), et les rues peuvent être légèrement décalées par rapport à leur emplacement réel, en raison: inexactitudes d'enquête. Mais pour 98% des besoins en géocodage, il fonctionne parfaitement, est gratuit et vous contrôlez tout pour réduire les dépendances dans votre application.

Openstreetmaps a pour objectif de tout cartographier dans le monde, bien qu’ils ne soient pas encore au point, il vaut la peine de les surveiller car ils fournissent leurs données sous licence CC

Cependant, de nombreux (la plupart?) autres pays ne sont cartographiés que par le gouvernement ou les services pour lesquels vous devez payer des frais. Si vous n'avez pas besoin de géocoder beaucoup de données, utiliser Google, Yahoo ou certains des autres services de cartographie gratuits dans le monde peut suffire.

Si vous devez géocoder de nombreuses données, vous aurez tout intérêt à louer des données cartographiques d’un grand fournisseur, tel que teleatlas.

-Adam

Vous pouvez aussi essayer le OpenStreetMap NameFinder , qui contient des données de rue en code source open source de type wiki pour (potentiellement) le monde entier. NameFinder cessera d’exister à la fin du mois d’août, mais Nominatim le remplace.

Google vous oblige à afficher une carte Google avec ses données, avec un maximum de 2,5 000 requêtes HTTP (était de 25 000 requêtes) par jour. Utile mais il faut surveiller l'utilisation.

Ils ont

http://groups.google.com/group/Google-Maps-API/web/resources-non-google-geocoders

(Google a depuis supprimé cette information. Si vous voyez un doublon ou un cache, je créerai un lien vers celui-ci.)

... dans lequel j’ai trouvé GeoNames , qui propose à la fois une base de données téléchargeable, un service Web gratuit et un service Web commercial.

Les conditions d'utilisation de Google vous permettent d'utiliser son API de géocodage gratuitement si votre site Web est à son tour gratuit pour les consommateurs. Sinon, vous devrez obtenir une licence pour Enterprise Maps.

À utiliser avec Drupal et PHP (et facilement modifié):

function get_lat_long($address) {
  $res = drupal_http_request('http://maps.googleapis.com/maps/api/geocode/json?address=' . $address .'&sensor=false');
  return json_decode($res->data)->results[0]->geometry->location;
}

Vous pouvez consulter la documentation de l'API Google Maps ici pour commencer:

http://code.google.com/apis/maps /documentation/services.html#Geocoding

Il semble également que vous puissiez utiliser les cartes Live Maps pour les adresses internationales:

http://virtualearth.spaces.live.com/blog /cns!2BBC66E99FDCDB98!1588.entry

Vous pouvez également le faire avec les services Web MapPoint de Microsoft.

Voici un article de blog qui explique comment: http://www.codestrider.com/BlogRead. aspx? b = b5e8e275-cd18-4c24-b321-0da26e01bec5

Code R permettant d'obtenir la latitude et la longitude d'une adresse municipale

# CODE TO GET THE LATITUDE AND LONGITUDE OF A STREET ADDRESS WITH GOOGLE API
addr <- '6th Main Rd, New Thippasandra, Bengaluru, Karnataka'  # set your address here
url = paste('http://maps.google.com/maps/api/geocode/xml?address=', addr,'&sensor=false',sep='')  # construct the URL
doc = xmlTreeParse(url) 
root = xmlRoot(doc) 
lat = xmlValue(root[['result']][['geometry']][['location']][['lat']]) 
long = xmlValue(root[['result']][['geometry']][['location']][['lng']]) 
lat
[1] "12.9725020"
long
[1] "77.6510688"

Si vous voulez faire cela en Python:

import json, urllib, urllib2

address = "Your address, New York, NY"

encodedAddress = urllib.quote_plus(address)
data = urllib2.urlopen("http://maps.googleapis.com/maps/api/geocode/json?address=" + encodedAddress + '&sensor=false').read()
location = json.loads(data)['results'][0]['geometry']['location']
lat = location['lat']
lng = location['lng']
print lat, lng

Notez que Google semble limiter les demandes s'il en détecte plus qu'un certain montant. Vous souhaitez donc utiliser une clé API dans votre requête HTTP.

J'avais un lot de 100 000 enregistrements à géocoder et à respecter les limites de l'API Google (et comme il s'agissait d'une application d'entreprise interne, nous avons dû passer à leur service premium, ce qui représente plus de 10 000 USD).

Alors, j’ai utilisé cela à la place: http://geoservices.tamu.edu/Services/ Géocode / BatchProcess / - ils ont également une API. (le coût total était d'environ 200 $)

Vous pouvez essayer ceci en JavaScript pour une ville comme kohat

var geocoder = new google.maps.Geocoder();
var address = "kohat";
geocoder.geocode( { 'address': address}, function(results, status) {
var latitude = results[0].geometry.location.lat();
var longitude = results[0].geometry.location.lng();
alert(latitude+" and "+longitude);
  } 
});

 entrer la description de l'image ici

En python, geopy PyPI est utilisé pour obtenir la lattitude, la langue, le code postal, etc. Voici l'exemple de code de travail.

from geopy.geocoders import Nominatim

geolocator = Nominatim(user_agent="your-app-id")

location = geolocator.geocode("Your required address ")

if location:
    print('\n Nominatim ADDRESS :',location.address)
    print('\n Nominatim LATLANG :',(location.latitude, location.longitude))
    print('\n Nominatim FULL RESPONSE :',location.raw)
else:
   print('Cannot Find')

Dans Nominatim : certaines adresses ne peuvent pas fonctionner. Je viens d'essayer MapQuest .
Ça retourne correctement. Mapquest fournit 15 000 transactions / mois gratuites. C'est assez pour moi.

Exemple de code:

import geocoder
g = geocoder.mapquest("Your required address ",key='your-api-key')

for result in g:
   # print(result.address, result.latlng)
   print('\n mapquest ADDRESS :',result.address,result.city,result.state,result.country)
   print('\n mapquest LATLANG :', result.latlng)
   print('\n mapquest FULL RESPONSE :',result.raw)

J'espère que ça aide.

Je sais que c'est une vieille question, mais Google modifie sa méthode pour obtenir la latitude et la longitude de manière régulière.

code HTML

<form>
    <input type="text" name="address" id="address" style="width:100%;">
    <input type="button" onclick="return getLatLong()" value="Get Lat Long" />
</form>
<div id="latlong">
    <p>Latitude: <input size="20" type="text" id="latbox" name="lat" ></p>
    <p>Longitude: <input size="20" type="text" id="lngbox" name="lng" ></p>
</div>

Code JavaScript

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" async defer></script>

    <script>
    function getLatLong()
    {
        var address = document.getElementById("address").value;
        var geocoder = new google.maps.Geocoder();
        geocoder.geocode( { 'address': address}, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                var latitude = results[0].geometry.location.lat();
                document.getElementById("latbox").value=latitude;
                var longitude = results[0].geometry.location.lng();
                document.getElementById("lngbox").value=longitude;
            } 
        });
    }
    </script>

Pour plus d'informations, consultez ce lien . https://www.phpkida.com/java-script / get-latitude-longitude-from-address /

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top