Portable grid specs for any CRS: a family of CRS instances sharing one lattice, plus its domain, ID scheme and alignment to other grids. Early design stage; see brief.md.
schema/crsgrid.schema.json: the spec, as a JSON Schema (v0.1 draft)examples/: grids expressed as specs:aatgrid,equi7grid,s2mgrs,nsidc-polar-stereo,rema-2m,cop30,gibs-polarfixtures/: conformance cases (spec + input → expected output), generated by an oracletools/fixtures-aatgrid.R,tools/fixtures-s2mgrs.R: generate fixtures from the aatgrid package, and from real Sentinel-2 items plus GeographicLib;fixtures/equi7grid.jsonandfixtures/nsidc-polar-stereo.jsonare transcribed from the upstream Equi7Grid tests and the NSIDC guide;tools/fixtures-vrt.pyreads REMA and COP30 tile placements from their VRTs;tools/fixtures-wmts.pyreads GIBS tile matrices from WMTS capabilitiestools/check_fixtures.py: checks a spec reproduces its fixtures using only the spec (python3 tools/check_fixtures.py fixtures/*.json; needs jsonschema, pyproj, and shapely + pyarrow for polygon domains)tools/lint.py: first lint pass (python3 tools/lint.py examples/*.json)tools/propose.py: AOI -> proposed spec, with rounding table, known-CRS check and lint (python3 tools/propose.py --bbox=143.5,148.5,-43.7,-39.5 --res 10,20,60); worked examples inexamples/proposed/tools/align.py: are two specs aligned? (python3 tools/align.py examples/aatgrid.json examples/s2mgrs.json)r/: the R runtime (packagecrsgrid, gdalraster-based), passing every fixture; seer/README.mdnotes/: background surveys