22a76114e01147db76d5f0345fbec2c57d38addb
GeoData Heightmap Export
This repository converts DGM1 elevation tiles into Unity-ready 16-bit PNG heightmaps and a placement manifest. It relies on GDAL for mosaicking, resampling, and scaling to UInt16 ranges Unity expects.
Prerequisites
- GDAL installed with Python bindings (
osgeoimportable). - Python 3.9+ available on PATH.
- DGM1 source tiles placed in
raw_dgm1/asdgm1_<utm_zone>_<easting>_<northing>.tif(with matching.tfwfiles). - Raw inputs (
raw_dop/,raw_3dgeb_lod1/,raw_3dgeb_lod2/) are kept out of git; keep them locally or document how to fetch/regenerate.
Repository Layout
raw_dgm1/— input rasters (not versioned).raw_dop/— raw orthophoto downloads (JP2/J2W/XML), ignored in git.raw_3dgeb_lod1/,raw_3dgeb_lod2/— CityGML building tiles, ignored in git.work/— intermediates such asdgm.vrtand_tmp.tiffiles; safe to delete/regenerate.export_unity/height_png16/— final 16-bit PNG heightmaps for Unity import.export_unity/tile_index.csv— manifest mapping tile IDs to world bounds and global min/max used for scaling.export_unity/ortho_jpg/— cropped orthophoto tiles aligned to the terrain grid (JPEG + worldfiles).export_heightmaps.py— main export script.export_ortho_tiles.py— exports orthophoto tiles from DOP JP2 inputs using the terrain manifest.AGENTS.md— contributor guide.
Quick Start
- Export Unity heightmaps and manifest (builds
work/dgm.vrtautomatically if missing):python3 export_heightmaps.py - Import the PNGs into Unity Terrains using
tile_index.csvfor placement and consistent height scaling (0–65535).
Key Commands
- Refresh VRT:
gdalbuildvrt work/dgm.vrt raw_dgm1/*.tif - Run export pipeline:
python3 export_heightmaps.py - Inspect an output tile:
gdalinfo export_unity/height_png16/<tile>.png | head
Workflow Notes
- The script computes a global min/max from the VRT to scale all tiles consistently; adjust
OUT_RES,RESAMPLE, orTILE_SIZE_Minexport_heightmaps.pyif your AOI or target resolution changes. _tmp.tiffiles inwork/are transient; you can deletework/to force a clean rebuild.- Keep file names stable to avoid churn in Unity scenes; re-exports overwrite in place.
- Large raw datasets are intentionally excluded from version control—document download sources or scripts instead of committing data.
- Additional inputs:
raw_dop/contains an HTTPS download helper (raw_dop/dlscript.sh) that fetches JP2/J2W/XML orthophotos listed infilelist.txt;3dgeblod1/and3dgeblod2/hold zipped 3D building tiles with object lists for future use. - Handoff to Unity: copy/sync
export_unity/height_png16/andexport_unity/tile_index.csvintoDTrierFlood/Assets/GeoData/before running the Unity-side importer. KeepOUT_RESaligned with the importer’s expected resolution (currently 1025).
Orthophotos (textures)
- Ensure DOP JP2s are present in
raw_dop/jp2/(useraw_dop/dlscript.shif needed). - From
GeoData/, run:This buildspython3 export_ortho_tiles.pywork/dop.vrtif missing and writesexport_unity/ortho_jpg/<tile>.jpg+.jgwaligned totile_index.csv.
Buildings
The building export pipeline is temporarily disabled while we choose a mesh conversion approach (GDAL lacks a native OBJ writer). CityGML LoD2 sources remain in raw_3dgeb_lod2/ locally (ignored in git); consider CityGML→glTF/OBJ tools (e.g., citygml-tools + cityjson2gltf) for future integration.
Description
Languages
Python
66%
C#
26.4%
Shell
6%
Batchfile
1.6%