Kostenlose Geocoding-Dienste

Geocoding ist der Vorgang, aus Freitext-Adressinformationen (z.B. einer normalen postalischen Adresse) Geokoordinaten zu ermitteln. Seit dem Start von Google Maps und ähnlichen Kartendiensten gibt es eine Reihe frei zugänglicher APIs, mit denen Geocoding einfach übers Web möglich ist.

  • Google Maps Geocoding API
    Diese Google API ermöglicht es, pro Tag bis zu 2.500 Adressen kostenlos geokodieren zu lassen. Zudem fordert Google, dass nur Adressen geokodiert werden dürfen, wenn diese anschließend auf einer Google-Karte angezeigt werden.
  • Bing Maps REST Services
    Für die Bing Geokodierungs-API wird ein kostenloser Bing Maps Key benötigt. Dieser ermöglicht es, bis zu 125.000 Adressen jährlich zu geokodieren.
  • MapQuest Geocoding Service
    MapQuest bietet verschiedenste Geo-Services an. Die kostenlose Version kann 15.000 Anfragen im Monaten abarbeiten.
  • Yahoo BOSS Geo Services
    Die Yahoo BOSS Geo Services ersetzen die alte Yahoo PlaceFinder API. Allerdings kosten die BOSS Services bereits von der ersten geokodierten Adresse an Geld: Pro 1000 Anfragen werden 6 US-Dollar berechnet. Für nicht-kommerzielle Anwendungen gibt es weiterhin eine kostenlose Version.

Geocoding Schritt-für-Schritt

Die oben aufgeführten Geocoding-APIs sind alle REST-basiert und lassen sich so recht einfach im Browser ausprobieren.

Nehmen wir als Beispiel die Anfrage für den Marienplatz in München. In der MapQuest-API sieht die Anfrage so aus:
http://www.mapquestapi.com/geocoding/v1/address?key=IHR_MAPQUEST_KEY&location=Marienplatz,M%C3%BCnchen

{
"info": {
"copyright": {
"imageAltText": "\u00a9 2015 MapQuest, Inc.",
"imageUrl": "http://api.mqcdn.com/res/mqlogo.gif",
"text": "\u00a9 2015 MapQuest, Inc."
},
"messages": [],
"statuscode": 0
},
"options": {
"ignoreLatLngInput": false,
"maxResults": -1,
"thumbMaps": true
},
"results": [
{
"locations": [
{
"adminArea1": "DE",
"adminArea1Type": "Country",
"adminArea3": "Bavaria",
"adminArea3Type": "State",
"adminArea4": "",
"adminArea4Type": "County",
"adminArea5": "Munich",
"adminArea5Type": "City",
"adminArea6": "",
"adminArea6Type": "Neighborhood",
"displayLatLng": {
"lat": 48.137056,
"lng": 11.575939
},
"dragPoint": false,
"geocodeQuality": "STREET",
"geocodeQualityCode": "B3ACA",
"latLng": {
"lat": 48.137056,
"lng": 11.575939
},
"linkId": "u281z7j6dvtc",
"mapUrl": "http://www.mapquestapi.com/staticmap/v4/getmap?key=IHR_MAPQUEST_KEY&type=map&size=225,160&pois=purple-1,48.1370556,11.5759392,0,0,|&center=48.1370556,11.5759392&zoom=15&rand=-214069975",
"postalCode": "80331",
"sideOfStreet": "N",
"street": "Marienplatz",
"type": "s",
"unknownInput": ""
},
{
"adminArea1": "DE",
"adminArea1Type": "Country",
"adminArea3": "Bavaria",
"adminArea3Type": "State",
"adminArea4": "",
"adminArea4Type": "County",
"adminArea5": "Oberhaching",
"adminArea5Type": "City",
"adminArea6": "",
"adminArea6Type": "Neighborhood",
"displayLatLng": {
"lat": 47.980765,
"lng": 11.570616
},
"dragPoint": false,
"geocodeQuality": "STREET",
"geocodeQualityCode": "B3ACA",
"latLng": {
"lat": 47.980765,
"lng": 11.570616
},
"linkId": "u280zq9knyue",
"mapUrl": "http://www.mapquestapi.com/staticmap/v4/getmap?key=IHR_MAPQUEST_KEY&type=map&size=225,160&pois=purple-2,47.980765,11.5706159,0,0,|&center=47.980765,11.5706159&zoom=15&rand=-1863933835",
"postalCode": "82041",
"sideOfStreet": "N",
"street": "Marienplatz",
"type": "s",
"unknownInput": ""
},
{
"adminArea1": "DE",
"adminArea1Type": "Country",
"adminArea3": "Bavaria",
"adminArea3Type": "State",
"adminArea4": "",
"adminArea4Type": "County",
"adminArea5": "Munich",
"adminArea5Type": "City",
"adminArea6": "",
"adminArea6Type": "Neighborhood",
"displayLatLng": {
"lat": 48.146852,
"lng": 11.458991
},
"dragPoint": false,
"geocodeQuality": "STREET",
"geocodeQualityCode": "B3CCA",
"latLng": {
"lat": 48.146852,
"lng": 11.458991
},
"linkId": "u281uub5tzdz",
"mapUrl": "http://www.mapquestapi.com/staticmap/v4/getmap?key=IHR_MAPQUEST_KEY&type=map&size=225,160&pois=purple-3,48.146852,11.458991,0,0,|&center=48.146852,11.458991&zoom=15&rand=-494830012",
"postalCode": "81241",
"sideOfStreet": "N",
"street": "Pasinger Marienplatz",
"type": "s",
"unknownInput": ""
}
],
"providedLocation": {
"location": "Marienplatz,M\u00fcnchen"
}
}
]
}

Als Antwort erhalten wir in diesem Fall mehrere Ergebnisse, da die Anfrage Marienplatz,München nicht eindeutig war. Das Ergebnis für den ersten Treffer, den bekannten Marienplatz in München, lautet Latitude: 48.137056 und Longitude: 11.575939. Um zu verifizieren, dass das Ergebnis auch korrekt ist, machen wir den Test und lassen uns diese Koordinaten auf Google Maps anzeigen: https://www.google.de/maps/place/48.1370551,11.5759444/

Offensichtlich hat unser Geocoding-von-Hand funktioniert und wir sehen, wie einfach sich heute Geodaten im Web nutzen lassen. Die APIs der anderen Anbieter funktionieren im Prinzip genau so, wie hier am Beispiel der MapQuest-API gezeigt.