gadm-ts/cpp/README.md
2026-03-23 15:47:35 +01:00

64 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# gadm-boundaries
Native C++ boundaries batch generator for the GADM pipeline.
Uses GDAL/GEOS/PROJ for **10100× speedup** over the TypeScript pipeline on geometry union + GHS raster enrichment.
## Prerequisites
| Tool | Version |
|------|---------|
| CMake | ≥ 3.20 |
| C++ compiler | C++20 (MSVC, GCC, or Clang) |
| vcpkg | Latest (set `VCPKG_ROOT` env var) |
## Setup
```bash
# Install native dependencies (one-time)
vcpkg install
```
## Build
```bash
# Release (Ninja)
cmake --preset vcpkg
cmake --build build --config Release
# Windows MSVC
cmake --preset vcpkg-win
cmake --build build --config Release
# Debug
cmake --preset dev
cmake --build build/dev
```
## Usage
```bash
# All countries, all levels
./build/boundaries --country=all
# Single country, specific level
./build/boundaries --country=DEU --level=0
# Force regeneration (ignore cache)
./build/boundaries --country=NGA --force
```
Output goes to `cache/gadm/boundary_{code}_{level}.json` — drop-in replacement for the TS pipeline.
## Architecture
See [docs/cpp-port.md](../docs/cpp-port.md) for the full spec.
```
src/
├── main.cpp # CLI entry, country loop, cache logic
├── gpkg_reader.h/cpp # GeoPackage → features (OGR)
├── geo_merge.h/cpp # Geometry union (GEOS)
├── ghs_enrich.h/cpp # GeoTIFF raster sampling + PIP
├── pip.h # Inline ray-casting point-in-polygon
└── types.h # BoundaryFeature, BoundaryResult structs
```