Anfänger in Geodaten mit Frage für Fortgeschrittene

Liebe Alle

Mir ist bewusst, dass OpenStreetMap nicht unbedingt der richtige Ort für mein Anliegen ist. Allerdings habe ich beim Lesen einer Forenbeiträge doch gesehen, dass hier auch die geballte Geo-Informatik Kompetenz versammelt.

Ich bin von meiner Disziplin her Soziologe. Für mich hat sich aber in den letzten Monaten meiner Forschung gezeigt welche Potentiale in der Verknüpfung von Geodaten, sozialräumliche Daten mit anderen öffentlichen zugänglichen Daten bzw. Personendaten liegen. Nun habe ich auch die eine oder andere Forschungsidee, aber keine Ahnung wie ich diese technisch umsetzen soll. Die jenigen, die bei der technischen Umsetzung helfen können, verlangen leider zu viel Geld dafür (verschiedene Geomarketing-Dienstleister).
Ich will an dieser Stelle auch gar nicht weiter ins Detail gehen (Vielleicht in späteren Posts).

Zur eigentlichen Frage: Für ein Projekt stellt sich das Problem, dass ich Adressen verschiedener Gebäude habe (in Excell abgelegt). Auf der anderen Seite habe ich Personen, auch jeweils mit Adressen. Ich will für die gesamte Datenbank berechnen wie weit der kürzeste Weg von einer Person zum nächsten der Gebäude ist. Das heißt also alle Personenadressen müssen mit allen Gebäudeadressen in Beziehung gesetzt werden und nur der Weg zum kürzesten Gebäude ausgewiesen werden.
Ich habe schon mitbekommen, dass man hier den Begriff “kürzeste” definieren muss: a) Mir würde eine schlichte Luftlinienentfernung ersteinmal ausreichen. b) Allerdings wäre mir die kürzeste Entfernung über Straßen deutlich lieber und dem Forschungsgegenstand angemessen.

Meine Frage ist also, kennt ihr (nicht kostenpflichtige) Programme die für dieses Problem Lösungen anbieten und relativ einfach in der Bedinung sind (also bspw. Klickmenü).

Wenn es dies nicht gibt würde ich mich interessieren, ob ihr (einfache) kommerzielle Programme kennt, die hierfür Lösungen bieten.

Vielen Dank im Voraus für eure Antworten
Marcel

Sind deine Gebäude und Adressen georeferenziert? Oder anders gefragt: Wie sehen deine Rohdaten aus?

Gruß Klaus

Hi Marcel, erst einmal herzlich willkommen im Forum!

Ich kann deine Frage sicher nicht beantworten, habe aber selber Fragen an dich:

  • Was meinst du hier mit “Adressen”? Stadt,Straße und Hausnummer oder bereits Geo-Koordinaten?
  • Wieviele sind es ungefähr?
  • Welche Gegend/Land?

Das sieht - für mich - nach einem Routing-Problem aus (Wie komme ich an besten von A nach B?) Dafür gibt es natürlich auch freie Programme, aber da können die meine Kollegen bestimmt weiter helfen.

Knackpunkt ist für mich: Stehen die Adressen/Koordinaten bereits in OSM drin und willst du überhaupt OSM-Daten verwenden?

Gruss
walter

Hallo Klaus, Hallo Walter

Die Adressen sind bisher nicht georeferenziert. Sie liegen bisher mit Ortsangabe, Postleitzahl, Straße und Hausnummer vor. Ich denke aber, dass es dafür unter umständen relativ einfache Lösungen geben müsste, diese Daten in georeferenzierte Daten umzuwandeln.
Ich beziehe mich bei meiner aktuellen Anfrage auf die Neuen Bundesländer, ohne Berlin. Mir liegen bisher nur die Daten für Thüringen vor (der Rest wird noch erarbeitet). Dies sind ca. 800 Gebäudeadressen. Für alle neuen Bundesländer sollten sich also um die 4000 Gebäudeadressen ergeben. Auf der anderen Seite stehen diesen Gebäudeadressen ca. 1000 Adressen gegenüber, mit denen diese in Beziehung gesetzt werden sollen.

@Walter
Ich bin mir nicht sicher, ob das Problem mit OSM gelöst werden kann. Ich gehe davon aus, dass diese Adressen alle in OSM aufgenommen sind. Allerdings bin ich auch blutiger Anfänger in OSM und weiß weder, ob ich meine Daten in OSM “einspeisen” oder verknüpfen kann, noch ob OSM für mein Problem eine Lösung bietet.

Gruss Marcel

