Pivot
Pivot은 오픈 데이터 형식 기반 고성능 실시간 분석 데이터베이스입니다
서칼리만탄 지역 사회림에서 생물다양성·탄소·생계 간 보전 계획의 트레이드오프를 다중 구역으로 분석한다
Multi-zone conservation planning trade-offs between biodiversity, carbon and livelihoods for a community-forest landscape in West Kalimantan, Indonesian Borneo.
데이터Python · JavaScriptGitHub @yanhildebrand온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Multi-zone conservation planning and trade-off explorer for a community-forest landscape in West Kalimantan (open data, HiGHS, prioritizr cross-check, static MapLibre app)
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗This repository plans conservation zones for a community-forest landscape in West Kalimantan (Indonesian Borneo) and lets you explore the trade-offs between biodiversity, carbon and livelihoods. It is reproducible end to end and uses open data only.
The landscape is the Cagar Alam Gunung Nyiut nature reserve plus a 10 km belt of surrounding village land, 294 kha in total. For every target combination, the pipeline finds the zoning (protection / sustainable use & agroforestry / community use) that meets the biodiversity and carbon targets at the smallest loss of livelihood opportunity. A static web app then lets anyone move through 150 precomputed plans with sliders.
Open the explorer → · 2-page methods note · scope · build report
Demonstrator, not a recommendation. The real project landscape and field data are not public, so the habitat and livelihood layers are transparent proxies (see limitations). The pipeline is built so that the project's own layers can replace them.
flowchart LR
A[Open data<br/>STAC / COG range reads] --> B[100 m layers<br/>forest, carbon, BII, DEM,<br/>roads, settlements]
B --> C[Derived layers<br/>connectivity, condition,<br/>travel time, streams,<br/>livelihood opportunity]
C --> D[Features & costs<br/>4 forest types, 7 species,<br/>carbon; 11,730 x 25 ha PUs]
D --> E[Multi-zone MILP<br/>min-set + boundary penalty<br/>HiGHS]
E --> F[150 scenarios<br/>metrics + zonings]
F --> G[Static explorer<br/>MapLibre, GitHub Pages]
F --> H[Figures + methods PDF]
Formulation. This is the prioritizr / Marxan-with-Zones minimum-set problem. Each planning
unit is assigned to one zone. Each feature f must reach its target, counting
x_P + κ_f · x_A (protection secures all of a feature, agroforestry a share κ). The objective
is the livelihood opportunity forgone plus a zone-boundary penalty; P|C edges cost twice as
much as P|A or A|C edges, which rewards buffered protection cores. It is solved exactly as a
mixed-integer programme with HiGHS (all 150 plans within 0.9 % of
optimal, ~2.6 s each). Six scenarios re-solved in R with prioritizr 9.0.1 give
identical objectives and identical zonings
(results/prioritizr_crosscheck.csv); the cross-check
script is R/prioritizr_crosscheck.R. Full details are in the methods note and
src/zoning/solver.py.
Scenario axes:
| Layer | Source | Licence |
|---|---|---|
| Tree cover 2000, loss 2001–2024 | Hansen/UMD/Google/USGS/NASA Global Forest Change v1.12 | CC BY 4.0 |
| Land cover 2021, 10 m | ESA WorldCover v200 (AWS COG) | CC BY 4.0 |
| Above-ground biomass 2024 + SD | ESA CCI Biomass v7.0 (CEDA) | ESA CCI data policy (free, attribution) |
| Elevation / slope / streams | Copernicus DEM GLO-30 (AWS COG) | Copernicus DEM licence |
| Biodiversity Intactness Index 2020 | Impact Observatory & Vizzuality (Planetary Computer STAC) | CC BY 4.0 |
| Roads, settlements, rivers, reserve boundary | © OpenStreetMap contributors (Overpass API) | ODbL |
| Regency boundaries | geoBoundaries gbOpen (BPS / OCHA) | open |
| Species occurrences (plausibility check only) | GBIF occurrence API | per record |
| Basemap (app only) | Sentinel-2 cloudless 2023 by EOX | CC BY-NC-SA 4.0 |
Downloads use HTTP range requests on Cloud-Optimised GeoTIFFs or tiles. Only the study window
is transferred (about 55 MB in total). Every request is logged with URL, size and date in
data/manifest.json.
Requires uv (the Python 3.12 environment is locked in uv.lock).
uv sync --locked --all-groups
uv run zx all # or: make all
make serve # explorer at http://localhost:8000
zx all runs these stages, each cached and individually callable (uv run zx <stage>):
| Stage | What it does |
|---|---|
aoi | Study area from OSM + geoBoundaries |
download | Clipped downloads |
layers | 100 m harmonised and derived layers |
check | GBIF plausibility check |
problem | Planning units, features, costs |
solve | 150 scenarios with HiGHS, ~2 min on 5 cores |
export | App data |
figures | Figures and docs/numbers.json |
methods | Typst → docs/methods.pdf |
Use --force to rebuild a stage. The optional zx crosscheck stage compares the solver with
prioritizr; it needs R with prioritizr, highs and tibble. Rscript is found on PATH, via
ZX_RSCRIPT, or via an uncommitted config/local.yaml with rscript: and r_libs: keys. The study area, zones, features and scenario grid are plain
YAML in config/. Pointing config/study_area.yaml at another landscape re-runs
everything there.
config/ study area, zones, features/species rules, scenario grid
R/ prioritizr cross-check (reference formulation in R)
src/zoning/ pipeline package (sources, layers, hydrology, accessibility, species,
problem, solver, scenarios, metrics, export, figures, cli)
app/ static explorer (index.html, app.js, style.css) + generated data/
data/ manifest.json (provenance) + processed/ planning-unit table
results/ scenario metrics, zonings, GBIF check
docs/ methods.typ/.pdf, figures, screenshots
tests/ pytest suite
make test runs ruff and the pytest suite, which covers:
GitHub Actions runs the same suite and builds the methods PDF. A second CI job installs R and
prioritizr and requires the cross-check to match. A separate workflow deploys app/ to GitHub
Pages.
The explorer is meant for workshops. Communities and partners set targets and zone rules, see the consequences immediately, and discuss the protection-frequency map: units protected in almost every plan are robust, while units that switch between plans are where choices matter. Real zoning requires free, prior and informed consent, participatory mapping of customary land and resource use, and community-defined targets. The tool supports those processes; it does not replace them.
See REPORT.md. In brief:
Jan Hildebrand (@yanhildebrand).
app/data, results and data/processed: CC BY 4.0, subject to the
upstream licences above. OSM-derived extracts are ODbL.Citation metadata is in CITATION.cff.