Landshut/Adressdaten

From OpenStreetMap Wiki
Jump to: navigation, search

Zurück zu Landshut Projekte

Weiter zu Passau/Adressdaten

2013-09-16 addr:interpolation

Das gehört eliminiert, sobald eine Straße alle Hausnummern hat. Tobi soll da ein Skript dafür schreiben.


2013-09-08 Adressdatenloch Schirmgasse Ecke Zwerggasse

Bei Sichtung der Adressaten der Stadt Landshut ist mir aufgefallen dass es an der Ecke Schirmgasse/Zwerggasse ein loch gibt. Ich war dann vor Ort und musste zu meiner Verwunderung feststellen dass es dort mehrere von außen eigenständig erscheinende Gebäude mit der gleichen Hausnummer gibt.

Skizze

Bilder

http://www.open-landshut.de/osm/Landshut/Schirmgasse/tmp/

2013-09-04 'source'-Tag

Es gibt keine wirkliche Übereinkunft, aber irgendwo im source-tag, einem note-tag oder dem commit-Kommentar sollte folgender Text hinterlegt sein:

 Stadt Landshut, see http://wiki.openstreetmap.org/wiki/Landshut/Adressdaten


2013-09-04 Nützliche Tools/Links

JOSM: Coloured addresses

Im JOSM Menü unter 'Ansicht' -> 'MapPaint-Stile' das Plugin 'coloured addresses' oder 'coloured streets' installieren und aktivieren. Damit werden alle Häuser einer gleichen Straße gleich eingefärbt.

Housenumber validator

Extern Link: housenumbervalidator

Zeigt identische Adressdaten innerhalb eines bestimmten Umkreises als Javascript Overlay an.

2013-09-02 Hausnummernliste Vergleich OSM/Stadt

Datengrundlage

Wir haben von einer Quelle eine Text-Liste mit Strassenname, Hausnummer, Koordinaten. Dem entgegen steht die OSM Datenbank in einem postgresql Server.

SQL Daten

Um aus der OSM Datenbank den Strassennamen extrahieren zu koennen, muss beim Import ein stylesheet file mit angegeben werden! Damit kann man angeben, welche Spalten in der Datenbank angelegt werden. Offensichtlich gehört im default der Strassennamen nicht dazu.... Hier die Erweiterungen vom Tobi:

 node,way   addr:street               text  linear
 node,way   addr:streetname     text  linear
 node,way   addr:interpolation  text  linear
 node,way   addr:postcode       text  linear
 node,way   addr:city         text  linear
 node,war   addr:country              text  linear 

Diese neue default.style (das Original liegt bei mir unter /usr/local/share/osm2pgsql/default.style) muss beim osm2pgsql Programm mit dem -S Parameter angegeben werden.

