Benutzer:Alexrk2/Geokodieren

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Beispiel für geokodierte Daten

Geokodierung - steht für die Zuordnung von geographischen Koordinaten (Längen- und Breitengraden) zu Adressdaten.

Bei der Erstellung von Karten stößt man häufiger auf das Problem, dass man als Quelldaten eine Liste von Ortsangaben hat und diese in einer Karte darstellen möchte. Wenn nun die Quelldatenmenge sehr groß ist, wird ein händisches Georeferenzieren sehr mühsam und es bietet sich eine automatische Geokodierung verschiedener Dienstleister an.

Solche Geokodierungsdienste bieten z. B. Google und Yahoo mit ihren Kartenprodukten als Schnittstelle an. Diese Dienste liefern zwar sehr gute Ergebnisse, haben aber für die Verwendung in der Wikipedia das Problem, dass ihre Nutzungsbedingungen eine solche Nutzung nicht erlauben. Einen frei nutzbaren Geokodierungsdienst gibt es hingegen bei geonames.org

Geonames.org hat mittlerweile auch für Deutschland umfassende Ortsdaten - leider bislang jedoch keine Straßendaten. Aber für viel Zwecke sollte diese Genauigkeit ausreichen.

So habe ich zB die Karte zu der Verteilung von Windkraftanlagen mit Hilfe von geonames.org erstellt.

Um den Suchdienst von geonames.org zu nutzen gibt es viele Möglichkeiten:

In den folgenden Beispielen verwende ich die Java-Bibliothek von geonames.org - finde ich persönlich am einfachsten (ist aber Geschmackssache).

Geonames.org - Java-API

[Bearbeiten | Quelltext bearbeiten]

Als Einstieg eine ganz einfache Suche nach allen Orten Namens "Petersberg":

  ToponymSearchCriteria searchCriteria = new ToponymSearchCriteria();        
  searchCriteria.setNameEquals("Petersberg");
  searchCriteria.setCountryCode("DE");
  searchCriteria.setFeatureClass(FeatureClass.P);
  searchCriteria.setMaxRows(30);
  
  ToponymSearchResult result = WebService.search(searchCriteria);
  
  for (Toponym toponym : result.getToponyms()) {
      System.out.println(toponym.getGeoNameId() + " " + toponym.getName() 
              + " ("+toponym.getLatitude()+", "+toponym.getLongitude()+")");

... so erhält man eine Liste:

2854706 Petersberg (50.561868254942, 9.71311569213867)
2854701 Petersberg (51.6, 11.9666667)
2854704 Petersberg (50.9833333, 11.8333333)
2854707 Petersberg (49.2333333, 7.5666667)
2854699 Petersberg (53.8333333, 10.8833333)
2854700 Petersberg (53.6, 11.55)
2854702 Petersberg (51.1166667, 13.2166667)
2854703 Petersberg (51.0333333, 7.2666667)
2854705 Petersberg (50.8666667, 9.7333333)
2854708 Petersberg (48.339285649823, 11.2980222702026)