it-swarm.com.de

Wie konvertiere ich eine Adresse in einen Breiten- / Längengrad?

Wie würde ich eine Adresse oder Stadt in einen Breiten-/Längengrad umwandeln? Gibt es kommerzielle Outfits, bei denen ich diesen Service "mieten" kann? Dies würde in einer kommerziellen Desktop-Anwendung auf einem Windows-PC mit Vollzeit-Internetzugang verwendet.

69
swilc0x

Google hat eine Geokodierungs-API, die für die meisten Standorte, für die Google Maps-Daten vorliegen, ziemlich gut funktioniert.

http://googlemapsapi.blogspot.com/2006/06/geocoding-at-last.html

Sie bieten Online-Geokodierung (über JavaScript):

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

Oder Backend-Geokodierung (über eine HTTP-Anfrage):

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

Die Daten werden normalerweise von Google Maps selbst verwendet. (Beachten Sie, dass es einige Ausnahmen gibt, z. B. im Vereinigten Königreich oder in Israel, wo die Daten aus einer anderen Quelle stammen und von etwas verminderter Qualität sind.)

47
mopoke

Es gibt nicht viel Neues hinzuzufügen, aber ich habe viel Erfahrung in der Praxis mit GIS und Geokodierung von einem früheren Job. Hier ist, woran ich mich erinnere:

Wenn es in Ihrer Anwendung "ab und zu" erforderlich ist, würde ich die Geokodierungs-APIs von Google oder Yahoo auf jeden Fall empfehlen. Lesen Sie jedoch die Lizenzbestimmungen sorgfältig durch.

Ich weiß, dass das Google Maps-API im Allgemeinen auch für kommerzielle Webseiten leicht zu lizenzieren ist, aber nicht in einer Situation verwendet werden kann, in der der Zugriff kostenpflichtig ist. Mit anderen Worten, Sie können damit Werbung für einen Service schalten oder einen Service bereitstellen, der die Werbeeinnahmen steigert. Sie können jedoch keine Gebühren für den Zugriff auf Ihre Website erheben oder sie sogar hinter ein Kennwortsystem stellen.

Trotz dieser Einschränkungen sind sie beide eine ausgezeichnete Wahl, da sie ihre Straßendatenbanken häufig aktualisieren. Die meisten kostenlosen Backend-Tools und -Bibliotheken verwenden Census- und TIGER-Straßendaten, die nur selten aktualisiert werden, sodass die Wahrscheinlichkeit geringer ist, dass Adressen in schnell wachsenden Gebieten oder neuen Unterteilungen erfolgreich geocodiert werden.

Die meisten Dienste beschränken auch die Anzahl der Geokodierungsabfragen, die Sie pro Tag durchführen können. Sie können also beispielsweise nach Adressen neuer Kunden suchen, die zu Ihrer Datenbank hinzugefügt werden Wenn Sie Ihre Datenbank in den Geocoder übertragen, werden Sie abgeschaltet.

Ich glaube, dieser wurde noch nicht erwähnt, aber ESRI hat ArcWeb-Webdienste , die Geokodierung enthalten, obwohl sie nicht sehr billig sind. Das letzte Mal, als ich sie verwendete, kostete es ungefähr 1,5 Cent pro Suche, aber Sie mussten einen bestimmten Betrag im Voraus bezahlen, um loszulegen. Auch hier ist der Hauptvorteil, dass die von ihnen verwendeten Straßendaten zeitnah auf dem neuesten Stand gehalten werden und Sie die Daten in kommerziellen Situationen verwenden können, die Google nicht zulässt. Der ArcWeb-Service wird auch hochauflösende Satelliten- und Luftbilder à la von Google Maps bereitstellen, die ebenfalls auf Anfrage erhältlich sind.

Wenn Sie Ihre eigenen Daten rollen möchten oder auf viel genauere Daten zugreifen möchten, können Sie Abonnements für GIS-Daten von Unternehmen wie TeleAtlas erwerben, aber das ist nicht billig. Sie können nur Daten für ein Bundesland oder einen Landkreis kaufen, wenn Ihre Anforderungen äußerst lokal sind. Es gibt mehrere Datenebenen - nur GIS-Funktionen, GIS plus detaillierte Straßen, all das plus Geocodierungsdaten, all das plus Verkehrsfluss-/Richtungs-/Geschwindigkeitsbegrenzungen für das Routing. Natürlich steigt der Preis mit jedem Schritt.

Schließlich enthält der Wikipedia-Artikel zu Geocoding einige gute Informationen zu den Algorithmen und Techniken. Auch wenn Sie dies nicht in Ihrem eigenen Code tun, ist es hilfreich zu wissen, welche Art von Fehlern und Genauigkeit Sie von verschiedenen Arten von Datenquellen erwarten können.

25
CMPalmer

Yahoo! Maps Web Services - Geocoding API im Gegensatz zu Googles API UK-Postleitzahlen genau geocodiert.

Leider hat Yahoo diesen Service abgelehnt. Besuchen Sie http://developer.yahoo.com/geo/placefinder/ für den Yahoo-Service

