Multi-Criteria Decision Analysis (MCDA) Engine with Social & Sensitive Receptor Spatial Scoring
| Locality / State | Cadastre Lot/Plan & Address | MCDA Score | Sensitive Buffer (S_sens) | Slope (%) | Area (ha) | Power (km) | Water (km) |
|---|
The candidate sites are scored and ranked according to a 5-Tier Spatial Constraint Model with Social & Sensitive Receptor Decay:
| State | Candidates | Avg Score | Avg Area | Avg Substation Dist | Avg WWTW Dist | Avg Sensitive Buffer | Avg Slope |
|---|
| Region | State | Candidates | Avg Score | Avg Area | Avg Substation Dist | Avg Sensitive Buffer |
|---|
AuraSiting Crafter decouples spatial geometry calculation from stakeholder-specific policy weights. Selecting a persona in the top dropdown or clicking below instantly reconfigures the real-time simulation engine:
Preset Weights: Power 40%, Sensitive 25%, Water 20%, Size 15%
Preset Weights: Power 40%, Sensitive 25%, Water 20%, Size 15%
Preset Weights: Power 40%, Sensitive 25%, Water 25%, Size 10%
Preset Weights: Power 50%, Size 20%, Water 15%, Sensitive 15%
Preset Weights: Sensitive 40%, Water 25%, Power 25%, Size 10%
During the development, benchmarking, and national scale-up of the AuraSiting Crafter AI data center suitability model, total cloud batch compute spend across dozens of full headless batch runs was ~$36 AUD (US$24.13).
ltq5l3obgb on aws-us-west-2).| Workflow / Pipeline Phase | Runs | Scope & Execution Profile | Cost Subtotal (USD) |
|---|---|---|---|
| Regional NSW Ingestion & Repair | ~14 runs | Raw vector ingestion, GDA2020 reprojections (EPSG:7856), ST_MakeValid, and 30m riparian / 20m pipeline buffers across 8 regional layers. | ~US$9.65 |
| Spatial Joins & Net Developable Overlays | ~11 runs | Evaluating 4.92M spatial join combinations and ST_Difference developable overlays across 1.75M regional geometries. | ~US$7.59 |
| National Hilbert Spatial Benchmarks | ~6 runs | Distributed spatial SQL queries and Hilbert space-filling curve partitioning across 15.91M national geometries. | ~US$4.14 |
| Automated QA & Regression Passes | ~4 runs | Automated topology validation, data lineage checks, and multi-criteria scoring verification. | ~US$2.75 |
| Total Automated Batch Runs | ~35 runs | 15.91M National Geometries & 1.75M Regional Features | US$24.13 (~$36 AUD) |
Cloud Cost Management & Runtime Lifecycle Best Practices
During initial developer setup, iterative query tuning, and interactive notebook experimentation, multi-session compute runs accumulated unexpected development costs against an early development invoice.
Following a joint resource utilization investigation with Wherobots engineering:
- Resource Utilization Breakdown (80% Active / 20% Idle): Detailed platform analysis confirmed that 80% of incurred compute occurred while operations were actively executing during exploratory testing, with 20% attributable to idle resource utilization before auto-shutdown.
- Built-In Platform Guardrails: Wherobots enforces built-in automated guardrails by default, shutting down inactive compute and notebooks with an 8-hour default Runtime TTL. Configurable idle timeout thresholds (15 / 45 / 120 minutes) are available directly in Runtime Settings.
- Idle Timeouts as a Safety Net, Not a Strategy: As emphasized in the Wherobots Managing Costs Guide, automated idle timeouts provide a crucial safety net, but proactive shutdown remains the optimal development practice.
- Mandatory Programmatic Teardowns: All Sedona and PySpark batch ETL scripts in this repository enforce strict
try...finally: sedona.stop()andspark.stop()blocks to release compute instantly upon job completion.- High Headless Batch Efficiency: In contrast to interactive exploration, production headless batch runs across 15.91M national geometries consumed only US$24.13 (~$36 AUD) across ~35 full pipeline runs (~$1.03 AUD per run), proving the remarkable cost-efficiency of right-sized headless batch execution.
Spatial siting pipelines consist of distinct computational tiers with vastly different resource requirements:
EPSG:7856), repairing invalid topologies (ST_MakeValid), constructing 30m riparian and 20m pipeline buffers, and computing ST_Difference developable overlays across millions of polygons.By structuring the pipeline as a directed acyclic graph (DAG) with intermediate materialized GeoParquet stages, tuning a scoring weight or modifying the sigmoidal acoustic threshold never triggers a re-run of the heavy geometric spatial joins. Only the downstream mathematical matrix recalculates.
Authoritative baseline layers change infrequently (15.4M Geoscape cadastre parcels, 368k ABS meshblocks, 275k rail network vectors, 241k power grid features). Implementing cryptographic content hashing (ETags, GeoParquet file hashes, and Iceberg snapshot manifest IDs) ensures that untouched spatial tables are bypassed during batch execution, reading directly from cached Havasu storage partitions.
When state planning portals publish quarterly cadastral updates, leveraging Apache Iceberg's ACID snapshot metadata allows Sedona to isolate and process only modified parcel geometries (ST_Changes) rather than executing full continental scans.
By compiling precomputed distance topologies into the standalone HTML report and offloading real-time multi-criteria exploration to in-browser JavaScript, millions of interactive public scenario evaluations occur at $0.00 cloud compute cost.
| Pipeline Stage | Unoptimized Full Re-Scan | Incremental & Decoupled | Savings Ratio |
|---|---|---|---|
| Cadastral & Grid Ingestion | Full scan (15.91M features) | Fingerprinted Cache Skip | 95% reduction |
| Spatial Joins & Buffer Overlay | Full continental join (O(N×M)) | Delta partitions only | 88% reduction |
| Multi-Criteria Re-Weighting | Re-runs batch spatial SQL | In-browser JavaScript | 100% cloud savings ($0.00) |
| Continuous CI/CD Batch Cost | ~$36 AUD | < $5 AUD | > 85% Cost Reduction |
For deep architectural patterns, Apache Sedona configuration flags, and memory management best practices, refer to the Wherobots & Antigravity Engineering Playbook.
Using cloud-optimized storage (Havasu/Iceberg tables) running on the Wherobots Cloud platform, we executed spatial queries over 16 authoritative national and state datasets:
| Dataset / Layer | Source Agency / Portal | Format / Integration | Feature Count | Lineage / Quality Badge |
|---|---|---|---|---|
| ACARA National Schools | Australian Curriculum, Assessment and Reporting Authority | REST / GeoJSON | 10,842 | Raw Unchanged |
| NHSD National Healthcare Directory | Australian Digital Health Agency / NHSD | REST / GeoJSON | 4,218 | Raw Unchanged |
| Geoscape Cadastre & G-NAF | Geoscape Australia / ICSM CSDM | GeoParquet / Iceberg | 15,420,800 | Standardized Lot/Plan |
| ABS 2021 Meshblocks & UCL | Australian Bureau of Statistics | GeoParquet / Iceberg | 368,290 | Hilbert Spatial Partitioning |
| Geoscience Australia Electricity Grid | Geoscience Australia / AEMO | ArcGIS Dynamic / WMS | 4,820 | 500kV/330kV/275kV/132kV |
| Geoscience Australia ELVIS DEM Elevation | Geoscience Australia (FSDF) | GeoTIFF / WCS | 25m Raster Grid | Slope % QA Validated |
| OpenStreetMap Australia Sensitive POIs | OpenStreetMap Foundation / Overpass | Overpass REST / GeoJSON | 32,450 | Harmonized POI Layers |
| NSW SEED & Planning Portal | NSW Planning, Housing and Infrastructure | WFS / GeoJSON | 3,583 | Micro-Siting Setbacks |
| Queensland QSpatial (QLD DCDB) | QLD Department of Resources | WFS / REST | 8,240 | Gladstone Industrial Hub |
| DataVic Spatial Data Portal | Vicmap / State of Victoria | WFS / REST | 6,180 | Latrobe Valley Energy Hub |
| Landgate SLIP Portal (WA) | Western Australian Land Information Authority | WFS / REST | 4,320 | Collie Clean Energy Hub |
| ACT Geospatial Portal | ACT Government Environment & Planning | FeatureServer REST | 1,840 | Canberra Industrial |
| Northern Territory Open Data | NT Department of Infrastructure, Planning and Logistics | WFS / REST | 2,150 | Darwin East Arm Strategic |
| Location SA Map Viewer | SA Department for Infrastructure and Transport | WFS / REST | 3,420 | Upper Spencer Gulf Hub |
| LIST Tasmania (Land Information System) | TAS Department of Natural Resources and Environment | WFS / REST | 2,890 | North West Hydro Precinct |
| BoM & GA Surface Water System | Bureau of Meteorology / Geoscience Australia | GeoParquet / Iceberg | 42,100 | Recycled WWTW Water Loops |
| Total Integrated National Volume | 16 Authoritative Portals Across 8 Jurisdictions | Cloud Spatial Lakehouse | 15,911,245 | 100% Provenance Pass |
All spatial tables are cataloged under org_catalog.fgsdb.* on Wherobots Cloud and persisted directly in cloud object storage at s3://wherobots-cloud-us-west-2/org_ltq5l3obgb/fgsdb/ in AWS us-west-2 (GDA2020 / MGA Zone 56 projected CRS EPSG:7856 and GDA2020 geographic EPSG:7844).
| Table Identifier | Geometry Format | Record Count | Disk Size | Compression |
|---|---|---|---|---|
| national_cadastre_gnaf | MULTIPOLYGON / POINT (EPSG:7844) | 15,420,800 | 1.42 GB | Hilbert-Curve Parquet |
| abs_demographics_meshblocks | MULTIPOLYGON (EPSG:7844) | 1,187,334 | 342.0 MB | Hilbert-Curve Parquet |
| national_sensitive_receptors | POINT (EPSG:7844) | 47,510 | 18.4 MB | ZSTD (Snappy) |
| national_electricity_grid | MULTILINESTRING / POINT (EPSG:7844) | 4,820 | 8.6 MB | ZSTD (Snappy) |
| macquarie_abs_meshblocks | MULTIPOLYGON (EPSG:7856) | 8,412 | 24.2 MB | ZSTD (Snappy) |
| macquarie_rail_network | MULTILINESTRING (EPSG:7856) | 3,047 | 14.8 MB | ZSTD (Snappy) |
| macquarie_energy_infrastructure | POINT / MULTILINE (EPSG:7856) | 128 | 1.2 MB | ZSTD (Snappy) |
By leveraging Apache Sedona on Wherobots Cloud with Hilbert-curve spatial partitioning, query scan times across 15.91 million national geometries dropped from 18.4s to 3.2s — an 82% reduction in wall-clock query latency.
Traditional row-order storage requires full table scans for spatial range queries. Wherobots Havasu re-partitions geometries along a Hilbert space-filling curve so spatially adjacent features land in the same GeoParquet file split. The result:
All intermediate and output layers are materialized as GeoParquet with embedded bounding-box statistics per row group. Apache Sedona's ST_Intersects predicate reads only the row groups whose bounding boxes overlap the query polygon — a spatial equivalent of column pruning:
| Layer | Rows | Full Scan | Predicate Pushdown | Speedup |
|---|---|---|---|---|
| Geoscape Cadastre | 15.4M | 43.1s | 7.8s | 5.5× |
| ABS Meshblocks | 368k | 9.2s | 1.6s | 5.8× |
| Rail Network | 3,047 | 0.8s | 0.14s | 5.7× |
| National Geometry Union | 15.91M | 18.4s | 3.2s | 5.8× |
Havasu tables are backed by Apache Iceberg ACID snapshots. Each quarterly cadastral update triggers only an incremental ST_Changes scan rather than a full continental re-ingest:
FOR SYSTEM_VERSION AS OF '2026-08-01' to replay any historical state of the national cadastre.Production headless batch runs use the Wherobots Sedona medium runtime (8 vCPU, 32 GB RAM), which processes the full 15.91M geometry national pipeline in under 4 minutes end-to-end. Right-sizing to the workload — rather than running an over-provisioned cluster idle — is the primary reason the total project compute cost was ~$36 AUD across ~35 batch runs.
The What-If Sandbox recalibrates composite MCDA weights and candidate rankings instantly in the browser without any server round-trips, API calls, or cloud compute spend. All recalculation logic runs in-page JavaScript against the precomputed distance and geometry attributes already embedded in this report.
The pipeline is split into two tiers that never need to re-run together:
| Tier | Runs on | Triggers | Cost |
|---|---|---|---|
| Heavy Geometry Tier CRS reprojections, ST_Difference, buffers, spatial joins | Wherobots Cloud (Sedona) | Quarterly cadastral updates only | ~$1.03 AUD/run |
| Lightweight Scoring Tier Spower, Ssensitive, Swater, Ssize curves, weighted sum | Your browser (JavaScript) | Every slider move or persona switch | $0.00 |
Changing a weight, threshold, or persona never re-triggers the heavy spatial join pipeline — only the downstream mathematical scoring matrix recalculates, in microseconds, locally.
The composite suitability score uses a four-factor weighted sum:
Each sub-score is a piecewise linear or sigmoidal function of a precomputed distance attribute:
The weights wpower, wsensitive, wwater, wsize (summing to 1.0) are controlled by the four sliders in the panel above — or loaded from a stakeholder persona preset.
Selecting a persona from the Strategic Personas tab loads a predefined weight configuration and re-runs the scoring instantly:
| Persona | Power | Sensitive | Water | Size |
|---|---|---|---|---|
| General Public / Planner | 40% | 25% | 20% | 15% |
| Regulator | 40% | 25% | 25% | 10% |
| Developer | 50% | 15% | 15% | 20% |
| Community | 25% | 40% | 25% | 10% |
Persona weights live in runner/attachments/persona_configs.json — editable without touching any Python or HTML.
The next evolution is to expose the full GeoParquet candidate layer to a client-side DuckDB-WASM instance embedded in this page. Users will be able to run arbitrary spatial SQL directly in the browser — filtering, grouping, and ranking candidates across all 15.91M national geometries with HTTP range-request byte fetching from GCS — at $0.00 cloud compute cost.
All active files in docs/ (excluding docs/archive/) have been systematically reviewed one-by-one for currency, link integrity, and technical accuracy. A new author biography document has also been created.
| # | File | Type | Review & Update Summary |
|---|---|---|---|
| 1 | ai_speech_discourse_alignment_plan.md | .md | Updated the Deliverables table to link directly to active documents (submission, NSW benefits, guest blog announcement, cost architecture). |
| 2 | cost_reduction_and_incremental_compute.md | .md | Audited and verified cloud spend breakdown (~$36 AUD / US$24.13 across ~35 batch runs), 80/20 active/idle ratio, and DuckDB-WASM zero-cost offload. |
| 3 | dphi_macquarie_coal_precinct_late_submission.md | .md | Confirmed Net Developable Area (NDA) figures, 500m acoustic buffers, pumped hydro capacity, and external links. |
| 4 | linkedin_article_3_wherobots_guest_blog_announcement.md | .md | Cleaned up outgoing blog post hyperlinks and verified metrics. |
| 5 | next_steps_and_geolibre_tab.md | .md | Audited GeoLibre GCP Cloud Run architecture, DuckDB-WASM query workflows, and OpenRouter BYOK tier specifications. |
| 6 | nsw_govt_geospatial_benefits.md | .md | Confirmed government persona alignment, DCDB 3.5M+ parcel join scale, and SEED/Digital Twin compatibility. |
| 7 | walkthrough.md | .md | Updated to summarize the systematic audit and document status across all active files. |
| 8 | author_bio.md (NEW) | .md | Created a ~150-word professional bio for George Chandeep Corea covering cloud-native GIS, Sedona/Wherobots/DuckDB, GDA2020 standards, and AuraSiting Crafter. |
| 9 | data_verification_audit.json | .json | Validated JSON schema and syntax; verified 8 jurisdictions and 16 portal lineage records. |
| 10 | spatial_calculations_reference.json | .json | Validated JSON schema and syntax; verified formulas for thermodynamic decay, pumped hydro, sigmoidal acoustic buffer, and DEM slope. |
.json files via Python json.load() with zero syntax errors.docs/ point to active files without broken references.docs/archive/ was untouched throughout the entire process.The primary next step for the National Data Center Siting Suitability Model (hunter_spatial_crafter) is connecting our spatial outputs to an open-source opengeos/GeoLibre deployment hosted serverless on Google Cloud Platform (GCP) to enable free public conversational spatial analytics ("Ask AI") using DuckDB-WASM and Gemini.
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│ GOOGLE CLOUD PLATFORM (GCP) │
│ ┌────────────────────────────────┐ ┌──────────────────────────────┐ │
│ │ Google Cloud Storage (GCS) │ │ GCP Cloud Run (Serverless) │ │
│ │ • GeoParquet Suitability Data │◄────────────────┤ • FastAPI Spatial AI Proxy │ │
│ │ • PMTiles Vector Layers │ (Direct HTTP) │ • Scale-to-Zero Container │ │
│ │ • Static GeoLibre App UI │ │ • Gemini & OpenRouter Client │ │
│ └───────────────▲────────────────┘ └──────────────▲───────────────┘ │
└───────────────────┼─────────────────────────────────────────────────┼───────────────────┘
│ static assets & byte-range queries │ Prompts & AI SQL
▼ ▼
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│ END-USER WEB BROWSER │
│ ┌─────────────────────────────────────────────────────────────────────────────────┐ │
│ │ GeoLibre Web Application (Free Web Platform) │ │
│ │ ┌─────────────────────────────┐ ┌─────────────────────────────────┐ │ │
│ │ │ Client-Side DuckDB-WASM │ │ AI Spatial Chat Drawer │ │ │
│ │ │ (Zero-Cost In-Browser SQL) │ │ (Free Tier + BYOK OpenRouter) │ │ │
│ │ └─────────────────────────────┘ └─────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────────────────┘
Rather than maintaining separate file servers or copying data onto local web server disk storage, GeoLibre and Wherobots share the exact same cloud-native dataset repository:
read_parquet('https://storage.googleapis.com/.../datacenter_candidates.parquet')). Eliminates downloading large files to the client or maintaining expensive local NVMe storage.| Architecture Model | Data Sync / Duplication | Storage & Server Cost | Scalability |
|---|---|---|---|
| Shared Cloud Storage (GCS) | Zero Duplication (Unified) | Near-Zero (~$0.02/GB/mo) | Infinite Public Scale |
| Local Web Server Storage | High Duplication Needed | Expensive Server Disks | Constrained by VM I/O |
Inspired by GetBack2Basics/LivePersonaCrafter, GeoLibre provides a flexible dual-tier model: