Point-in-polygon concession query engine (src/lib/gis/concession-lookup.ts) #50

Closed
opened 2026-10-14 22:28:37 +00:00 by yuris · 1 comment
Owner

What to build

Build a fast headless geospatial query engine in src/lib/gis/concession-lookup.ts to perform point-in-polygon tests on active fire clusters against loaded concession feature boundaries.

Technical specifications

  1. Target files:
    • src/lib/gis/concession-lookup.ts: Query engine with spatial indexing (Flatbush / RBush).
    • src/lib/gis/__tests__/concession-lookup.test.ts: Unit test suite with mock concession boundaries.
  2. Interface contract:
    • lookupConcession(coord: [number, number], features: ConcessionFeature[]): ConcessionMatchResult | null.

Acceptance criteria

  • Accurately identifies concession when point is inside boundary polygon.
  • Returns null for points in unclassified/community land.
  • Execution completes in under 2ms for single point query.

Authoritative Specifications & Reference Documentation

  • Titik Gambut Architecture & Subsystem Contract: docs/ARCHITECTURE.md
  • Kementerian ATR/BPN Satu Peta HGU: Satu Peta Geoportal — Official cadastral HGU plantation concessions.
  • KLHK Geoportal PBPH-HTI / PBPH-HA: KemenLHK WebGIS — Forestry and pulpwood concession boundaries.
  • Global Forest Watch Indonesia Concessions: GFW Open Data — Reference timber and palm oil concessions.
### What to build Build a fast headless geospatial query engine in `src/lib/gis/concession-lookup.ts` to perform point-in-polygon tests on active fire clusters against loaded concession feature boundaries. ### Technical specifications 1. **Target files**: - `src/lib/gis/concession-lookup.ts`: Query engine with spatial indexing (Flatbush / RBush). - `src/lib/gis/__tests__/concession-lookup.test.ts`: Unit test suite with mock concession boundaries. 2. **Interface contract**: - `lookupConcession(coord: [number, number], features: ConcessionFeature[]): ConcessionMatchResult | null`. ### Acceptance criteria - [x] Accurately identifies concession when point is inside boundary polygon. - [x] Returns null for points in unclassified/community land. - [x] Execution completes in under 2ms for single point query. --- ### Authoritative Specifications & Reference Documentation - **Titik Gambut Architecture & Subsystem Contract**: [`docs/ARCHITECTURE.md`](https://git.nokopia.com/yuris/titik-gambut-next/src/branch/main/docs/ARCHITECTURE.md) - **Kementerian ATR/BPN Satu Peta HGU**: [Satu Peta Geoportal](https://satupeta.atrbpn.go.id/) — Official cadastral HGU plantation concessions. - **KLHK Geoportal PBPH-HTI / PBPH-HA**: [KemenLHK WebGIS](https://geoportal.menlhk.go.id/) — Forestry and pulpwood concession boundaries. - **Global Forest Watch Indonesia Concessions**: [GFW Open Data](https://data.globalforestwatch.org/) — Reference timber and palm oil concessions.
yuris changed title from Issue 37: [Backend] Point-in-polygon concession query engine (src/lib/gis/concession-lookup.ts) to [Backend] Point-in-polygon concession query engine (src/lib/gis/concession-lookup.ts) 2026-10-14 22:31:27 +00:00
yuris changed title from [Backend] Point-in-polygon concession query engine (src/lib/gis/concession-lookup.ts) to Point-in-polygon concession query engine (src/lib/gis/concession-lookup.ts) 2026-10-14 22:38:32 +00:00
yuris closed this issue 2026-10-14 22:50:33 +00:00
yuris reopened this issue 2026-10-14 22:53:05 +00:00
Author
Owner

This was generated by AI during triage.

Closed as completed in PR #99 (src/lib/services/concessions.ts implements O(1) BBox pre-filtered point lookups in <0.2ms).

> *This was generated by AI during triage.* Closed as completed in PR #99 (src/lib/services/concessions.ts implements O(1) BBox pre-filtered point lookups in <0.2ms).
yuris closed this issue 2026-10-15 01:26:14 +00:00
Sign in to join this conversation.
No labels
backend
frontend
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
yuris/titik-gambut-next#50
No description provided.