11
David
10
Ben Dehghan

Nachdem ich zuvor meine eigene Lösung dafür entwickelt habe, kann ich das Geo :: Coder :: US Perl-Modul von ganzem Herzen empfehlen. Laden Sie einfach alle Volkszählungsdaten herunter und verwenden Sie den mitgelieferten Importer, um die Berkeley-Datenbank für Ihr Land zu erstellen und zeigen Sie mit dem Perl-Skript darauf. Verwenden Sie die integrierte Adressanalyse des Moduls, und schon haben Sie es: Ein Offline-Geokodierungssystem!

5
willasaywhat

Wenn Sie eine Adresse oder ein Objekt in ein Lat/Long-Format konvertieren, wird dies als Geokodierung bezeichnet.

Es gibt viele Geokodierungslösungen. Welche Lösung für Ihr Projekt geeignet ist, hängt von der Akzeptanz der Lizenzbedingungen für die einzelnen Geokodierungslösungen ab. Sowohl Microsoft Virtual Earth als auch Google Maps bieten Lösungen an, die unter sehr restriktiven Lizenzen kostenlos verwendet werden können ...

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

http://www.Microsoft.com/virtualearth/product/faq.aspx

5
Michael

Versuchen Sie es mit diesem Code, ich arbeite so mit Adressen:

Über diesen Link können Sie mit der GET-Methode eine Anfrage senden und lat und lng abrufen. http://maps.google.com/ maps/api/geocode/json? address = DEINE ADRESSEN & sensor = false

Zum Beispiel: http://maps.google.com/maps/api/geocode/json?address=W Main St, Bergenfield , NJ 07621 & sensor = false

1. Erstellen Sie Ihre GET-Methode.

 public static String GET(String url) throws Exception {//GET Method
        String result = null;
        InputStream inputStream = null;
        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(url);

        Log.v("ExecuteGET: ", httpGet.getRequestLine().toString());

        HttpResponse httpResponse = httpclient.execute(httpGet);
        inputStream = httpResponse.getEntity().getContent();
        if (inputStream != null) {
            result = convertInputStreamToString(inputStream);
            Log.v("Result: ", "result\n" + result);
        } 
    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}

2. Methode für Sendeanfrage erstellen

@SuppressWarnings("deprecation")
    public static String getLatLng(String accessToken) throws Exception{
        String query=StaticString.gLobalGoogleUrl+"json?address="+URLEncoder.encode(accessToken)+"&sensor=false";
        Log.v("GETGoogleGeocoder", query+"");
        return GET(query);
    }

gLobalGoogleUrl = "http://maps.google.com/maps/api/geocode/"

3. Aufruf der Methode getLatLng

String result=getLatLng("W Main St, Bergenfield, NJ 07621");

4. JSONObject analysieren

Jetzt ist Ergebnis JSONObject mit Informationen zu Adresse und Land, Land. Analysieren Sie JSONObject (Ergebnis) mit gson () . Danach verwenden Sie lat, lng.

Wenn Sie Fragen zu Code haben, fragen Sie.

4
MilanNz

Sie möchten eine Geokodierungsanwendung. Diese sind entweder online oder als Anwendungs-Backend verfügbar.

2

Mit Maptsraction ( http://www.mapstraction.com ) können Sie zwischen einer beliebigen Anzahl von Geokodierungsdiensten wählen. Dies kann hilfreich sein, wenn Sie große Mengen ausführen müssen, da Google bekanntlich nur eine begrenzte Anzahl von Aufgaben pro Tag ausführen kann.

2
ian93

Virtual Earth macht es. Es gibt auch einen Webservice unter geocoder.us

2
Charles Graham

Sie können auch die OpenStreetMapNameFinder (oder die aktuelle Nominatim ) verwenden, die (möglicherweise) Open-Source-ähnliche Straßendaten für die enthält ganze Welt.

2
peSHIr

sie können Bing Maps Soap-Dienste verwenden, bei denen Sie auf den Reverse-Geocode-Dienst verweisen können, um Lat/Long-Adressen zu finden. Hier finden Sie den Link http://msdn.Microsoft.com/en-us/library /cc980922.aspx

1
Blazen

sie fragen nach Geocoder. Google stellt hierfür eine API zur Verfügung. das tut auch ein anderer anbieter dafür.

sie können die Demo der Implementierung in My Current Location .net sehen

0
0

Ich dachte, ich würde der Liste noch eine hinzufügen. Texas A & M hat hier einen recht günstigen Service: http://geoservices.tamu.edu/Services/Geocode/

Eine gute Option, wenn Sie eine ziemlich große Menge von Adressen zum Geocodieren haben und nicht 10k bei Google oder Microsoft streicheln möchten. Wir haben die zurückgegebenen Daten trotzdem in einer Google Map verwendet.

0
ficuscr

Sie können die MapPoint-Webdienste von Microsoft verwenden.

Ich habe einen Blogeintrag erstellt, wie man eine Adresse in einen GeoCode (lat/long) konvertiert.

0
Stephen Curial