Landshut/Adressdaten
Zurück zu Landshut Projekte
Aktuell:Adressdaten 2017
English summary: The city of Landshut supports OpenStreetMap by regularly providing an export of all housenumbers with coordinates from Vermessungsamt Landshut. This page is about some details regarding merging this information into OSM. For more details, feel free to contact Blutsauger or gernot.
Deutsche Zusammenfassung: Die Stadt Landshut unterstützt OpenStreetMap durch Datenlieferungen der Landshuter Hausnummern inkl. Koordinaten. Diese Seite enthält einige Notizen zum Datenabgleich zwischen Stadt und OpenStreetMap. Benannte Kontakte für die Stadt sind die User gernot und blutsauger, die die Daten direkt bekommen. Die Daten dürfen dabei mit OSM abgeglichen werden, aber die Rohliste darf nicht verteilt oder veröffentlicht werden. Bei Fragen könnt Ihr uns gerne kontaktieren: Blutsauger / gernot.
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
ACHTUNG: cs2cs liefert u.U. keine optimale Genauigkeit, ggf. ist das Online-Tool des Bundesamt für Kartographie und Geodäsie besser, siehe DE:Gauß-Krüger.
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