mirror of
https://github.com/apache/superset.git
synced 2026-05-21 15:55:10 +00:00
End-to-end working pipeline replacing the legacy notebook for one
worldview / admin level. Verified locally:
$ ./build.sh
Country Map build — pinned to NE v5.1.2 (f1890d9f)
Loaded 10 name override entries
Building worldview=ukr admin_level=0
Downloading NE ne_10m_admin_0_countries_ukr (worldview=ukr)…
mapshaper: ne_10m_admin_0_countries_ukr.shp → _raw_ukr_admin0.geo.json
loaded 249 features
name_overrides: applied 0 field updates across 10 entries
wrote .../output/ukr_admin0.geo.json (23,639,348 bytes)
Done.
What's wired:
- NE download from pinned tag (v5.1.2 / SHA f1890d9f) with cache
- Shapefile → GeoJSON via mapshaper CLI
- YAML config loading (currently just name_overrides)
- name_overrides transform with {match, set} semantics, including
the {in: [...]} list-membership matcher
- Output writes to scripts/output/ (gitignored)
- build.sh wrapper validates Python + Node + PyYAML are available
What's stubbed for future commits (TODO inline):
- Multiple worldviews (currently UA only)
- Admin 1 build (where name_overrides actually fire — currently no
features in Admin 0 match the FRA/PHL admin1 entries)
- flying_islands, territory_assignments, regional_aggregations,
composite_maps transforms
- Simplification (mapshaper -simplify)
- Procedural escape-hatch orchestration
- Manifest with NE SHA + build metadata
The 0 overrides applied is correct, not a bug: all current entries
target Admin 1 features.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
22 lines
608 B
Bash
Executable File
22 lines
608 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# Country Map build pipeline.
|
|
#
|
|
# One-shot, reproducible: pinned upstream NE version, deterministic outputs.
|
|
# Replaces the legacy Jupyter notebook. See README.md for details.
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
# Sanity checks
|
|
command -v python3 >/dev/null || { echo "python3 required" >&2; exit 1; }
|
|
command -v npx >/dev/null || { echo "npx (Node.js) required for mapshaper" >&2; exit 1; }
|
|
|
|
python3 -c "import yaml" 2>/dev/null || {
|
|
echo "PyYAML required: pip install pyyaml" >&2
|
|
exit 1
|
|
}
|
|
|
|
exec python3 build.py "$@"
|