Files
GeoData/AGENTS.md

2.8 KiB

Repository Guidelines

Project Structure & Module Organization

  • raw_dgm1/: source DGM1 tiles (.tif + .tfw) named dgm1_<utm_zone>_<easting>_<northing>.tif.
  • raw_3dgeb_lod1/ and raw_3dgeb_lod2/: LoD1/LoD2 building geometries as .gml with sidecar .txt metadata.
  • raw_dop/: orthophoto download artifacts (scripts, certs, jp2, xml, j2w); treat as read-only inputs.
  • export_unity/: delivery assets; height_png16/ holds 16-bit heightmaps, tile_index.csv maps tile IDs to world bounds and global min/max.
  • work/: transient artifacts such as dgm.vrt and intermediate _tmp.tif files; safe to regenerate.
  • 3dgeblod1/, 3dgeblod2/, dgm/: preserved ZIPs and object lists documenting raw downloads; keep for provenance.
  • export_heightmaps.py: main Python pipeline that mosaics the VRT, rescales to UInt16, and writes Unity-friendly tiles.

Build, Test, and Development Commands

  • Create/refresh VRT (run in repo root):
    gdalbuildvrt work/dgm.vrt raw_dgm1/*.tif
  • Export Unity-ready heightmaps and manifest:
    python3 export_heightmaps.py
  • Inspect a tile for sanity (optional spot check):
    gdalinfo export_unity/height_png16/dgm1_32_328_5511.png | head
  • Dependencies: GDAL with Python bindings (osgeo) available on PATH/PYTHONPATH.
  • If processing LoD GML or DOP imagery, keep scripts/data under the respective raw_* folders; avoid scattering inputs.

Coding Style & Naming Conventions

  • Python: 4-space indentation, snake_case identifiers, and module-level constants for tunables (e.g., TILE_SIZE_M, OUT_RES).
  • Keep tile IDs stable and lower_snake_case to align with file naming and manifest entries.
  • Prefer small, composable functions if extending the pipeline; keep GDAL options explicit.

Testing & Validation

  • No formal test suite yet; validate changes by re-running export_heightmaps.py on a small subset and diffing outputs.
  • For correctness, compare gdalinfo stats of regenerated PNGs against expectations and spot-check manifest bounds.
  • When altering scaling or bounds logic, document rationale in comments and update an example command in this guide if needed.

Commit & Pull Request Guidelines

  • Use short, imperative commit messages (e.g., “add resampling flag”, “document export flow”); follow existing history style.
  • PRs should summarize scope, list commands executed (gdalbuildvrt, export_heightmaps.py), and call out data changes or new dependencies.
  • Avoid committing large raw datasets if not required; prefer documenting download steps or using .gitignore for temporary exports.
  • Include screenshots or brief notes when changes affect Unity import workflows or manifest formats.
  • Note the presence of archived downloads in 3dgeblod* and dgm/; do not delete them without replacing provenance elsewhere.