ActiveInferenceInstitute

geo-infer-space

This skill provides H3 hexagonal spatial indexing and multi-backend spatial operations, including cell operations, coordinate system transformations, and spatial operations across H3, SRAI, and PostGIS backends. It solves the problem of inconsistent spatial indexing and backend dispatch by offering a unified interface for working with H3 cells, nested hierarchies, and raster/vector operations. Developers should use it when performing spatial indexing, coordinate transformations, or dispatching spatial operations across supported backends.

ActiveInferenceInstitute 18 3 Updated 2mo ago

Resources

8
GitHub

Install

npx skillscat add activeinferenceinstitute/geo-infer/geo-infer-space

Install via the SkillsCat registry.

About this skill

This skill provides H3 hexagonal spatial indexing and multi-backend spatial operations, including cell operations, coordinate system transformations, and spatial operations across H3, SRAI, and PostGIS backends. It solves the problem of inconsistent spatial indexing and backend dispatch by offering a unified interface for working with H3 cells, nested hierarchies, and raster/vector operations. Developers should use it when performing spatial indexing, coordinate transformations, or dispatching spatial operations across supported backends.

SKILL.md

GEO-INFER-SPACE

Instructions

Core Capabilities

  • H3 v4.5 indexing: Cell operations, hierarchical resolution, grid-disk neighborhoods
  • Nested H3 hierarchies: Parent/child closure, same-resolution adjacency,
    and deterministic aggregation for ordered H3 resolutions
  • Backend dispatch: Interface pattern for H3, SRAI, PostGIS backends
  • Coordinate systems: CRS transformations, EPSG management
  • Spatial operations: Buffers, intersections, unions, containment
  • Visualization: Choropleth maps, heatmaps, spatial dashboards

Key Imports

from geo_infer_space.backends.h3 import H3Backend
from geo_infer_space import GISManager
from geo_infer_space.core import (
    GeometricOperationsInterface,
    SpatialIndexingInterface,
)
from geo_infer_space.nested import NestedH3Grid

H3 v4.5 API (Critical)

import h3
# CORRECT (v4):
cell = h3.latlng_to_cell(lat, lng, resolution)
lat, lng = h3.cell_to_latlng(cell)
neighbors = h3.grid_disk(cell, k)

# Pre-v4 coordinate and neighborhood spellings are unsupported. The repository
# H3 contract validator rejects them in runtime source.

Examples

from geo_infer_space.backends.h3 import H3Backend

backend = H3Backend()

# Index a point to an H3 cell at resolution 7
cell = backend.latlng_to_cell(45.5231, -122.6765, resolution=7)
print(f"H3 cell: {cell}")

# Get neighbors
neighbors = backend.grid_disk(cell, k=2)
print(f"Neighbors (k=2): {len(neighbors)} cells")

# Tessellate a region
from shapely.geometry import box
region = box(-122.8, 45.4, -122.5, 45.6)
cells = backend.tessellate(region, resolution=8)
print(f"Tessellation: {len(cells)} cells")
from geo_infer_space.nested import NestedH3Grid

grid = NestedH3Grid("sf_nested")
hierarchy = grid.build_h3_hierarchy_from_cells(
    ["89283082803ffff"],
    resolutions=[7, 8, 9],
)

assert hierarchy["validation"]["is_valid"]
assert hierarchy["validation"]["orphan_count"] == 0
from geo_infer_space import GISManager

gis = GISManager()
x, y = gis.transform_coordinates(
    (-122.6, 45.5),
    from_crs="EPSG:4326",
    to_crs="EPSG:32610",
)
print(f"UTM Zone 10N: ({x:.0f}, {y:.0f})")

Guidelines

  • Always use H3 v4 API — zero legacy calls allowed
  • Runtime and dependency metadata must use real h3>=4.5.0,<5.
  • Backend-agnostic: use the dispatcher pattern, not direct H3 calls
  • For nested H3, construct hierarchies through NestedH3Grid; validate
    parent_child_map, child_parent_map, same_level_neighbors, and
    validation["orphan_count"] == 0 before handing cells to ACT.
  • EPSG:4326 (WGS84) is the default CRS
  • Test:
    uv run pytest GEO-INFER-SPACE/tests/unit/test_nested_h3_contract.py -q
    and uv run python -m pytest GEO-INFER-SPACE/tests/ -v

Integrations

  • MATH → Spatial weights for statistics
  • TIME → Spatio-temporal analysis
  • DATA → Spatial indexing of datasets
  • PLACE → Boundary tessellation with H3
  • Nearly every module depends on SPACE for geographic indexing