Skip to content

Latest commit

Β 

History

63 Commits

Folders and files

Repository files navigation

Python Spatial SDK Hub Logo

GeoAI & Spatial Python SDK Ecosystem Hub

Unified Governance, Telemetry & Interactive Portfolio Studio for 50 Pure-Python Spatial Intelligence Packages.

Live Dashboard Python 3.12+ License: MIT Packages


πŸ‘‰ Explore the Live Interactive Master Dashboard


πŸ“– Overview

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.


🌟 The 50 Pure-Python Geospatial SDKs

Core Spatial, Planning & 3D SDKs

SDK Package PyPI Project License Primary Capabilities
geoai2analytics-sdk PyPI MIT 81 spatial statistics & econometrics algorithms, Moran's I, LISA, GWR/MGWR, Spatial SHAP.
multilayer-sdk PyPI MIT Synchronized 2–8 panel map grids, real-time laser crosshairs, curtain swipe changer.
myface2city PyPI MIT Optical urban portrait engine, variable-radius vector stippling, OSM client, SVG exporter.
NCZ2Geo PyPI GPL-2.0-or-later Proprietary Netcad NCZ/NCA parser, PlanGML zoning identity, official e-Plan symbology.
cad2geo PyPI GPL-2.0-or-later High-speed binary CAD block decompressor, coordinate reprojector, and GeoJSON engine.
osm2threejs PyPI MIT Headless 3D procedural city generation into Three.js WebGL scenes, glTF/GLB & OBJ.
zero2route3d-sdk PyPI MIT 3D DEM slope kinematics, Minetti metabolic energy routing, HMM Viterbi map-matching.
planx-sdk PyPI MIT Spatial planning MCDA (AHP/TOPSIS/ARAS/COPRAS), 28 urban resilience indices, cellular automata.
planx-3d-city PyPI MIT Headless Three.js 3D city builder: GeoJSON, GeoDataFrames and DEMs into a portable browser viewer.
zero2geospatial3d-sdk PyPI MIT Sun hours, shadows, sky view factor, UTCI/PET comfort, noise, flooding and cut/fill on 3D terrain.
nkde PyPI MIT Network kernel density estimation (NKDE / TNKDE) along street networks, with network K-function and hot spots.

Turkey Geodata Toolkits

SDK Package PyPI Project License Primary Capabilities
tr-deprem PyPI MIT Turkish earthquake data in Python: AFAD, Kandilli, USGS and EMSC through one interface.
tr-adres PyPI MIT Parse and normalise free-text Turkish postal addresses, dependency-free.
turkgrid PyPI MIT Zero-dependency coordinate conversion for Turkey: TUREF/ED50 3-degree TM, UTM and EPSG:1784.
tr-imar PyPI MIT Turkish zoning (imar) calculations: TAKS/KAKS, the 30% emsal-disi cap, setbacks, building height, parking and compliance.
tr-donati PyPI MIT Social-infrastructure (donati) area standards for Turkish plans: Mekansal Planlar Yapim Yonetmeligi EK-2.
tr-tbdy PyPI MIT TBDY 2018 seismic design spectra: site coefficients, SDS/SD1, elastic, vertical, displacement and reduced spectra.
tr-acikveri PyPI MIT One client for Turkish CKAN open-data portals: multi-portal search, polite downloads and cp1254 CSV/GeoJSON reading.
tr-nufus PyPI MIT Population projection methods for Turkish plan reports: Iller Bankasi, logistic, cohort-component and MAPE back-testing.

Urban Analytics & Indicators

SDK Package PyPI Project License Primary Capabilities
urban-mcp PyPI MIT Model Context Protocol server with 24 urban planning, mobility and spatial-statistics tools.
openwalkscore PyPI MIT Open, transparent, API-key-free 0-100 walkability scores computed from OpenStreetMap.
sdg11 PyPI MIT UN SDG 11 urban indicators from open data, following UN-Habitat / WHO methodology.
landmix PyPI MIT Land-use mix and diversity indices: entropy, HHI, Simpson, Hill numbers, jobs-housing balance and dissimilarity.
spacematrix PyPI MIT Spacematrix urban density (FSI, GSI, OSR, L, N, T) at lot, island, fabric and district level, with TAKS/KAKS comparison.

Geodata Quality & Validation

SDK Package PyPI Project License Primary Capabilities
geofix PyPI MIT Fast, dependency-light GeoJSON validator and repairer for the CLI, pre-commit and CI.
gtfslint-cli PyPI MIT Fast, pure-Python GTFS Schedule validator and quality report that runs in CI.
geojson-diff PyPI MIT Feature-level diffs of GeoJSON datasets for git, pull requests and data pipelines.
whatcrs PyPI MIT Guess the coordinate reference system of mystery coordinates, with ranked EPSG candidates.
trackclean PyPI MIT Clean, smooth, segment and measure raw GPS trajectories in pure Python + NumPy.
poi-dedupe PyPI MIT Deduplicate and conflate points of interest from several sources into golden records.

