Unified Governance, Telemetry & Interactive Portfolio Studio for 50 Pure-Python Spatial Intelligence Packages.
This repository is the single source of truth for a portfolio of fifty pure-Python geospatial and GeoAI SDKs. A single generator script turns a hand-maintained registry plus live PyPI / GitHub telemetry into a static, self-contained governance dashboard.
The generated page is a zero-backend HTML application that ships with:
| Dashboard tab | What it shows |
|---|---|
| Executive Cockpit | KPI cards (LOC, downloads, algorithms, wheel size, releases) and four Chart.js visualizations. |
| Portfolio Telemetry | Sortable, searchable package table with per-package drill-down, license, version and action links. |
| Econometric Forecasting | Bass diffusion and Gompertz S-curve projections of ecosystem adoption through 2027. |
| Quality & Benchmarks | Coverage, memory, throughput, CI status and security audit matrix. |
| Neural Architecture | Interactive HTML5 Canvas topology of the ecosystem data flow. |
| Developer REPL Studio | Copy-ready, syntax-checked code samples for every SDK. |
| Cite & DOI | Zenodo DOI badges plus APA and BibTeX citations for every SDK. |
Everything is emitted to docs/, which is deployed directly by GitHub Pages. No
database, server, or client-side build step is involved.
| SDK Package | PyPI Project | License | Primary Capabilities |
|---|---|---|---|
geoai2analytics-sdk |
MIT | 81 spatial statistics & econometrics algorithms, Moran's I, LISA, GWR/MGWR, Spatial SHAP. | |
multilayer-sdk |
MIT | Synchronized 2β8 panel map grids, real-time laser crosshairs, curtain swipe changer. | |
myface2city |
MIT | Optical urban portrait engine, variable-radius vector stippling, OSM client, SVG exporter. | |
NCZ2Geo |
GPL-2.0-or-later | Proprietary Netcad NCZ/NCA parser, PlanGML zoning identity, official e-Plan symbology. | |
cad2geo |
GPL-2.0-or-later | High-speed binary CAD block decompressor, coordinate reprojector, and GeoJSON engine. | |
osm2threejs |
MIT | Headless 3D procedural city generation into Three.js WebGL scenes, glTF/GLB & OBJ. | |
zero2route3d-sdk |
MIT | 3D DEM slope kinematics, Minetti metabolic energy routing, HMM Viterbi map-matching. | |
planx-sdk |
MIT | Spatial planning MCDA (AHP/TOPSIS/ARAS/COPRAS), 28 urban resilience indices, cellular automata. | |
planx-3d-city |
MIT | Headless Three.js 3D city builder: GeoJSON, GeoDataFrames and DEMs into a portable browser viewer. | |
zero2geospatial3d-sdk |
MIT | Sun hours, shadows, sky view factor, UTCI/PET comfort, noise, flooding and cut/fill on 3D terrain. | |
nkde |
MIT | Network kernel density estimation (NKDE / TNKDE) along street networks, with network K-function and hot spots. |
| SDK Package | PyPI Project | License | Primary Capabilities |
|---|---|---|---|
tr-deprem |
MIT | Turkish earthquake data in Python: AFAD, Kandilli, USGS and EMSC through one interface. | |
tr-adres |
MIT | Parse and normalise free-text Turkish postal addresses, dependency-free. | |
turkgrid |
MIT | Zero-dependency coordinate conversion for Turkey: TUREF/ED50 3-degree TM, UTM and EPSG:1784. | |
tr-imar |
MIT | Turkish zoning (imar) calculations: TAKS/KAKS, the 30% emsal-disi cap, setbacks, building height, parking and compliance. | |
tr-donati |
MIT | Social-infrastructure (donati) area standards for Turkish plans: Mekansal Planlar Yapim Yonetmeligi EK-2. | |
tr-tbdy |
MIT | TBDY 2018 seismic design spectra: site coefficients, SDS/SD1, elastic, vertical, displacement and reduced spectra. | |
tr-acikveri |
MIT | One client for Turkish CKAN open-data portals: multi-portal search, polite downloads and cp1254 CSV/GeoJSON reading. | |
tr-nufus |
MIT | Population projection methods for Turkish plan reports: Iller Bankasi, logistic, cohort-component and MAPE back-testing. |
| SDK Package | PyPI Project | License | Primary Capabilities |
|---|---|---|---|
urban-mcp |
MIT | Model Context Protocol server with 24 urban planning, mobility and spatial-statistics tools. | |
openwalkscore |
MIT | Open, transparent, API-key-free 0-100 walkability scores computed from OpenStreetMap. | |
sdg11 |
MIT | UN SDG 11 urban indicators from open data, following UN-Habitat / WHO methodology. | |
landmix |
MIT | Land-use mix and diversity indices: entropy, HHI, Simpson, Hill numbers, jobs-housing balance and dissimilarity. | |
spacematrix |
MIT | Spacematrix urban density (FSI, GSI, OSR, L, N, T) at lot, island, fabric and district level, with TAKS/KAKS comparison. |
| SDK Package | PyPI Project | License | Primary Capabilities |
|---|---|---|---|
geofix |
MIT | Fast, dependency-light GeoJSON validator and repairer for the CLI, pre-commit and CI. | |
gtfslint-cli |
MIT | Fast, pure-Python GTFS Schedule validator and quality report that runs in CI. | |
geojson-diff |
MIT | Feature-level diffs of GeoJSON datasets for git, pull requests and data pipelines. | |
whatcrs |
MIT | Guess the coordinate reference system of mystery coordinates, with ranked EPSG candidates. | |
trackclean |
MIT | Clean, smooth, segment and measure raw GPS trajectories in pure Python + NumPy. | |
poi-dedupe |
MIT | Deduplicate and conflate points of interest from several sources into golden records. |
| SDK Package | PyPI Project | License | Primary Capabilities |
|---|---|---|---|
tilefetch |
MIT | Download XYZ/TMS/WMTS tiles for an area into a GeoTIFF/PNG, MBTiles, PMTiles or z/x/y folder. | |
bboxkit |
MIT | Parse, convert and compute bounding boxes in every common convention, antimeridian-safe. | |
gpkglite |
MIT | Read, write and validate OGC GeoPackage files in pure Python, without GDAL. | |
geocsv |
MIT | Turn any CSV or spreadsheet of places into GeoJSON, GeoPackage, KML or GPX without GDAL. | |
geoparquet-lite |
MIT | Read, write and validate GeoParquet 1.0/1.1 with only pyarrow: WKB and native GeoArrow encodings. | |
coglite |
MIT | Read windows, pixels and overviews from Cloud-Optimized GeoTIFFs over HTTP(S) or local files with numpy only. | |
geobatch |
MIT | Polite, resumable batch geocoding of spreadsheets over Nominatim, Photon, Pelias and API-key providers. |
| SDK Package | PyPI Project | License | Primary Capabilities |
|---|---|---|---|
spatialcv |
MIT | Spatial cross-validation splitters for scikit-learn: blocks, buffers, NNDM and kNNDM. | |
spatialsample |
MIT | Design-based spatial sampling: GRTS, BAS, LPM, stratified designs and Horvitz-Thompson estimation. | |
geomask |
MIT | Geographic masking of confidential point data, with privacy and utility metrics. | |
mockgeo |
MIT | Deterministic synthetic geospatial test data: cities, GPS tracks, transit feeds and rasters. |
| SDK Package | PyPI Project | License | Primary Capabilities |
|---|---|---|---|
routematrix |
MIT | Large origin-destination travel-time and distance matrices from OSRM, Valhalla, GraphHopper and openrouteservice. | |
crashmap |
MIT | Road-safety network screening: HSM crash frequency, rate, EPDO, Empirical Bayes, negative binomial SPFs and hotspots. | |
geofencing |
MIT | Fast, dependency-free geofencing: point-in-fence checks, an R-tree over thousands of fences and enter/exit/dwell events. | |
bikelts |
MIT | Bicycle Level of Traffic Stress (LTS 1-4) from OpenStreetMap tags or tables, with low-stress connectivity analysis. |
| SDK Package | PyPI Project | License | Primary Capabilities |
|---|---|---|---|
roadnoise |
MIT | Screening-level road traffic noise: CNOSSOS-EU source model, ISO 9613 propagation, Lden/Lnight and END exposure. | |
heatstress |
MIT | Vectorised heat-stress indices: Heat Index, Humidex, wet bulb, WBGT (Liljegren), UTCI, risk categories and heatwaves. | |
urbanshadow |
MIT | Building shadows and sun hours from 2D footprints and heights, with the BRE 209 two-hours-on-21-March test. |
| SDK Package | PyPI Project | License | Primary Capabilities |
|---|---|---|---|
retailgravity |
MIT | Retail catchment and spatial interaction models: Huff, MCI, Reilly/Converse and Wilson's constrained gravity models. | |
odflows |
MIT | Origin-destination flow toolkit: OD tables, desire lines, zone re-aggregation, flow clustering and Intramax regions. |
pip install geoai2analytics-sdk multilayer-sdk myface2city NCZ2Geo cad2geo osm2threejs zero2route3d-sdk planx-sdk planx-3d-city zero2geospatial3d-sdk tr-deprem tr-adres turkgrid urban-mcp openwalkscore sdg11 geofix gtfslint-cli geojson-diff whatcrs trackclean poi-dedupe tilefetch bboxkit gpkglite geocsv spatialcv spatialsample geomask mockgeo routematrix nkde roadnoise geoparquet-lite crashmap heatstress coglite geofencing bikelts geobatch tr-imar tr-donati tr-tbdy tr-acikveri tr-nufus landmix urbanshadow spacematrix retailgravity odflowsEach package can also be installed on its own, for example:
pip install cad2geo- Python 3.12+ (the generator uses nested f-strings with escapes).
- Network access is optional but recommended; it enables live PyPI and download statistics.
- The GitHub CLI (
gh) is optional; when authenticated it adds star, fork and issue counts.
git clone https://github.com/YusufEminoglu/python-sdk-governance.git pypi_sdk_governance
cd pypi_sdk_governance
# Regenerate docs/index.html and append today's telemetry snapshot
python generate_pypi_hub.pyThe command is idempotent per day: an existing snapshot for the current UTC date is replaced rather than duplicated. The script always exits successfully β a failed network call falls back to safe defaults and is reported in the console.
python -m http.server 8000 --directory docs
# then open http://localhost:8000/You can also open docs/index.html directly in a browser; assets are either inline
or referenced from CDNs.
pypi_sdk_governance/
βββ generate_pypi_hub.py # Registry + telemetry collector + HTML generator
βββ sdk_history.json # Rolling 90-day telemetry snapshots
βββ docs/
β βββ index.html # Generated dashboard (do not edit by hand)
β βββ .nojekyll # Disable Jekyll processing on Pages
β βββ icons/ # Favicon and logo
βββ tests/
β βββ test_registry.py # Static registry & telemetry integrity tests
βββ .github/workflows/
β βββ daily_sync.yml # Nightly regenerate + GitHub Pages deploy
βββ pyproject.toml # Ruff and pytest configuration
βββ README.md
βββ LICENSE
Note:
docs/index.htmlis generated output. Editgenerate_pypi_hub.pyand re-run it instead of patching the HTML directly.
SDK_REGISTRY in generate_pypi_hub.py is the only hand-maintained source of package
metadata. Each entry must provide:
| Field | Purpose |
|---|---|
id |
Stable slug used by the dashboard and modal lookups. |
name, pypi, gh_repo |
Display name, canonical PyPI project, GitHub repository. |
category, tagline |
Grouping and one-line description. |
color, color_glow, gradient |
Per-package visual identity. |
license |
SPDX-style license identifier (must match the SDK's pyproject.toml). |
docs_url, pypi_url, github_url |
Outbound links. |
pip |
Copy-ready install command (pip install <pypi>). |
algorithms_count |
Number of documented algorithms/engines. |
pure_python, ci_status, coverage, benchmark_speed, memory_overhead |
Quality and benchmark claims. |
bass_m, bass_p, bass_q |
Bass diffusion parameters used by the forecast tab. |
highlights |
Bullet list shown in the detail modal. |
repl_example |
Valid Python snippet rendered in the REPL tab. |
To add a new SDK:
- Append a complete entry to
SDK_REGISTRY. - Add the repository to
local_dir_mappingso source LOC can be scanned. - Add any new category filter to the
filter-pillsmarkup. - Run
python -m pytest -qβ the registry tests will flag missing keys or duplicate identifiers.
sdk_history.json is a list of daily snapshots:
[
{
"date": "2026-09-06",
"timestamp": "2026-09-06T17:10:43.924042+00:00",
"packages": {
"cad2geo": {
"version": "0.12.1",
"downloads_month": 0,
"stars": 0,
"releases": 4,
"pypi_size_kb": 76.1,
"real_loc": 5507
}
}
}
]Snapshots are ordered chronologically and capped at 90 entries.
.github/workflows/daily_sync.yml runs every day at 00:00 UTC (and on pushes to
main):
- Checks out the repository and installs Python 3.13.
- Installs the pinned
ruffandpytestversions and runs the lint/format/test gate. - Runs
python generate_pypi_hub.py. - Commits
docs/index.htmlwhen telemetry changed. - Uploads
docs/as a GitHub Pages artifact and deploys it.
No secrets are required. GitHub statistics rely on the workflow token; local runs can
use the gh CLI for richer data.
python -m pip install pytest ruff
# Static integrity tests for the registry and telemetry log
python -m pytest -q
# Lint and formatting
python -m ruff check .
python -m ruff format --check .The test suite deliberately does not execute generate_pypi_hub.py; it parses the
module with ast so tests remain fast and work offline. It verifies:
- exactly fifty packages and unique identifiers;
- required registry fields, install commands and URL conventions;
- registry licenses against the expected upstream values;
- that every REPL snippet is syntactically valid Python;
sdk_history.jsonstructure, ordering and retention limit.
The governance hub, documentation, and generator are released under the MIT
License (see LICENSE). Individual SDK packages retain their own
licenses, as listed in the table above.