it-swarm.com.de

So erhalten Sie Längen- und Breitengrade für eine Straßenadresse programmgesteuert (und legal)

Angeblich ist es möglich, dies von Google Maps oder einem solchen Dienst zu erhalten. (Nur US-Adressen sind nicht gut genug.)

74
Ola Eldøy

Der Begriff, den Sie suchen, ist Geokodierung, und ja, Google bietet diesen Service an.

70
Sijin

Neben dem oben genannten Google Geocoding Web Service gibt es auch einen konkurrierenden Service von Yahoo . In einem kürzlich durchgeführten Projekt, in dem die Geokodierung mithilfe der Benutzerinteraktion erfolgt, habe ich die Unterstützung für beide eingeschlossen. Der Grund dafür ist, dass ich festgestellt habe, dass insbesondere außerhalb der USA der Umgang mit undurchsichtigen Orten sehr unterschiedlich ist. Manchmal hat Google die beste Antwort, manchmal Yahoo.

Man muss sich darüber im Klaren sein: Wenn Google glaubt, nicht zu wissen, wo sich Ihr Standort befindet, wird ein 602-Fehler ausgegeben, der auf einen Fehler hinweist. Wenn Yahoo andererseits eine Stadt/Provinz/Bundesstaat/usw. aus Ihrer schlechten Adresse herausschälen kann, wird der Standort des Zentrums dieser Stadt zurückgegeben. Sie müssen also auf die Ergebnisse achten, um zu sehen, ob sie wirklich Ihren Wünschen entsprechen. Einige Ergebnisse enthalten zusätzliche Felder, die Sie darüber informieren: Yahoo nennt dieses Feld "Genauigkeit" und Google nennt es "Genauigkeit".

22
Tim Farley

Wenn Sie dies tun möchten, ohne sich auf einen Dienst zu verlassen, laden Sie TIGER Shapefiles aus der US-Volkszählung herunter.

Sie schauen die Straße hoch, die Sie interessiert und die mehrere Segmente hat. Jedes Segment hat eine Start- und eine Endadresse, und Sie interpolieren entlang des Segments, um herauszufinden, wo auf dem Segment Ihre Hausnummer liegt.

Dadurch erhalten Sie ein Lon/Lat-Paar.

Beachten Sie jedoch, dass Online-Dienste eine große Menge an Adressüberprüfungen und -korrekturen erfordern, die Sie ebenfalls duplizieren müssen, um gute Ergebnisse zu erzielen.

Beachten Sie auch, dass so schön kostenlose Daten auch sind, sie sind nicht perfekt - die neuesten Straßen sind nicht vorhanden (sie sind möglicherweise in den von Google verwendeten Daten enthalten), und die Straßen sind möglicherweise aufgrund von Ungenauigkeiten bei der Umfrage um einen gewissen Betrag von ihrem tatsächlichen Standort entfernt. Bei 98% der Geokodierungsanforderungen funktioniert es jedoch einwandfrei, ist kostenlos und Sie steuern alles, um Abhängigkeiten in Ihrer App zu verringern.

Openstreetmaps hat das Ziel, alles auf der Welt abzubilden, auch wenn es nicht ganz so weit ist. Es lohnt sich, die Daten unter einer CC-Lizenz bereitzustellen

Viele (die meisten?) Anderen Länder werden jedoch nur von der Regierung oder von Diensten erfasst, für die Sie eine Gebühr entrichten müssen. Wenn Sie nicht sehr viele Daten geocodieren müssen, können Google, Yahoo oder einige der anderen kostenlosen weltweiten Kartendienste ausreichen.

Wenn Sie eine Menge Daten geokodieren müssen, sollten Sie am besten Kartendaten von einem großen Anbieter wie Teleatlas leasen.

-Adam

15
Adam Davis

Sie können auch die OpenStreetMapNameFinder ausprobieren, die quelloffene, wikiähnliche Straßendaten für (möglicherweise) die ganze Welt enthält. NameFinder wird Ende August nicht mehr existieren, aber Nominatim ist sein Ersatz.

9
peSHIr

Bei Google müssen Sie eine Google-Karte mit ihren Daten anzeigen. Pro Tag werden maximal 2,5.000 (bisher 25.000) HTTP-Anfragen gesendet. Nützlich aber man muss auf die Benutzung achten.

Sie haben

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

(Google hat dies inzwischen entfernt. Wenn Sie ein Duplikat oder einen Cache sehen, werde ich darauf verlinken.)

... in dem ich GeoNames gefunden habe, das sowohl eine herunterladbare Datenbank, einen kostenlosen Webservice als auch einen kommerziellen Webservice enthält.

7
Richard Watson

In den Nutzungsbedingungen von Google können Sie die Geokodierungs-API von Google kostenlos verwenden, wenn Ihre Website wiederum für Verbraucher kostenlos ist. Andernfalls benötigen Sie eine Lizenz für Enterprise Maps.

4
Craig Wohlfeil

Zur Verwendung mit Drupal und PHP (und leicht zu ändern):

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;
}
3
Nate Wildermuth

Sie können sich hier die Google Maps API-Dokumente ansehen, um einen ersten Eindruck davon zu erhalten:

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

Es scheint auch etwas zu sein, das Sie mit Live Maps für internationale Adressen tun können:

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

2
Carl

Wenn Sie dies in Python tun möchten:

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

Beachten Sie, dass Google Anforderungen anscheinend drosselt, wenn mehr als eine bestimmte Menge angezeigt wird. Daher möchten Sie in Ihrer HTTP-Anforderung einen API-Schlüssel verwenden.

2
Suman

R-Code zum Abrufen des Breiten- und Längengrads einer Straßenadresse

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

Sie können dies auch mit den MapPoint-Webdiensten von Microsoft tun.

Hier ist ein Blog-Beitrag, der erklärt, wie: http://www.codestrider.com/BlogRead.aspx?b=b5e8e275-cd18-4c24-b321-0da26e01bec5

2
Stephen Curial

In python using geopy PyPI wird verwendet, um die Breite, Länge, Postleitzahl usw. abzurufen. Hier ist der funktionierende Beispielcode.

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 - Einige Adressen funktionieren nicht, also habe ich nur versucht MapQuest .
Es kehrt korrekt zurück. Mapquest bietet kostenlose 15000 Transaktionen pro Monat. Es reicht mir.

Beispielcode:

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)

Ich hoffe es hilft.

1
Parthiban.S

Ich musste eine Menge von 100.000 Datensätzen geocodieren und stieß auf das Limit der Google API (und da es sich um eine interne Unternehmensanwendung handelte, mussten wir auf deren Premium-Service upgraden, der mehr als 10.000 US-Dollar beträgt).

Also habe ich dies stattdessen verwendet: http://geoservices.tamu.edu/Services/Geocode/BatchProcess/ - Sie haben auch eine API. (die Gesamtkosten betrugen ca. 200 $)

1
paras_doshi

Sie können dies in JavaScript für Städte wie kohat versuchen.

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

enter image description here

1
Adiii

Ich weiß, dass dies eine alte Frage ist, aber Google ändert die Art und Weise, wie Breiten- und Längengrade regelmäßig ermittelt werden.

HTML-Code

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

JavaScript-Code

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

Weitere Informationen finden Sie unter diesem Link https://www.phpkida.com/Java-script/get-latitude-longitude-from- Adresse /

0
Mukesh Jakhar