Macht ca 5000 wenn man von eventuellen Doppelgängern absieht. Da mußt du dir natürlich die GEO-Koordinaten “besorgen”.

  • Google geht, darfst du aber nur, wenn du danach alles nur mit Google-Karten darstellst - nix OSM!
  • Nominatim (“unsere” Suchmaschine mit Geo-Coding) sollte gehen, wenn du die Koordinaten nicht alle auf einen Schlag abrufen willst.

Näheres können bestimmt die Kollegen sagen.

Nein, das sind sie bestimmt nicht! Wir haben noch viele Lücken. Mach halt mal eine Stichprobe mit openstreetmap.org oder openstreetmap.de. Die Seiten haben auch ein Suchfeld.

Waren wir alle mal :wink:

“Einspeisen” kannst, darfst und solltest du mMn nach - dann haben beide was davon. Nur Personen-Daten (“Hier wohnt/arbeitet Lieschen Müller”) sind bei uns taboo. Firmen, Büros, Läden, Behörden, … gehen allerdings.

Gruss
walter

Bitte aber auf Doppelungen achten - eventuell ist die Adresse vorhanden. Wenn du Thüringen hast, ein Beispiel erstellen. Am günstigsten - und anschaulich - ist ein Beispiel (Stadt?). Da genügen (erst einmal) wenige Adressen - dort kann man auch die “Verknüpfungen” besser beschreiben/diskutieren.

… hier solltest du genauer beschreiben wie die Beziehungen ermitteln werden soll. Z.B. jede Adresse mit allen Gebäuden in Beziehug setzen, die nahesten 1, 5, … n Gebäude für jede Adresse ermitteln, …

Gruß Klaus

Ich denke sobald die Adressen Geokoordinaten haben ist das Problem der Luftlinienentfernung ein ganz kleines. Zur Not kann man die Koordinaten umrechnen und dann mit einfacher trigonometrie arbeiten.
Beim Routing wird das schon schwerer. Denn hier ist ja nicht das nächstgelegene Gebäude auch das nächst erreichbare. Insbesondere wenn Flüsse oder Autobahnen dazwischen liegen.
Aber im Prinzip gab es dafür mal pgrouting. Damit kann man schnell viele Wege in der Datenbank ermitteln. Davon habe ich aber schon lange nichts mehr gehört.
Andere Router wie den Graphhopper kann man sicher mittels eines Skriptes auf einem lokalen Server ansprechen und so die 5 wahrscheinlichsten Beziehungen überprüfen. Bei zuviel Zeit natürlich auch alle.

Ich führe gerade ähnliches durch und habe bei 250 Adressen quer durch Deutschland (nach Korrektur der Erfassungsfehler in den Adressen) eine direkte Trefferquote von 40% auf Objektebene. Allerdings ist die Frage, was die Auswirkung auf Deine Analyse ist, wenn man statt einer Hausnummer den Mittelpunkt einer Straße nimmt (bei einer 1 km langen Straße wäre das ein Fehler von 500m)?

Beim Routine braucht man auch nr die Strecken mit der kürzesten Luftentfernung berechnen. Man muss nur weitere Luftentfernung dazu nehmen, wenn die Länge der zu erst berechneten Route länger ist als die nächtlängere Luftentfernung.

Damit dürfte wirklich fast alles gesagt sein: Wäre nur noch die Frage, bis wann denn das alles stehen soll?

Mit freundlichen Grüßen Georg V.

Liebe Alle

Vielen Dank für eure hilfreichen Hinweise.
Ich denke aber, dass mir das leider noch nicht ganz weiterhilft.

  1. Schritt - Überführung von Adressen in Geo-Daten:
    Nominatim ist zwar eine einfache Lösung dies zu tun. Allerdings ist das nicht praktikabel, wenn man mit ca. 5.000 Adressen arbeitet.
    Ich suche also eher eine Datenbank, in der man Adressen einlesen kann und diese dann in Geodaten outputen kann. Die Einzeleingabe dauert zu lange.

@ Klaus “… hier solltest du genauer beschreiben wie die Beziehungen ermitteln werden soll. Z.B. jede Adresse mit allen Gebäuden in Beziehug setzen, die nahesten 1, 5, … n Gebäude für jede Adresse ermitteln, …”

Es geht mir nur um die nächste Entfernung

@ Georg V.: Führst du das mit OSM durch? Und musst du alle Adressen separat irgendwo eingeben, oder gibt es eine Möglichkeit 5.000 Adressen gleichzeitig einlesen zu können?

LG Marcel

