Frage

Ich arbeite an einer Anwendung, wo eine der Voraussetzungen ist, dass ich in der Lage sein, in Echtzeit durchführt Reverse Operationen auf GPS-Daten auf Basis der Geokodierung. Insbesondere muss ich in der Lage sein, den Staat / Provinz zu bestimmen, zu dem eine Breite, Länge Paar Karten und erkennen, wenn wir von einem Zustand / Provinz in die andere verschoben haben.

Ich habe ein paar Ideen so weit, aber fragte sich, ob jemand hatte irgendwelche Ideen auf eine der folgenden:

  • Was ist der beste Ansatz, um dieses Problem in effizienter Weise für die Bekämpfung der?
  • Wo ist ein guter Ort zu finden, und was ist das entsprechende Format für die nordamerikanische Staat / Provinz Grenzen

Als Vorspeise, hier sind die beiden wichtigsten Ideen, die ich habe:

  1. Break Nordamerika in ein Raster mit jedem Rechteck im Raster Zuordnung zu einer bestimmten Zustand Provinz. Führen Sie einen Nachschlag auf dieser Tabelle (die Sie schnell desto genauer wächst sein mögen), basierend auf der geographische Breite und dann die Länge (oder umgekehrt).
  2. definieren Polygone für jeden der Zustände und eine Art von Berechnung tun, bei dem ein lat Polygon zu bestimmen / lon Paar liegt. Ich bin nicht sicher, wie um dies zu realisieren. HTML Image-Maps in den Sinn kommen als eine Möglichkeit, die Grenzen für einen Staat / Provinz definieren.

Ich arbeite in Python für die interessierten oder diejenigen, die eine schöne Bibliothek haben könnten würden sie gerne vorschlagen.

Um klar zu sein ... Ich habe mich nicht Web-Zugang zur Verfügung, so einen bestehenden Reverse Geocoding-Dienst ist keine Option zur Laufzeit

War es hilfreich?

Lösung

Ich schlage vor, eine Variante der ersten Idee mit: Verwenden Sie eine räumlichen Index . Eine räumliche Index ist eine Datenstruktur, aus Rechtecken aufgebaut, mapping lat / lang auf die Nutzlast. In diesem Fall werden Sie wahrscheinlich Rechtecke zu State-Provinz Paare abzubilden. AN R-Baum eine gute Option sein kann. Hier ist ein R-Baum Python-Paket . Sie könnten Roaming erkennen, indem die Ergebnisse von aufeinanderfolgenden Suche verglichen werden.

Andere Tipps

Ich habe ein Offline-Geocoding-Modul für Länder umkehren: https://bitbucket.org/richardpenman/reverse_geocode

>>> import reverse_geocode 
>>> coordinates = (-37.81, 144.96), (31.76, 35.21)
>>> reverse_geocode.search(coordinates)
[{'city': 'Melbourne', 'code': 'AU', 'country': 'Australia'},
 {'city': 'Jerusalem', 'code': 'IL', 'country': 'Israel'}]

Ich werde sehen, ob ich Daten für Zustände hinzufügen kann.

Ich würde bleiben weg Ihre eigene Lösung von Grund auf von der Implementierung. Das ist ein ziemlich großen Unternehmen und es gibt bereits Tools gibt, dies zu tun. , Werfen Sie einen Blick auf diesem Blog-Eintrag:

Wenn Sie halten Staatsgrenzen als Polygone (zB über OpenStreetMap) zu bekommen, ist es, den aktuellen Stand der Bestimmung nur ein Point-in-Polygon-Test.

Wenn Sie Adressdaten benötigen, würde eine Offline-Lösung zu verwenden, Microsoft MapPoint sein.

Sie können die Daten für den gesamten Vereinigten Staaten erhalten von offene Straßenkarte Sie dann die Daten extrahieren können Sie muß wie Stadt oder Staat Standorte in was auch immer Format am besten für Ihre Anwendung funktioniert. Beachten Sie, obwohl die Datenqualität gut ist, es ist nicht ganz richtig sein garantiert so, wenn Sie absolute Genauigkeit benötigen Sie woanders suchen.

Ich habe eine Datenbank mit all diesen Daten und einigen Access-Tool. Ich habe mir aus den Volkszählungs Tiger Daten. Ich stelle mir vor, es wäre im Grunde ein Export von meiner Datenbank sein SQLite und ein wenig Code Übersetzung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top