Geo-Kodieren - aber ohne Google!

Ein wirklich schönes Feature von CiviCRM ist die Möglichkeit, Adressen mit Geo-Koordinaten zu versehen: Das ermöglicht Such-Abfrage im Stile von "wer wohnt im Umkreis von 20 km vom Berliner Hauptbahnhof". Natürlich wird man die geografischen Koordinaten nicht von Hand eingeben, sondern lässt diese von einem Internet-Dienst automatisch heraussuchen. "Dienst der Wahl" wäre wohl Google Maps, wenn... - ja wenn da nicht die berechtigten Datenschutzbedenken wären: Denn wir sollten uns bewusst machen, dass Google eine "Datenkrake" ist, und wir mit diesen Abfragen an Google die Information liefern, wo unsere Kontakte wohnen. Es ist mit Big Data-Technologien tatsächlich möglich, diese Informationen auszuwerten, und wir können davon ausgehen, dass Google das auch macht - oder zumindest künftig machen wird.

Wer daher auf Google verzichten will, kann das Geocoding nun auch mit OpenStreetMaps realisieren. Systopia hat hierzu im Auftrag von Kunden eine Extension realisiert, deren Weiterentwicklung und Veröffentlichung unter freier Lizenz wiederum durch Digitalcourage finanziert worden ist. Dabei wird der Dienst Nominatim verwendet, bei dem wir darauf vertrauen können, dass kein Logging der Adressen vorgenommen wird.

Die Extension ist hier zu finden: https://github.com/systopia/de.systopia.osm/releases

Demnächst™wird die Extension auch unter Administration → Systemeinstellungen → Erweiterungen verwalten zum Download bereitstellen.

Hier eine kurze Anleitung zur Installation und zum Betrieb:

  1. Extension (zip-Datei) herunterladen und in das Extension-Verzeichnis kopieren.
  2. Einloggen auf dem CiviCRM-Server und in das Extension-Verzeichnis wechseln. Dort mit dem Befehl "unzip de.systopia.osm-1.1.zip" die Extension entpacken.
  3. In CiviCRM die Extension-Verwaltung aufrufen:
    Administration → Systemeinstellungen → Erweiterungen verwalten, dort auf „Aktualisieren“ klicken.
    Es müsste dort jetzt die Extension „OpenStreetMap Geocoding (de.systopia.osm)“ aufgelistet sein: Diese Extension „installieren“.
  4. Administration → Systemeinstellungen → Karten und Geocodes: Als Geocoding Dienstleister „OpenStreetMapCoding“ auswählen. Damit werden ab sofort bei jedem Abspeichern eines Kontakts die geografischen Koordinaten abgerufen.

Die Extension verwendet den Dienst http://nominatim.osm.org/ . Dieser Dienst hat leider nicht die „Power“ der Google-Server – daher ist es dringend erforderlich, die Anfragen zu „drosseln“.

Das gilt insbesondere beim erstmaligen Geokodieren einer großen Zahl von Kontakten: Hierzu gibt es unter Administration → Systemeinstellungen → geplante Jobs den Job „Geocode and Parse Addresses“. OSM behält sich allerdings vor, Server zu sperren, die „zuviel Daten abfragen“. Wir empfehlen beim Aufruf der Extension daher die folgenden Optionen:

geocoding=1
parse=0
throttle=1

Ggf. ist es auch sinnvoll, die Erstkodierung in Etappen zu machen. Die Abfrage erfolgt in der Reihenfolge der CiviCRM-IDs, wobei alle nicht erkannten Adressen abgefragt werden. Mit der Angabe einer Start-ID (und eventuell einer End-ID) kann die Abfrage weiter eingeschränkt werden, z.B.:

start=10001 (beginnt also mit CiviCRM-ID= 10000)
end=20000 (der Job endet mit CiviCRM-ID= 20000)

Und: Der Job sollte meines Erachtens nicht regelmäßig laufen, sondern nur gelegentlich von Hand gestartet werden.

Wenn man all das beachtet – dann macht diese Extension viel Spaß!

Und wenn ihr Anregungen und Wünsche für die Weiterentwicklung habt, meldet euch bitte bei uns – wir sammeln derzeit Ideen, wie wir mit dieser Extension weiter vorankommen können.