Erstellen eines Geokodierungs- / Gazetteer-Webdienstes?

14

Ich möchte einen Geokodierungs-Webdienst für die Genealogie in Java schreiben. Da es sich um Genealogie handelt, muss ich nicht auf die Straße gehen. Ich muss nur in die Grafschaft gehen.

Bei Genealogie-Daten sind falsch geschriebene Namen sehr häufig. Die Leute verwenden auch viele nicht-Standard-Abkürzungen. Zum Beispiel für Baltimore County könnte so aussehen:

  1. Baltimore
  2. Baltimore County
  3. Baltimore Co
  4. Baltimore Cty
Jay Askren
quelle

Antworten:

10

Ich glaube nicht, dass diese Frage explizit geografisch ist, da Sie nur an Namen interessiert sind. Vielleicht möchten Sie sie bei Stack Overflow stellen . Sie könnten Ihre Frage mit zwei Informationen beantworten: dem Bundesstaat und dem korrigierten Landkreisnamen. Um die Korrekturen durchzuführen, möchten Sie wahrscheinlich die Levenshtein-Distanz ( Beispiel & Java-Implementierung ) verwenden, um die Fuzzy-Daten mit den korrigierten Werten abzugleichen.

scw
quelle
+1 Das stimmt wahrscheinlich. Levenshtein scheint ein guter Ausgangspunkt zu sein und Postgres scheint es sogar zu unterstützen. Vielen Dank.
Jay Askren
Ich denke, die Kombination der Levenshtein-Distanz mit den Daten von Geonames ( geonames.org ) könnte für mich funktionieren. Vielen Dank.
Jay Askren
5

Ein Geokodierungsdienst benötigt geografische Geometriedaten, einen zugehörigen Gazetteer (zur Bearbeitung von Namen und Namensalternativen) und eine Benutzeroberfläche (zur Vermittlung der Suche). Für einen Reverse-Geocoder müssen Sie einen Topologie-Validator hinzufügen. Für Java bietet sich die Open Source JTS Topology Suite an: http://www.vividsolutions.com/jts/jtshome.htm

Grafschaftsgeometrien für die Vereinigten Staaten können bei der Volkszählung gefunden werden: http://www.census.gov/geo/www/cob/co2000.html

Um mit dem Gazetteer zu beginnen, verfügt das US-amerikanische Board on Geographic Names über eine Datenbank: http://geonames.usgs.gov/

Das Erstellen einer soliden Gazetteer-Datenbank und von Webalgorithmen, die ungefähre Suchtreffer tolerieren, sind der schwierige Teil.

Glennon
quelle
Die Algorithmen sind das, wonach ich suche.
Jay Askren
Anfragen zu semantischen Ähnlichkeitsalgorithmen können mehr Befragte auf der Haupt-Stackoverflow-Site haben.
Glennon
1

Google hat eine nette API für die Geokodierung , wenn Sie deren Nutzungsbedingungen einhalten können. Eine grundlegende Demo finden Sie hier .

Die Verwendung ihres Dienstes unterliegt gewissen Einschränkungen, aber das Ergebnis ist für die meisten Benutzer intuitiv, schnell, genau und vertraut. Sie können sich auf die Entwicklung des Genealogie-Teils Ihres Dienstes konzentrieren.

Adam Matan
quelle
Ich würde wirklich gerne alles im Haus hosten und nicht von einer externen API abhängig sein.
Jay Askren
Sie suchen also eine Open Source-lizenzierte Geokodierungs-DB?
Adam Matan