das geht natürlich auch per Programm. Hier ist die API beschrieben: http://wiki.openstreetmap.org/wiki/DE:Nominatim

Und die API (Application Programming Interface) kannst du natürlich aus fast jeder Programmsprache verwenden.
Java, Javascript, PHP, Perl, C++ und was es so noch gibt.

URL zusammenbasteln, per HttpRequest abschicken, Ergebnisse (xml) parsen.

Nur darfst du nicht alle 5000 Adressen auf einen Schlag abholen, damit würdest du gegen die Nutzungsbedingungen verstoßen.

Gruss
walter

Nachdem ich bisher für kleine, private Anwendung zum geocoden immer http://www.gpsvisualizer.com/geocoder/ [1] mit MapQuest Daten
verwendet hatte, wollte ich auch angesichts der Lizenzprobleme mit fremden Geocoder es mal mit Nomatim probieren.

Stunden später, hauptsächlich beim Kampf mit “ß” und Umlauten in verschieden Kodierungen, bin ich jetzt so weit.
Ein perl Skript liest die Straßenadresse aus einer CSV Datei, generiert einen Nomatim Aufruf mit wget und
extrahiert lat und lon aus der Ergebnisdatei. Damit die Nomatim Fair Use Bedingungen nicht verletzt werden,
warte ich nach jedem Aufruf eine Sekunde.

Ergebnisse:

  1. Während [1] zu allen Adressen ein auf den ersten Blick eine plausible Position ermittelte, gab Nomatim bei einigen
    Adressen kein Ergebnis.
  2. Die Analyse ergab, dass diese Adressen im CSV einen Schreibfehler enthielten, was [1] anscheinend verkraftete, Nomatim aber nicht.
    In einem anderen Fall war die CSV Adresse korrekt, aber die OSM Straße falsch. (Öfele statt korrekt Im Öfele)
  3. Im nächsten Schritt schaute ich mir die Nomatim graphisch genauer an. Dabei stellte sich heraus, dass ca. 25% der Hausnummern
    in OSM fehlten, aber auch [1] teilweise nur die Straße traf, aber an anderer Stelle als Nomatim.
    Im Prinzip lässt sich aus dem Nomatim output erkennen, ob die Adresse exakt
    vorhanden war oder nur die Straße gefunden wurde, aber das ist noch etwas Programmierarbeit.
  4. Also Adressen in OSM an Hand der BW Daten nachtragen.
  5. Jetzt liefern zwei Nomatim Abfragen noch zwei Lat/lon Paare. Die Ursache dafür ist, dass es in den OSM Daten jeweils zwei
    Adressen wie 23 und 23/1 gibt. Auch dies lässt sich mit einigen Aufwand aus den Nomatim Daten isolieren.

Fazit:
In Zukunft werde ich mein Skript und Nomatim zu Geocoden verwenden, da hier die Datenbasis und das Ergebnis besser nachvollziehbar
ist und OSM damit event. neue Adressen erhält. Wahrscheinlich muss ich am Skript noch nacharbeiten, 2 Dutzend Beispiele in
Deutschland sind sicher nicht repräsentativ für alle möglichen Fälle.

Bei der gegenwärtigen OSM Datenlage bezüglich Adressen kann das anfangs formulierte Problem wahrscheinlich nur mit großem
Aufwand gelöst werden, es sei denn Straßengenauigkeit ist ausreichend. Nomatim liefert eine Bounding Box der Ergebnisse, damit
kann man eine Genauigkeitsabschätzung machen.

Wirst du das Skript nach Fertigstellung zur Verfügung stellen?

Gruß Klaus

+1

Mach ich gerne, schick ne PN, aber erwartet nicht zu viel.

Als fixe Idee: in der Wochenotiz wurde der neue Overpass-Python Wrapper vorgestellt.
Vielleicht wäre das ganze damit ja sogar noch einfacher (und aufgrund der Overpass-Optionen sogar noch flexibler) als Nominatim…

Werd mich im Oktober auch mit einem ähnlichen Thema beschäftigen müssen und werde dann weiter berichten :slight_smile:

Für Perl hatte ich vor einiger Zeit mal ein Programm zur Abfrage der Overpass-Api geschrieben. Das Utility könnte möglicher eine Basis zur automatisierten Datenermittlung sein. es findet sich hier: http://www.easyclasspage.de/maptools/seite-2.html

Gruß Klaus

Nominatim liefert normalerweise auch sowas mit wie

class="place" type="house"

oder

class="highway" type="residential"
  • daran kann man sehen, ob er ein Haus gefunden hat oder eine Bushaltestelle oder eine Straße etc.

Bye
Frederik