Um die Hausnummerdaten zu extrahieren wird innerhalb eines perl-Skripts (deshalb die escapten Anführungsstriche) folgendes ausgeführt:

 
$sth = $dbh->prepare('
  SELECT DISTINCT 
  point."addr:housenumber" AS housenumber,
  convert_to(point."addr:street",\'latin-1\') AS streetname,
  planet_osm_point.osm_id AS id
  FROM planet_osm_polygon AS city
  JOIN planet_osm_polygon AS point
  ON ST_CONTAINS(city.way, point.way)
  WHERE city.name = \'Landshut\'
  AND point."addr:housenumber" != \'\';');

Damit liegen die Daten im vergleichbaren ASCII Format vor wie die Quelle.

Vergleichen - Gauss-Krüger/WGS84

Zwei ASCII Dateien zu diffen kann auf beliebige Weise erledigt werden. Hier brute force Zeile für Zeile der Qeuelle einlesen und testen, ob sie im Ziel vorkommt. Dauert ein paar Minuten für unsere ca 15.000 Adressen.

Ein vom Gernot verschlamptes Problem (-: waren die Koordinaten im Gauss-Krüger Format, die er ja eigentlich schon mal konvertiert hatte. Aber auch dafür gibt es eine skriptbare Lösung: 'cs2cs' heisst das Tool, es war - warum auch immer - schon auf unserem OSM Rechner installiert. Und es konvertiert die Gauss-Krüger Koordinaten in das gewünschte WGS84 Format. Das GK Format ist relativ komplex und benötigt weitere Informationen über die West-Ost Position um entsprechende Tabellen anzuwenden. Kurzum, wir haben es in Bayern so gelöst:

 cs2cs -f "%.10f" +init=epsg:31468 +to +proj=latlong +init=epsg:4326

Entscheidend dabei ist der '31468' Parameter, der eben über die West-Ost Position entscheidet. Weitere Informationen gibt es hier. Ein einfaches Beispiel:

 echo "4511228.718   5376193.078" | cs2cs -f "%.10f" +init=epsg:31468 +to +proj=latlong +init=epsg:4326 
 12.1506105627   48.5233606898 2.4325408842

Was die 3. Zahl bedeutet (2.43) weiss ich nicht...

JOSM remote control

Mit diesen Informationen ist es jetzt möglich, zwei Differenzen zu bilden: Was fehlt in OSM, und: was fehlt der Quelle (oder ist zuviel in OSM)?

Mit der Ausgabe der Koordinaten 'Quelle weiss mehr als Ziel' kann man dann jetzt auch ganz einfach den JOSM fernsteuern und ihn an die Stelle springen lassen, wo noch eine Hausnummer in OSM fehlt oder andersherum. Eine sehr einfache Methode ist:

Wir generieren eine HTML Datei, die textlich ledigliche die diff-Informationen beinhaltet, plus einem Hyperlink. Der Hyperlink verweist auf den JOSM, der hoffentlich irgendwo im Hintergrund läuft und auf Port localhost:8111 auf HTTP requests lauscht. Das sieht dann so aus:

 
  <a href=http://localhost:8111/zoom?left=12.1506105627&right=12.1506105627&top=48.5233606898&bottom=48.5233606898>JOSM</a>
  

Der Zoombereicht ist letztlich nur ein Punkt, JOSM sucht dann schon einen passenden Detailbereich von Zoomlevel aus, wie auch immer...

Der Browser bekommt ein 'OK' als neuen Fensterinhalt. Das kann man dann mit AJAX lösen oder den 'Zurück'-Button drücken.

OSM Node Id Inspektor

Hat man eine OSM Adresse, zu der es keine Spender-Adresse gibt, möchte man vielleicht dieses Objekt näher untersuchen. Dazu bietet sich folgende URL an:

 
  http://www.openstreetmap.org/browse/node/<nodeid>
  oder
  http://www.openstreetmap.org/?node=<id>
  http://www.openstreetmap.org/?way=<id>
  http://www.openstreetmap.org/?relation=<id>
  

Wobei <nodeid> natürlich die OSM Node Id ist, die man sich vorher aus Tobis Extraktionsskript hat geben lassen.

Weitere Ideen

  • Bisher ist das Ganze ein 'proof of concept'. Denkbar wäre beispielsweise eine Historie, ein Graph, der die Entwicklung der Erfassung anzeigt, wie wir es bei der Straßenliste hatten.
  • Können wir damit OSMler zum Mitmachen anspornen? Es sind immerhin ca 15.000 Nodes...
  • Gibt es die Möglichkeit, dass innerhalb des Erfassungsbereichs Straßennamen doppelt vorkommen?
  • Kommunikation mit der Quelle bei offensichtlichen Unstimmigkeiten

bash nerds 02:00 am

Warum funktioniert folgendes Skript nicht?

 while read f < foo.txt; do
   echo $f;
 done

Weil die redirection aus foo.txt sich nur auf das 'read' bezieht und jedesmal wieder nur die erste Zeile gelesen wird. 'read' kann aber nur von stdin oder einem file descriptor lesen. Wie erzeuge ich so einen file desciptor?

 exec 3<foo.txt
 while read f -u3; do
   ...

Der Trick besteht im 'exec', das genau die redirection in der aktuellen Shell durchführt. Ansonten bezieht sich das <foo.txt auf das ausgeführte Kommand, das ohne exec einfach ein leeres Kommando wäre.

Warum nicht

 cat foo.txt | while read f; do
    ...

Weil sonst folgende Konstruktion nicht funktionieren würde:

 linecount=0
 cat foo.txt | while read f; do
   linecount=$(($linecount+1))
 done
 echo $linecount

Liefert '0'.

Der 'linecount' im Inneren der 'while' Schleife hat eine eigene Shell wegen der Pipe (|).

PS: Tip von gernot:

 while read f; do
   ...
 done <foo.txt

Geht einfacher, wenn man's weiss ;)

2013-08-15 Hausnummernliste Stadt Landshut

Es gibt seit August 2013 eine Vereinbarung mit der Stadt Landshut, nach der uns regelmäßig (z.Zt. quartalsweise) eine geokodierte Liste aller Hausnummern für das Stadtgebiet vom Amt für Bauaufsicht, SG Geoinformation und Vermessung zur Verfügung gestellt wird. Diese wird zur Zeit von den Mappern gernot, blutsauger, F6F und Czmartin manuell in die OSM-Datenbank eingepflegt. Bei Interesse bitte Kontakt mit uns aufnehmen oder noch besser zu einem unserer Stammtische kommen!

Unser Vorgehen:

  • Die Hausnummern+Strassennamen Tags an das Gebaeude haengen, wenn es sich um ein einzelnes Hausnummerngebaeude handelt.
  • Bei Doppel- oder Reihenhaeusern die Hausnummern Nodes einzeln ueber das building verteilen.
  • Die Koordinaten aus der städtischen Liste sind zwar recht genau, aber nicht dem Eingang zum Gebäude zugeordnet, sondern liegen aus internen Gründen üblicherweise hinten am Gebäude. Wir haben diese daher teils manuell "in das Gebäude geschoben", lies: die Nodes taugen nicht, um das Gebäude exakt auszurichten - es sollte nur sichergestellt sein, dass die Nodes innerhalb des Gebäudes liegen.
  • Einige buildings haben bereits weitere Informationen wie PLZ usw. die bleiben unverändert.

2013-04 - Wie alles begann

Siehe auch dazu den Artikel, wie die Koopertion mit der Stadt Landshut begann ->hier