Rostocker Gebäudehöhen Import 2009
Import der Gebäudehöhen vom Katasteramt
Einleitung
Die Uni Bonn arbeitet am Projekt OSM-3D. Sie haben beim Katasteramt Rostock nachgefragt, ob auch die Höhendaten der Gebäudedaten herausgegeben werden können. Daraufhin hat das Katasteramt sie veröffentlicht.
Lizenz
Folgende Mail habe ich (Leoss) am Mi 12.08.2009 12:44 von Herrn Pasternack vom Katasteramt dazu erhalten.
hiermit gestatten wir dem Projekt OpenStreetMap 3D die Nutzung der Gebäudehöhen. Diese wurden aus den Daten einer HRSC-Befliegung im Jahr 2002 im Zusammenhang mit den Gebäudedaten der Automatisierten Liegenschaftskarte (ALK) im Auftrag der Hansestadt durch die Universität Rostock berechnet und im Jahr 2005 überarbeitet. Wir machen darauf aufmerksam, dass die Höhen nicht vollständig sind und kein Anspruch auf Vollständigkeit, Richtigkeit und Laufendhaltung gestellt werden kann. Wir sind uns bewusst, dass die Daten anschließend unter der CC-by-sa Lizenz ( http://creativecommons.org/licenses/by-sa/2.0/de/ ) stehen.
Folgende Mail habe ich (Leoss) am 06.06.2011 von Herrn Pasternack vom Katasteramt erhalten:
Die Hansestadt Rostock stellt alle bisherigen an OpenStreetMap gespendeten Daten, welche unter der CC-by-sa Lizenz (http://creativecommons.org/licenses/by-sa/2.0/de/ ) gestellt wurden, unter der ODbL (http://www.opendatacommons.org/licenses/odbl/1.0/) zur Verfügung.
Datenbasis
Für die Objektkoordinaten jedes Gebäudes wurden folgende Parameter in einer txt Datei ausgegeben: "Rechtswert";"Hochwert";"Höhe_Gelände";"Höhe_Gebäude" Die Punktkoordinaten wurden zunächt mit dem Open Source Program QGIS in ein Punkt Shape umgewandelt (Plugin: Layer aus Textdatei erstellen). Dann wurden die existierenden Gebäudegrundrisse in ArcGIS mit den Höhenwerten verschnitten (Spatial Join) und anschließend die Attribute als OSM Datei exportiert. So konnte den Gebäuden eine Höhe zugeordnet werden. Die von der Stadt Rostock zur Verfügung gestellten Gebäudegrundrisse wurden gefiltert (z.B. Gartenhäuser und Carports). Die Daten der Gebäudehöhen wurden nicht selektiert.
Probleme ergeben sich aus diesem Vorgehen:
- Es gibt Gebäude deren Objektkooridinate außerhalb des Gebäudes liegt. Hier konnte dann keine Gebäudehöhe zugeordnet werden. Das kann zum Beispiel dann der Fall sein wenn ein Gebäudeteil der Grundrisse ausgefiltert wurde und dann die Objektkoordinate aus der Erfassung der Gebäudehöhen nicht mehr innerhalb des Grundrisses liegt.
- Es gibt für Gebäude mehrere Punkte mit Höhenangaben für Teile des Gebäudes die so nicht in den Grundrissen differenziert wurden. Hier wurde die maximale Höhe als Wert genommen.
- Für viele Höhenwerte waren keine entsprechenden Gebäudegrundrisse vorhanden.
Die o.g. Punkte 1 und 3 haben ihre Ursache in der Differenz der Daten (Zeitspanne zwischen Höhenermittlung aus der Befliegung 2002 und der Abgabe der Gebäudegrundrisse vom Frühjahr 2009). Weiterhin sind die Gebäudegrundrisse selektiert (z.B. keine Carports, Gartenhäuser ...), die Höhen dagegen nicht. Gruß. --KVLA-HRO 12:40, 28 August 2009 (UTC)
Download der zur Verfügung gestellten Daten:
- http://www.informatik.uni-rostock.de/~mgarbe/osm/Hoehe_gebaeude_UTM.txt.zip (April 2009)
- http://www.informatik.uni-rostock.de/~mgarbe/osm/fehlende%20hoehen1.ZIP (Januar 2011)
Vorgehen
Here is some text in English. Don't ask why.
This text is about automatically modifying large osm data and there problems. We take here as example the import of the heights of houses in Rostock, Germany (2009/08/22).
We have a CSV file with way ids and heights. Now osm data must be changed.
The best way would be to download all data, change it and upload it again. But here are some problems:
- The data to download is a large area. This data cannot be downloaded with the osm api in one operation. The normal api limits a request to 0.25 square degrees.
- You cannot upload much new/changed data in one operation.
- Lack of software. There are some programms and libraries with different features. But there is no library which supports all operations of the api 0.6.
- Solutions for problem 1: Instead of using the normal api you can use the daily planet dumps for example from geofabrik. There you can download eg. dump of the province Mecklenburg Vorpommern. This can be processed with osmosis to split the file or extract ways. Problem: because of the "daily" dump the data is sometimes not current because someone changed something in the last hours.
- Solution for problem 2: In the mailing list somebody suggested to split large uploads into parts with maximum of 1000 changes. For me 2000 changes worked too but it lasts long and above 2000 you get trouble when making transactional uploads. You need to automate this. Manual editing is too time consuming.
- Solution for problem 3: In the future there should be at least one library which supports all features of api 0.6.
Back to our special problem: Inserting the heights of houses.
- Possibility 1: Downloading single way with normal api, changing it and uploading it again. But this means 17.000 download and upload operations. That's too bad.
- Possibility 2: One optimal solution would be to download data with multiget operation from normal api. Download 1000 ways in one step. Then change and upload the data. At the moment that's not possible because no library supports both multiget and generating changesets.
- Possibility 3: Downloading the data with xapi or daily planet files, splitting data into smaller parts eg. 2000 houses, insert heights and uploading file with JOSM. That was the way I managed it (2009/08/22) Yes, it was very time consuming :) I wouldn't do it this way again.
Alternative approach for automatic upload
The following procedure is based on the PythonOsmApi and should do the import quite automatically in a quick and safe way.
This approach was tested (read-only) with all datasets of the Rostock height import 2008, which contains 17.000 items. The final upload was tested only with one small changeset (since the "real" import was done with the approach described in the section above) containing one item.
How it is done:
- convert the input "dbf" file (dbase) into a csv file with semicolon delimiters (e.g. using OpenOffice)
- extract the way-ID and the height value from each line and skip the header line:
cat input.csv | cut --output-delimiter=" " -d ";" -f 2,6 | grep "^[0-9]" >list_of_house_heights.list
- download the PythonOsmApi file
- download the Python script for uploading the height data: https://svn.systemausfall.org/svn/codekasten/osm/rostock_import_height_2009/
- read the comments at the top of the python script
- add your osm username and password to the script
- pipe a number of input lines from the data file into the script, e.g.:
sed -n 1,1000p list_of_house_heights.list | add_height.py
- probably you should not send more than 1000 changes within one changeset. YMMV
Ergebnis
Das erste auf OSM Daten basierende LOD1 (Klötzchenmodell) 3D Stadtmodell kann nun via dem OSM-3D Web Service interaktiv erkundet werden. Andere Software wertet dies ebenfalls aus 3D Development.
Nachbearbeitung
Die Daten wurden jetzt importiert. Wenn jemand Fehler oder Unstimmigkeiten findet, möge er es hier melden. Eine Korrektur kann durch Angabe der Stockwerke erfolgen, die man z.B. mit BING Maps Vogelperspektive wunderbar ablesen kann.
Gebiet | Straße | Gebäude | Anmerkung |
---|---|---|---|
Südstadt | Albert-Einstein-Str. | Uni-Bibliothek Südstadt | 1.7 m ist ein wenig sehr wenig :) |