Domanda

Presumibilmente, è possibile ottenere questo da Google Maps o da alcuni di questi servizi. (Solo gli indirizzi statunitensi non sono abbastanza buoni.)

È stato utile?

Soluzione

Il termine che stai cercando è geocodifica e sì, Google offre questo servizio.

Altri suggerimenti

Oltre al suddetto servizio web di geocodifica di Google , esiste anche un in concorrenza fornito da Yahoo . In un recente progetto in cui la geocodifica viene eseguita con l'interazione dell'utente, ho incluso il supporto per entrambi. Il motivo è che ho scoperto che, soprattutto al di fuori degli Stati Uniti, la loro gestione di luoghi più oscuri varia notevolmente. A volte Google avrà la risposta migliore, a volte Yahoo.

Un aspetto da tenere presente: se Google pensa davvero di non sapere dove si trova il tuo posto, restituirà un errore 602 che indica l'errore. Yahoo, d'altra parte, se riesce a staccare una città / provincia / stato / ecc. Dal tuo indirizzo errato, restituirà la posizione del centro di quella città. Quindi devi prestare attenzione ai risultati che vedi per vedere se sono davvero quello che vuoi. Ci sono campi accessori in alcuni risultati che ti dicono questo: Yahoo chiama questo campo "precisione" e Google lo chiama "accuratezza".

Se vuoi farlo senza fare affidamento su un servizio, allora scarica il TIGER Shapefile dal censimento degli Stati Uniti.

Cerchi la strada che ti interessa, che avrà diversi segmenti. Ogni segmento avrà un indirizzo iniziale e un indirizzo finale e tu interpoli lungo il segmento per trovare dove si trova il tuo numero civico sul segmento.

Questo ti fornirà una coppia lon / lat.

Tieni presente, tuttavia, che i servizi online utilizzano una grande quantità di controllo e correzione degli indirizzi, che dovresti duplicare anche per ottenere buoni risultati.

Si noti inoltre che, per quanto i dati gratuiti siano belli, non sono perfetti: le ultime strade non sono presenti (potrebbero essere nei dati utilizzati da Google) e le strade potrebbero essere fuori dalla loro posizione reale di un certo importo a causa di inesattezze del sondaggio. Ma per il 98% delle esigenze di geocodifica funziona perfettamente, è gratuito e controlli tutto in modo da ridurre le dipendenze nella tua app.

Openstreetmaps ha lo scopo di mappare tutto nel mondo, anche se non ci sono abbastanza vale la pena tenere d'occhio poiché forniscono i loro dati con una licenza CC

Tuttavia, molti (la maggior parte?) altri paesi sono mappati solo da governo o servizi per i quali è necessario pagare una tassa. Se non è necessario geocodificare molti dati, potrebbe essere sufficiente utilizzare Google, Yahoo o altri servizi di mappatura gratuiti in tutto il mondo.

Se devi geocodificare molti dati, allora sarai meglio servito noleggiando dati cartografici da un importante fornitore, come teleatlas.

-Adam

Puoi anche provare OpenStreetMap NameFinder , che contiene dati stradali open source simili a wiki per (potenzialmente) il mondo intero. NameFinder cesserà di esistere alla fine di agosto, ma Nominatim è il suo sostituto.

Google richiede di mostrare una mappa di Google con i propri dati, con un massimo di 2,5k (era 25k) richieste HTTP al giorno. Utile ma devi guardare l'utilizzo.

Hanno

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

(Google ha rimosso questo. Se vedi un duplicato o una cache, ti collegherò a quello.)

... in cui ho trovato GeoNames che ha sia un db scaricabile, un servizio web gratuito e un servizio web commerciale.

I termini di servizio di Google ti consentiranno di utilizzare gratuitamente la loro API di geocodifica se il tuo sito Web è a sua volta gratuito per gli utenti. Altrimenti dovrai ottenere una licenza per Enterprise Maps.

Per l'uso con Drupal e PHP (e facilmente modificabili):

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;
}

Puoi dare un'occhiata ai documenti dell'API di Google Maps qui per iniziare:

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

Sembra anche qualcosa che puoi fare per gli indirizzi internazionali usando anche Live Maps:

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

Puoi farlo anche con i servizi Web MapPoint di Microsoft.

Ecco un post sul blog che spiega come: http://www.codestrider.com/BlogRead. aspx? b = b5e8e275-cd18-4c24-b321-0da26e01bec5

Codice R per ottenere la latitudine e la longitudine di un indirizzo stradale

# 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"

Se vuoi farlo in 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

Tieni presente che Google sembra limitare le richieste se rileva più di un determinato importo, quindi desideri utilizzare una chiave API nella tua richiesta HTTP.

Avevo un lotto di 100.000 record da geocodificare e mi sono imbattuto nel limite dell'API di Google (e poiché era per un'app aziendale interna, dovevamo aggiornare al loro servizio premium che è $ 10K in più)

Quindi, ho usato questo invece: http://geoservices.tamu.edu/Services/ Geocode / BatchProcess / - hanno anche un'API. (il costo totale era di circa 200 $)

Puoi provare questo in JavaScript per città come 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);
  } 
});

 inserisci qui la descrizione dell'immagine

In Python usando geopy PyPI usato per ottenere la lattitudine, la langitudine, il codice postale ecc. Ecco il codice di esempio funzionante ..

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')

In Nominatim - Alcuni indirizzi non funzionano, quindi ho appena provato MapQuest .
Ritorna correttamente. Mapquest fornisce 15000 transazioni al mese gratuite. È abbastanza per me.

Codice di esempio:

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)

Spero che sia d'aiuto.

So che questa è una vecchia domanda, ma Google cambia il modo di ottenere latitudine e longitudine su base regolare.

codice 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>

Codice 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>

Per ulteriori informazioni, consultare questo link https://www.phpkida.com/java-script / get-latitudine-longitudine-da-indirizzo /

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top