I used the CityGML LoD2 model of Hamburg here, http://daten-hamburg.de/geographie_geologie_geobasisdaten/3d_stadtmodell_lod2/LoD2-DE_HH_2017-12-31.zip from http://suche.transparenz.hamburg.de/dataset/3d-stadtmodell-lod2-de-hamburg3. (If you do this for Hamburg, you might want to not include Neuwerk’s tiles ;))
1. https://github.com/tudelft3d/CityGML2OBJs/
python2 CityGML2OBJs.py -i LoD2-DE_HH_2017-12-31.zip/ -o LoD2-DE_HH_2017-12-31.zip_obj/
converts each CityGML file to a obj (takes about half an hour on my system).
2. http://gfx.cs.princeton.edu/proj/trimesh2/
mesh_cat LoD2-DE_HH_2017-12-31.zip_obj/*.obj -o LoD2-DE_HH_2017-12-31.zip.obj
turns them into one single obj.
mesh_filter LoD2-DE_HH_2017-12-31.zip.obj -center -scale 0.001 -rot 90 -1 0 0 LoD2-DE_HH_2017-12-31.zip_localised.obj
translates “so center of mass is at (0,0,0)” and scales to something smaller and rotates so that z is up. trimesh2’s documentation on the rot parameter is insufficient, I think my solution means “rotate by 90 degrees -1 times around x, 0 times around y, 0 times around z” or something like that. Look into the source if that helps you.
3. https://google.github.io/draco/
draco_encoder -i LoD2-DE_HH_2017-12-31.zip_localised.obj -o LoD2-DE_HH_2017-12-31.zip_localised.obj.drc
makes it tiny (8 Megabyte).
I did not do any error checking, used a epsilon of 1 in CityGML2OBJs and just wanted to play around.
Hey Hannes,
Thanks for your post!, helped me a lot!
After some searching I found this online service ([stripped]) to download city model as .obj
Did it, really? Your post is as spammy as they can get so I removed the link and mention of the website. Try being more honest when promoting your projects.