Geodata I/O & Formats

SDK Package PyPI Project License Primary Capabilities
tilefetch PyPI MIT Download XYZ/TMS/WMTS tiles for an area into a GeoTIFF/PNG, MBTiles, PMTiles or z/x/y folder.
bboxkit PyPI MIT Parse, convert and compute bounding boxes in every common convention, antimeridian-safe.
gpkglite PyPI MIT Read, write and validate OGC GeoPackage files in pure Python, without GDAL.
geocsv PyPI MIT Turn any CSV or spreadsheet of places into GeoJSON, GeoPackage, KML or GPX without GDAL.
geoparquet-lite PyPI MIT Read, write and validate GeoParquet 1.0/1.1 with only pyarrow: WKB and native GeoArrow encodings.
coglite PyPI MIT Read windows, pixels and overviews from Cloud-Optimized GeoTIFFs over HTTP(S) or local files with numpy only.
geobatch PyPI MIT Polite, resumable batch geocoding of spreadsheets over Nominatim, Photon, Pelias and API-key providers.

Spatial ML, Sampling & Privacy

SDK Package PyPI Project License Primary Capabilities
spatialcv PyPI MIT Spatial cross-validation splitters for scikit-learn: blocks, buffers, NNDM and kNNDM.
spatialsample PyPI MIT Design-based spatial sampling: GRTS, BAS, LPM, stratified designs and Horvitz-Thompson estimation.
geomask PyPI MIT Geographic masking of confidential point data, with privacy and utility metrics.
mockgeo PyPI MIT Deterministic synthetic geospatial test data: cities, GPS tracks, transit feeds and rasters.

Mobility & Transport Safety

SDK Package PyPI Project License Primary Capabilities
routematrix PyPI MIT Large origin-destination travel-time and distance matrices from OSRM, Valhalla, GraphHopper and openrouteservice.
crashmap PyPI MIT Road-safety network screening: HSM crash frequency, rate, EPDO, Empirical Bayes, negative binomial SPFs and hotspots.
geofencing PyPI MIT Fast, dependency-free geofencing: point-in-fence checks, an R-tree over thousands of fences and enter/exit/dwell events.
bikelts PyPI MIT Bicycle Level of Traffic Stress (LTS 1-4) from OpenStreetMap tags or tables, with low-stress connectivity analysis.

Climate & Environmental Health

SDK Package PyPI Project License Primary Capabilities
roadnoise PyPI MIT Screening-level road traffic noise: CNOSSOS-EU source model, ISO 9613 propagation, Lden/Lnight and END exposure.
heatstress PyPI MIT Vectorised heat-stress indices: Heat Index, Humidex, wet bulb, WBGT (Liljegren), UTCI, risk categories and heatwaves.
urbanshadow PyPI MIT Building shadows and sun hours from 2D footprints and heights, with the BRE 209 two-hours-on-21-March test.

Spatial Interaction & Flows

SDK Package PyPI Project License Primary Capabilities
retailgravity PyPI MIT Retail catchment and spatial interaction models: Huff, MCI, Reilly/Converse and Wilson's constrained gravity models.
odflows PyPI MIT Origin-destination flow toolkit: OD tables, desire lines, zone re-aggregation, flow clustering and Intramax regions.

⚑ Quick Multi-Install

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 odflows

Each package can also be installed on its own, for example:

pip install cad2geo

πŸš€ Running the Hub Locally

Requirements

  • 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.

Generate the dashboard

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.py

The 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.

Preview the result

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.


πŸ—‚ Repository Layout

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.html is generated output. Edit generate_pypi_hub.py and re-run it instead of patching the HTML directly.


🧩 How the Registry Works

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:

  1. Append a complete entry to SDK_REGISTRY.
  2. Add the repository to local_dir_mapping so source LOC can be scanned.
  3. Add any new category filter to the filter-pills markup.
  4. Run python -m pytest -q β€” the registry tests will flag missing keys or duplicate identifiers.

Telemetry history schema

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.


πŸ€– Automation

.github/workflows/daily_sync.yml runs every day at 00:00 UTC (and on pushes to main):

  1. Checks out the repository and installs Python 3.13.
  2. Installs the pinned ruff and pytest versions and runs the lint/format/test gate.
  3. Runs python generate_pypi_hub.py.
  4. Commits docs/index.html when telemetry changed.
  5. 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.


πŸ§ͺ Development & Quality Checks

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.json structure, ordering and retention limit.

πŸ“œ License

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.

Releases

Packages

Contributors

Languages