Geocoding: Unterschied zwischen den Versionen

Aus Geoinformation HSR
Wechseln zu: Navigation, Suche
K (Geocoding mit Python)
K (Geocoding mit Python)
Zeile 64: Zeile 64:
 
   """ ====================================================
 
   """ ====================================================
 
   geocode.py - a geocoder based on OSM / Nominatim
 
   geocode.py - a geocoder based on OSM / Nominatim
 
 
 
   Dependencies: GeoPy
 
   Dependencies: GeoPy
 
   Input      : File adresses.csv
 
   Input      : File adresses.csv

Version vom 22. Januar 2015, 02:26 Uhr

The geocoding (geolocalization, DE:Geokodierung) is the process of finding associated geographic coordinates (e.g. latitude/longitude or northing/easting) from other geographic data, such as addresses (street name and street or building number), postal codes or place names. Since address data is a laborious data (like most geospatial data) and often copyrighted there is no single free solution or service.

Given a local spreadsheet with not-yet-geocoded address data, there are following current solutions:

  1. ArcGIS Online or Google Fusion Tables (data source for both: Google): no programming, webbased service, data needs to be uploaded, needs Google or AGOL account => See ArcGIS Online and Esri Help Pages.
  2. Google Docs with App Script (data source: Google): predefined scripts, webbased service, data needs to be uploaded => See https://github.com/mapbox/geo-googledocs .
  3. Mapquest (data source: Nominatim/OpenStreetMap): predefined scripts, webbased service, data remains locally => See http://schoolofdata.org/handbook/recipes/geocoding/ .
  4. SpatiaLite (data source: MOPublic/Swiss Cadastre and Statistics): local sw, local data, predefined scripts. See SpatiaLite.

Note: One of the best sources for Switzerland, the GWR (from Fed. Office of Statistics) and MOpublic (from cantonal Swiss Cadastres) aren't available for whole Switzerland, due to missing accessbility (GWR) or lack of coverage (cadastre).

 >> The section below needs to be updated <<

Geocoding solutions to be evaluated later:

  • Google Fusion Tables
  • Esri Maps for Office
  • See below.

Geocoding im Web

Geocoding APIs

  • OpeCage Geocoder [1]
  • MapQuest Open Geocoding API Service ([2]) (und weitere [3]) (Beschränkungen: Gibt nur Ortschaft/Strasse zurück?; Lizenz: CC-BY-SA)
  • Yahoo BOSS Geo Services (kostenpflichtig!) 'Yahoo! PlaceFinder API' Service (Beschränkungen: mit API-Key; max. 50'000 Requests/Tag; Lizenz: ???)
  • 'Bing Maps APIs' (Beschränkungen: mit API-Key? unübersichtlich; Lizenz: ???).
  • Geoadmin API (Beschränkungen: verschiedene; ?; Lizenz: Bund...???)
  • Geonames findNearestIntersectionOSM oder postalCodeSearch (Beschränkungen: availability; Lizenz: "free"/CC-BY-SA)
  • 'Google Maps Geocoding API' Service (Beschränkungen: nur 2'500 Requests/Tag und Resultat muss im Web sichtbar gemacht werden)
  • tinygeocoder.com:
    • Geocoding "Oberseestrasse+10,Rapperswil-Jona,Switzerland": [4]
    • Reverse geocoding of "47.2230647,8.8165114": [5]
  • GeoAdmin API 2.5, SwissSearch: geocoding and SwissSearch: reversegeocoding [6]
  • Nominatim

Geocoding mit MS Excel

Geocoding von Adressen aus Excel mit VB programmiert

  • Juice Analytics: Geocodiert einzeln/mehrere Adressen international (Basis Yahoo Webservice) sowie Google Earth ()-Output. Hinweis: Dazu muss man a) einen Yahoo-Account haben und b) eine Application-ID (Authentisierungs-Typ Generic) beziehen; beides ist kostenlos. zum Download...
  • Weiterentwicklung mit Google Maps (falls mehrere Adressen codiert werden sollen, yahoo_id = "YahooDemo" ersetzen durch eigene Application-ID): zum Download...

Geocoding mit QGIS

Siehe auch:


Geocoding mit Python

Siehe auch: Python.

"Géocoder en masse plusieurs milliers d’adresses avec Python et Nominatim" par AdrienVH, le 18/01/2015 [7].

 """ ====================================================
 geocode.py - a geocoder based on OSM / Nominatim
 Dependencies: GeoPy
 Input       : File adresses.csv
 Output      : File resultat.csv
 ==================================================== """
 import csv
 from geopy.geocoders import Nominatim # needs GeoPy lib!
 geocoder = Nominatim()
 inputFile = open('adresses.csv', 'rb')
 outputFile = open('resultat.csv', 'w')
 try:
   outputData = csv.writer(outputFile, delimiter=';', lineterminator='\n')
   outputData.writerow(('adresse', 'latitude', 'longitude'))
   inputData = csv.reader(inputFile, delimiter=';')
   for ligne in dataInput:
     adresse = ligne[0] + ", " + ligne[1]
     try:
       location = geocoder.geocode(adresse, True, 30)
       outputData.writerow((adresse, location.latitude, location.longitude))
     except Exception as inst:
       print inst
 finally:
   inputFile.close()
   outputFile.close()

Weblinks

Generell/Liste: http://del.icio.us/search/?all=geocoding