Skip to content

Reimplement data workflow with subdivision/indexing/cache #347

Description

@twelch

Need:

Previously there was a workflow that would subdivide vector data using PostGIS subdivision, use bundle-features to publish the data with an index (custom), and VectorDataSource to quickly fetch vector data using the index, given a bounding box and optionally merge the subdivided polygon back into a larger one. fetched results would be cached client-side to avoid extra re-fetches.

The previous solution:

  • existed before Flatgeobuf and Cloud-optimized geotiff's with built-in index existed and were stable.
  • only worked for polygon data, and not all polygons (were still some error cases)
  • had a lot of manual scripted steps to manage it
  • has suffered from bit rot, the bundle-features code no longer works, particularly the Slonik Postgres interface.

The problem:

  • global datasets like political boundaries and shoreline have too large of polygons to be efficiently fetched for a lot of countries.

Immediate vector workaround solution:

  • Subdivide dataset manually using whatever makes sense, doesn't have to be PostGIS, perhaps https://github.com/jvail/spl.js/
  • publish subdivided flatgeobuf as normal (import:data/publish:data) and use getFeatures to fetch
  • union result using Turf (likely much slower than VectorDataSource which can stitch back together subdivided quickly). Can we repurpose old union code?

Full replacement solution would:

  • support both vector and raster
  • JS client - build on top of or into Geoblaze and Flatgeobuf clients.
  • client-side cache - will need to cache using a unique way to identify the range of data fetched (byte range? for flatgeobuf). And a way to read it back out client-side. Support reuse of cache across lambda invocations via shared global memory
  • provide client-side caching
  • Union - previous implementation could do this very quickly. Consider options - Turf could certainly do it.

References:

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions