Roofer Pipeline (Large scale automatic LoD2.2 building reconstruction)
| Cloud | Polygon | CityJSON | LOD |
|---|---|---|---|
| Input LAZ classified pointcloud (IGN LiDARHD) | Input GeoPackage Polygon | Output LOD2.2 building CityJSON | Output LOD2.2 building OBJ Mesh |
Automated pipeline demo on LiDARHD data and BDTopo building footprints to generate LOD2.2 building meshes in CityJSON and OBJ format from a lat-lon-radius input.
Done in WSL Ubuntu
cd ~/workspace/
sudo chown -R $USER:$USER "$(pwd)"
mkdir 3d && cd 3d
# Example with default Roofer data
curl -LO https://data.3dbag.nl/testdata/roofer/wippolder.zip && unzip wippolder.zip && rm wippolder.zip
docker run --rm -v $(pwd):/data 3dgi/roofer:v1.0.0-beta.5 roofer /data/wippolder/wippolder.las /data/wippolder/wippolder.gpkg /data/roofer_cityjson
# Example with a single building. GeoPackage contains a unique polygon representing the building area. Must be in same CRS as the LAZ data.
docker run --rm -v $(pwd):/data 3dgi/roofer:v1.0.0-beta.5 roofer /data/stsatur/points.laz /data/stsatur/poly.gpkg /data/roofer_cityjson
# View output CityJSON files in online viewer https://ninja.cityjson.org/
# Convert to CityGML
docker run --privileged --rm -v ~/workspace/3d/:/data citygml4j/citygml-tools:latest from-cityjson /data/roofer_cityjson/ -o /data/roofer_citygml
# Convert to OBJ
git clone https://github.com/tum-gis/CityGML2OBJv2.git
pip install numpy triangle lxml shapely scikit-learn open3d
mkdir ~/workspace/3d/roofer_obj
python CityGML2OBJv2/CityGML2OBJs.py -i ~/workspace/3d/roofer_citygml -o ~/workspace/3d/roofer_obj
# Open the OBJ file in CloudCompare