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.
Resources
8Install
npx skillscat add activeinferenceinstitute/geo-infer/geo-infer-space Install via the SkillsCat registry.
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.
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 NestedH3GridH3 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"] == 0from 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; validateparent_child_map,child_parent_map,same_level_neighbors, andvalidation["orphan_count"] == 0before 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
anduv 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