Planetary-scale answers, unlocked.
A Hands-On Guide for Working with Large-Scale Spatial Data. Learn more.
Authors
The Havasu Catalog is the Wherobots spatial data catalog. It indexes open geospatial datasets, RasterFlow computer vision models, solution notebooks, and demo apps. Each dataset is an Apache Iceberg table that WherobotsDB queries in place with spatial SQL. The name comes from Havasu, the table format Wherobots built to add geometry and raster columns, spatial statistics, and spatial filter pushdown to Iceberg before Iceberg had native geospatial types. This article tests one claim: the table metadata serves as the index. Snapshots list a table's files at each commit. Manifests, the metadata files that list data files, record each file's extent. So a query for one city or one past release is narrowed to its files before any data file opens.
geometry
raster
geography
VERSION AS OF
A data catalog maps a table name such as wherobots_open_data.overture_maps_foundation.buildings_building to its files, their schema, and the history of changes. A spatial data catalog adds spatial types, a coordinate reference system per column, and spatial extents:
wherobots_open_data.overture_maps_foundation.buildings_building
Asset catalogs such as STAC, the SpatioTemporal Asset Catalog, describe files, mostly satellite scenes, with JSON records of footprint, time, and band links. Table catalogs such as Iceberg describe rows in analytic tables. The Havasu Catalog is a table catalog that can hold asset catalogs as tables: the Sentinel-2 L2A scene index is a table of STAC items, one row per scene. L2A stands for Level-2A.
Each catalog name points to an Iceberg table whose metadata and Parquet files sit in cloud object storage.
Each catalog holds databases, each database holds tables, and SQL names a table as <catalog>.<database>.<table> (querying datasets in the Wherobots docs). Wherobots Cloud provides wherobots_open_data to every organization edition, wherobots_pro_data to paid editions, and an organization catalog for a team's own tables. A team can also attach tables through Unity Catalog, AWS Glue, or any Iceberg catalog, so one query can join private and open data.
<catalog>.<database>.<table>
wherobots_open_data
wherobots_pro_data
Apache Iceberg is an open table format for large analytic tables. Its table spec sets goals the Havasu Catalog inherits. Each read sees one committed snapshot. Each write adds and removes files atomically. Columns can be added, dropped, reordered, and renamed.
The Havasu table spec (version 0.1.0) adds spatial types, raster storage modes, spatial statistics, and spatial transforms to Iceberg format versions 1 and 2. It leaves the rest of Iceberg unchanged:
Havasu supports ACID transactions, schema evolution, and time travel on geometries and rasters, and every Iceberg feature except merge-on-read tables. ACID stands for atomic, consistent, isolated, and durable.
In WherobotsDB, a geometry(4326) column is an Iceberg v3 native column with one enforced CRS. Other Iceberg engines with geospatial support read it as geometry. A geography(4326) column interprets coordinates on a sphere. Older columns without a declared CRS work the same in WherobotsDB, and other engines read them as binary. Wherobots upgrades the read-only public tables it manages, such as wherobots_open_data, automatically.
geometry(4326)
geography(4326)
Every commit to an Iceberg table writes a new snapshot, the full list of its data files at that moment. Older snapshots stay readable until they expire, and named references (tags and branches) point at particular snapshots.
Wherobots keeps every stable Overture release in the catalog as a tag. VERSION AS OF '2025-05-21.0' reads the places table as Overture published it on 21 May 2025. A query with no version reads the latest stable release. Metadata tables, named with a suffix on the table name, expose this history to SQL. .snapshots lists commits with a summary of row and file counts, .refs lists tags and branches, and .files lists every data file with its row count and column statistics.
VERSION AS OF '2025-05-21.0'
.snapshots
.refs
.files
Spatial filter pushdown runs before any data file opens. WherobotsDB compares each file's bounding box in the manifest with the query window and drops files whose box misses it. The Havasu spec calls this test an inclusive projection: ST_Intersects(geom, Q) becomes ST_Intersects(MBR[geom], Q) per file, where MBR is the minimum bounding rectangle. The test can keep a file with no match and never drops a file with one. Rasters get the same pushdown with RS_Intersects, RS_Contains, and RS_Within.
ST_Intersects(geom, Q)
ST_Intersects(MBR[geom], Q)
RS_Intersects
RS_Contains
RS_Within
Pruning only helps when nearby rows share files. CREATE SPATIAL INDEX FOR <table> USING hilbert(geom, <precision>) rewrites a table in Hilbert curve order, an ordering of grid cells that keeps cells close in the order close on the map. Each file then covers a compact area with a small bounding box.
CREATE SPATIAL INDEX FOR <table> USING hilbert(geom, <precision>)
Vector and raster datasets are the largest of the catalog's entry types:
Dataset sources include the Overture Maps Foundation, the US Census Bureau, OpenStreetMap, and the European Space Agency (ESA) Copernicus Sentinel-2. Other sources include the U.S. Department of Agriculture (USDA) National Agriculture Imagery Program (NAIP) and Google and Microsoft building footprints. Examples by table type:
bbox
GeoParquet, Iceberg v3, Havasu, and STAC each describe spatial data in cloud storage, at a different unit:
geometry(C)
geography(C, A)
GeoParquet 1.1, released in June 2024, added a bounding box covering column and GeoArrow-based encodings, which let readers use Parquet row-group statistics. The Parquet geospatial definitions added GEOMETRY and GEOGRAPHY logical types in Parquet format 2.11 in March 2025, which Iceberg v3 files use. STAC became an OGC Community Standard in 2025, with the core specification at version 1.1.0. The formats stack: an Iceberg v3 table is a set of Parquet files with native geospatial types.
GEOMETRY
GEOGRAPHY
This walkthrough runs read-only SQL in WherobotsDB for one place: Lake Havasu City, Arizona, inside the box from 114.38° W to 114.28° W and 34.43° N to 34.55° N. Each table is an Iceberg table of Parquet files:
buildings_building
places_place
transportation_segment
tiger_county
SHOW SCHEMAS IN wherobots_open_data
The open data catalog holds 11 databases: aster_gdem, copernicus_dem, foursquare, meta_canopy_height, noaa, overture_maps_foundation, partner_samples, rasterflow_output_samples, sentinel2, spatial_knowledge_graph, and us_census.
aster_gdem
copernicus_dem
foursquare
meta_canopy_height
noaa
overture_maps_foundation
partner_samples
rasterflow_output_samples
sentinel2
spatial_knowledge_graph
us_census
The .snapshots metadata table returns each commit with a summary. The latest summary gives row count, file count, and size without reading a data file.
-- Latest snapshot summary of four open data tables, read from Iceberg metadata only WITH s AS ( SELECT 'overture buildings_building' AS tbl, committed_at, summary FROM wherobots_open_data.overture_maps_foundation.buildings_building.snapshots UNION ALL SELECT 'overture places_place', committed_at, summary FROM wherobots_open_data.overture_maps_foundation.places_place.snapshots UNION ALL SELECT 'overture transportation_segment', committed_at, summary FROM wherobots_open_data.overture_maps_foundation.transportation_segment.snapshots UNION ALL SELECT 'us_census tiger_county', committed_at, summary FROM wherobots_open_data.us_census.tiger_county.snapshots ) SELECT tbl, COUNT(*) AS snapshots, MIN(committed_at) AS first_commit, MAX(committed_at) AS last_commit, MAX_BY(summary['total-records'], committed_at) AS total_records, MAX_BY(summary['total-data-files'], committed_at) AS data_files, MAX_BY(summary['total-files-size'], committed_at) AS bytes FROM s GROUP BY tbl ORDER BY tbl
The query ran in 4.8 seconds. The buildings table's 60 snapshots run from 22 April 2025 to 26 September 2026 (UTC).
SELECT name, type, snapshot_id FROM wherobots_open_data.overture_maps_foundation.places_place.refs ORDER BY type, name returns 31 references: the main branch and 30 Overture release tags, from 2024-07-22.0 to 2026-09-23.1. main points at the same snapshot as 2026-09-23.1, the newest release. This query counts places in the Lake Havasu City box in ten releases:
SELECT name, type, snapshot_id FROM wherobots_open_data.overture_maps_foundation.places_place.refs ORDER BY type, name
main
2024-07-22.0
2026-09-23.1
-- Places inside the Lake Havasu City box in ten Overture releases, read with time travel SELECT '2024-07-22.0' AS release, COUNT(*) AS places FROM wherobots_open_data.overture_maps_foundation.places_place VERSION AS OF '2024-07-22.0' WHERE bbox.xmin <= -114.28 AND bbox.xmax >= -114.38 AND bbox.ymin <= 34.55 AND bbox.ymax >= 34.43 AND ST_Intersects(geometry, ST_PolygonFromEnvelope(-114.38, 34.43, -114.28, 34.55)) UNION ALL SELECT '2024-10-23.0' AS release, COUNT(*) AS places FROM wherobots_open_data.overture_maps_foundation.places_place VERSION AS OF '2024-10-23.0' WHERE bbox.xmin <= -114.28 AND bbox.xmax >= -114.38 AND bbox.ymin <= 34.55 AND bbox.ymax >= 34.43 AND ST_Intersects(geometry, ST_PolygonFromEnvelope(-114.38, 34.43, -114.28, 34.55)) UNION ALL SELECT '2025-01-22.0' AS release, COUNT(*) AS places FROM wherobots_open_data.overture_maps_foundation.places_place VERSION AS OF '2025-01-22.0' WHERE bbox.xmin <= -114.28 AND bbox.xmax >= -114.38 AND bbox.ymin <= 34.55 AND bbox.ymax >= 34.43 AND ST_Intersects(geometry, ST_PolygonFromEnvelope(-114.38, 34.43, -114.28, 34.55)) UNION ALL SELECT '2025-04-23.0' AS release, COUNT(*) AS places FROM wherobots_open_data.overture_maps_foundation.places_place VERSION AS OF '2025-04-23.0' WHERE bbox.xmin <= -114.28 AND bbox.xmax >= -114.38 AND bbox.ymin <= 34.55 AND bbox.ymax >= 34.43 AND ST_Intersects(geometry, ST_PolygonFromEnvelope(-114.38, 34.43, -114.28, 34.55)) UNION ALL SELECT '2025-07-23.0' AS release, COUNT(*) AS places FROM wherobots_open_data.overture_maps_foundation.places_place VERSION AS OF '2025-07-23.0' WHERE bbox.xmin <= -114.28 AND bbox.xmax >= -114.38 AND bbox.ymin <= 34.55 AND bbox.ymax >= 34.43 AND ST_Intersects(geometry, ST_PolygonFromEnvelope(-114.38, 34.43, -114.28, 34.55)) UNION ALL SELECT '2025-10-22.0' AS release, COUNT(*) AS places FROM wherobots_open_data.overture_maps_foundation.places_place VERSION AS OF '2025-10-22.0' WHERE bbox.xmin <= -114.28 AND bbox.xmax >= -114.38 AND bbox.ymin <= 34.55 AND bbox.ymax >= 34.43 AND ST_Intersects(geometry, ST_PolygonFromEnvelope(-114.38, 34.43, -114.28, 34.55)) UNION ALL SELECT '2026-01-21.0' AS release, COUNT(*) AS places FROM wherobots_open_data.overture_maps_foundation.places_place VERSION AS OF '2026-01-21.0' WHERE bbox.xmin <= -114.28 AND bbox.xmax >= -114.38 AND bbox.ymin <= 34.55 AND bbox.ymax >= 34.43 AND ST_Intersects(geometry, ST_PolygonFromEnvelope(-114.38, 34.43, -114.28, 34.55)) UNION ALL SELECT '2026-04-15.0' AS release, COUNT(*) AS places FROM wherobots_open_data.overture_maps_foundation.places_place VERSION AS OF '2026-04-15.0' WHERE bbox.xmin <= -114.28 AND bbox.xmax >= -114.38 AND bbox.ymin <= 34.55 AND bbox.ymax >= 34.43 AND ST_Intersects(geometry, ST_PolygonFromEnvelope(-114.38, 34.43, -114.28, 34.55)) UNION ALL SELECT '2026-07-22.0' AS release, COUNT(*) AS places FROM wherobots_open_data.overture_maps_foundation.places_place VERSION AS OF '2026-07-22.0' WHERE bbox.xmin <= -114.28 AND bbox.xmax >= -114.38 AND bbox.ymin <= 34.55 AND bbox.ymax >= 34.43 AND ST_Intersects(geometry, ST_PolygonFromEnvelope(-114.38, 34.43, -114.28, 34.55)) UNION ALL SELECT '2026-09-23.1' AS release, COUNT(*) AS places FROM wherobots_open_data.overture_maps_foundation.places_place VERSION AS OF '2026-09-23.1' WHERE bbox.xmin <= -114.28 AND bbox.xmax >= -114.38 AND bbox.ymin <= 34.55 AND bbox.ymax >= 34.43 AND ST_Intersects(geometry, ST_PolygonFromEnvelope(-114.38, 34.43, -114.28, 34.55)) ORDER BY release
All ten versions came back in 8.9 seconds. The count rose from 2,341 in the July 2024 release to 3,606 in September 2026, with dips in July 2025 (2,600) and July 2026 (2,963).
This join counts places inside building footprints in Lake Havasu City by category, on the current release.
WITH area AS (SELECT ST_PolygonFromEnvelope(-114.38, 34.43, -114.28, 34.55) AS g) SELECT p.basic_category, COUNT(DISTINCT p.id) AS places_in_buildings FROM wherobots_open_data.overture_maps_foundation.places_place p JOIN wherobots_open_data.overture_maps_foundation.buildings_building b ON ST_Contains(b.geometry, p.geometry) CROSS JOIN area WHERE ST_Intersects(p.geometry, area.g) AND ST_Intersects(b.geometry, area.g) AND p.basic_category IS NOT NULL GROUP BY p.basic_category ORDER BY places_in_buildings DESC LIMIT 5
It returned these counts in 10.1 seconds. COUNT(DISTINCT p.id) counts a place once where two footprints overlap.
COUNT(DISTINCT p.id)
EXPLAIN FORMATTED prints where the spatial filter goes:
EXPLAIN FORMATTED
EXPLAIN FORMATTED SELECT COUNT(*) AS buildings FROM wherobots_open_data.overture_maps_foundation.buildings_building WHERE ST_Intersects(geometry, ST_PolygonFromEnvelope(-114.38, 34.43, -114.28, 34.55))
The scan node of the plan reads:
IcebergScan(table=wherobots_open_data.overture_maps_foundation.buildings_building, schemaId=7, snapshotId=461598865520318774, branch=null, filters=st_intersects(geometry, POLYGON ((-114.38 34.43, -114.38 34.55, -114.28 34.55, -114.28 34.43, -114.38 34.43))), ...)
The ST_Intersects predicate sits inside the Iceberg scan, so it filters files before the scan reads them. An exact ST_PreparedIntersects filter then runs on the rows that remain. schemaId=7 means the table schema has changed several times since creation, and every snapshot still reads.
ST_Intersects
ST_PreparedIntersects
schemaId=7
The .files metadata table shows how many files the window leaves. Iceberg keeps the minimum and maximum of each Overture table's bbox struct column per file:
-- Data files of the Overture buildings table whose bbox column statistics overlap the Lake Havasu City box SELECT COUNT(*) AS data_files, SUM(record_count) AS rows_in_table, SUM(CASE WHEN readable_metrics.`bbox.xmin`.lower_bound <= -114.28 AND readable_metrics.`bbox.xmax`.upper_bound >= -114.38 AND readable_metrics.`bbox.ymin`.lower_bound <= 34.55 AND readable_metrics.`bbox.ymax`.upper_bound >= 34.43 THEN 1 ELSE 0 END) AS files_overlapping_box, SUM(CASE WHEN readable_metrics.`bbox.xmin`.lower_bound <= -114.28 AND readable_metrics.`bbox.xmax`.upper_bound >= -114.38 AND readable_metrics.`bbox.ymin`.lower_bound <= 34.55 AND readable_metrics.`bbox.ymax`.upper_bound >= 34.43 THEN record_count ELSE 0 END) AS rows_in_overlapping_files FROM wherobots_open_data.overture_maps_foundation.buildings_building.files
Of 5,141 files holding 2,533,842,612 buildings, 3 files overlap the box. They hold 1,576,641 rows. The query read only manifests, in 4.6 seconds. A second query lists the per-file boxes for the US Southwest, 125° W to 102° W and 30° N to 42° N. It returns 84 files:
-- Per-file bounding boxes of Overture buildings files that overlap the US Southwest (125 W to 102 W, 30 N to 42 N) SELECT readable_metrics.`bbox.xmin`.lower_bound AS file_xmin, readable_metrics.`bbox.xmax`.upper_bound AS file_xmax, readable_metrics.`bbox.ymin`.lower_bound AS file_ymin, readable_metrics.`bbox.ymax`.upper_bound AS file_ymax, record_count, (readable_metrics.`bbox.xmin`.lower_bound <= -114.28 AND readable_metrics.`bbox.xmax`.upper_bound >= -114.38 AND readable_metrics.`bbox.ymin`.lower_bound <= 34.55 AND readable_metrics.`bbox.ymax`.upper_bound >= 34.43) AS overlaps_lake_havasu_box FROM wherobots_open_data.overture_maps_foundation.buildings_building.files WHERE readable_metrics.`bbox.xmin`.lower_bound <= -102 AND readable_metrics.`bbox.xmax`.upper_bound >= -125 AND readable_metrics.`bbox.ymin`.lower_bound <= 42 AND readable_metrics.`bbox.ymax`.upper_bound >= 30
File boxes are small where buildings are dense, along the California coast, and large over the desert. One of the three overlapping files spans 117.36° W to 112.43° W, around the lower Colorado River. The other two have continental boxes, so a query almost anywhere in North America opens them. One runs from 179.80° W to 90.10° W and 23.87° N to 79.42° N.
The Havasu Catalog builds on transactional table formats for object storage and on data skipping, which passes over files that cannot match a query.
Iceberg began at Netflix to replace Hive tables. On Amazon S3, Hive directory listings were slow and inconsistent, and commits were not atomic. Ryan Blue presented the design in Introducing Iceberg: Tables designed for object stores at Strata Data New York in September 2018. Iceberg entered the Apache Incubator in November 2018 and became a top-level Apache project in May 2020. Tracking every data file in metadata makes snapshots, atomic commits, and file-level statistics possible.
Michael Armbrust and colleagues at Databricks described the same move for Delta Lake in Delta Lake: High-Performance ACID Table Storage over Cloud Object Stores (PVLDB, 2020). A transaction log over Parquet files provides ACID properties, time travel, and fast metadata operations. Armbrust, Ali Ghodsi, Reynold Xin, and Matei Zaharia then named the pattern in Lakehouse: A New Generation of Open Platforms that Unify Data Warehousing and Advanced Analytics (CIDR 2021). A lakehouse keeps open file formats under a transactional metadata layer and serves SQL analytics and machine learning from one copy of the data. Paras Jain, Peter Kraft, Conor Power, Tathagata Das, Ion Stoica, and Zaharia compared Delta Lake, Hudi, and Iceberg designs in Analyzing and Comparing Lakehouse Storage Systems (CIDR 2023). They also released the LHBench benchmark.
None of those formats had spatial types. Jia Yu, Jinxuan Wu, and Mohamed Sarwat introduced distributed spatial processing on Apache Spark with GeoSpark (ACM SIGSPATIAL 2015) at Arizona State University. Yu, Zongsi Zhang, and Sarwat described its spatial partitioning, indexing, and join design in Spatial data management in Apache Spark: the GeoSpark perspective and beyond (GeoInformatica, 2019). GeoSpark became Apache Sedona, which the Apache Software Foundation announced as a top-level project in February 2023. The creators of Sedona founded Wherobots, and WherobotsDB is fully code compatible with Apache Sedona across all spatial functions. Read the Apache Sedona story.
Storage was the next gap. Wherobots began work on Havasu in 2022 and announced the format in December 2023. In parallel, the GeoParquet project, started in 2022, standardized geometry in single Parquet files and reached 1.0.0 in 2023. In early 2024, the spatial and Iceberg communities began adding geospatial types to Iceberg with the Havasu design as a reference. Contributors came from Wherobots, CARTO, Planet, Apple, Databricks, Snowflake, and others. In February 2025, Wherobots announced that Iceberg and Parquet support geo types. The Iceberg community voted to adopt the v3 spec in May 2025, and the spec now lists versions 1, 2, and 3 as complete and adopted. Read how Iceberg v3 geospatial types work.
With spatial types native to Iceberg, Wherobots moved the Havasu name to its catalog. The Wherobots Spatial Data Catalog, which held datasets such as Overture Maps, became the Havasu Catalog and widened to RasterFlow models, notebooks, and apps.
File-level bounding boxes descend from two older ideas. Guido Moerkotte's Small Materialized Aggregates (VLDB 1998) stored the minimum and maximum of each column per block of rows, so a scan could skip blocks that cannot match. Zone maps and Parquet statistics use the same idea. Antonin Guttman's R-trees: a dynamic index structure for spatial searching (SIGMOD 1984) organized geometries by nested minimum bounding rectangles. A Havasu manifest stores the same rectangles per file.
File layout sets how many files a query can skip. Ibrahim Kamel and Christos Faloutsos sorted rectangles by the Hilbert value of their centers to build better packed R-trees in Hilbert R-tree: An Improved R-tree using Fractals (VLDB 1994). CREATE SPATIAL INDEX uses that ordering. Ahmed Eldawy, Louai Alarabi, and Mohamed Mokbel compared partitioning methods for distributed range queries and joins in Spatial partitioning techniques in SpatialHadoop (PVLDB, 2015). The methods included grid, quadtree, Sort-Tile-Recursive (STR), k-d tree, Z-curve, and Hilbert. Liwen Sun, Michael Franklin, Sanjay Krishnan, and Reynold Xin built blocks from the query workload in Fine-grained partitioning for aggressive data skipping (SIGMOD 2014). Zongheng Yang and colleagues learned layouts with reinforcement learning in Qd-tree: Learning Data Layouts for Big Data Analytics (SIGMOD 2020).
CREATE SPATIAL INDEX
Learned methods now reach spatial data. Varun Pandey and colleagues tested learned indexes for spatial range queries in The Case for Learned Spatial Indexes (AIDB 2020). Keizo Hori and colleagues used deep reinforcement learning to pick spatial partitions in Learned spatial data partitioning (aiDM 2023). On Apache Sedona, they measured run times up to 59.4% lower for distance joins.
At catalog scale, manifest file boxes narrow a city query over 2,533,842,612 buildings to 3 files. The two continental boxes show the limit: file boxes are only as tight as the layout. History adds metadata. The places table's 60 snapshots and 30 release tags keep 30 full versions readable. Every engine that reads the table has to agree on bounds, CRS, and geometry encoding.
A knowledge lake is a catalog layer over a data lake that indexes data together with the context needed to use it: schemas, sample queries, models, and applications. Wherobots calls the Havasu Catalog the knowledge lake for the physical world. Language models were trained on text, documents, databases, and the internet. An AI agent asked which buildings sit in a flood zone also needs spatial tables and an index of where they live. The Model Context Protocol (MCP) is a standard way to connect an AI agent to tools and data. The Wherobots MCP server and AI coding tools supply both for physical AI and geospatial AI work.
In the Havasu Catalog, metadata narrowed a city query to 3 of 5,141 files, served ten Overture releases by tag, and gave table sizes without a data read.
CREATE SPATIAL INDEX ... USING hilbert
Start a free trial and query the Havasu Catalog at login.cloud.wherobots.com.
The Havasu Catalog is the Wherobots catalog of physical world data, models, and apps. It lists 42 open geospatial datasets, 6 RasterFlow computer vision models, 9 solution notebooks, and 6 demo apps. Each dataset is an Apache Iceberg table with its schema and sample SQL, so a team can query it in Wherobots without a download. Browse the Havasu Catalog.
The catalog is free to browse at wherobots.com/havasu. Querying its tables in Wherobots is free during the Wherobots free trial, and continued access after the trial requires the Professional tier or above. RasterFlow, the model inference engine behind the catalog’s model entries, is in Public Preview for Professional, Innovation, and Enterprise organizations.
Havasu is the Wherobots spatial table format built on Apache Iceberg. Its specification adds three things to Iceberg format versions 1 and 2: geometry and raster types, per-file bounding boxes in the manifests, and spatial filter pushdown. It leaves the rest of Iceberg unchanged. Iceberg format version 3 now defines native geometry and geography types, designed with Havasu as a reference. In WherobotsDB, a column declared as geometry(4326) is an Iceberg v3 native column, and Wherobots upgrades its open data tables automatically.
A knowledge lake is a catalog layer over a data lake that indexes data together with the context needed to use it: schemas, sample queries, models, and applications. Wherobots calls the Havasu Catalog the knowledge lake for the physical world because it covers data, models, jobs, and apps about real places.
Yes. A team’s own spatial tables sit in an organization catalog next to the open datasets. They can also connect through Unity Catalog, AWS Glue, or any Apache Iceberg catalog, so one query can join private and open data.
The catalog holds 42 datasets. Their sources include the Overture Maps Foundation, the US Census Bureau, OpenStreetMap, ESA Copernicus Sentinel-2, and USDA NAIP aerial imagery. Other sources include Copernicus and ASTER (Advanced Spaceborne Thermal Emission and Reflection Radiometer) elevation models and Google and Microsoft building footprints. In SQL, SHOW SCHEMAS IN wherobots_open_data lists the 11 databases of the open data catalog.
Yes. The Wherobots MCP server connects AI coding tools such as Claude Code, Cursor, and VS Code to the catalog. An agent can then find a dataset, read its schema, and write and run the spatial SQL from a plain-language request. Set up the AI coding tools.
A spatial data catalog maps table names to the files that hold them, like any data catalog. It adds geometry and raster column types, a coordinate reference system per column, and the bounding box of each data file. With those boxes, a query for one area can skip files outside it.
Yes. Every table is an Apache Iceberg table with snapshots, and Wherobots keeps each stable Overture Maps release as a tag. VERSION AS OF '2025-05-21.0' reads the Overture places table as that release published it, and the .refs metadata table lists the available tags.
When a table is written, the manifest records the bounding box of the geometries in each data file. A query with a spatial filter such as ST_Intersects compares the query window with those boxes first and skips every file whose box does not intersect it. In the Overture buildings table, 3 of 5,141 data files overlap a Lake Havasu City window.
GeoParquet defines how geometry is stored in a single Parquet file. It uses WKB (well-known binary) or GeoArrow encodings and stores the coordinate reference system in file metadata. Iceberg v3 geometry and geography types define spatial columns for a whole table of many Parquet files. Such a table also has per-file bounding boxes in the manifests, snapshots, and transactions. Iceberg v3 data files use the Parquet GEOMETRY and GEOGRAPHY logical types.
What is a Geofence? How Geofencing Works, With Examples
A geofence is a virtual boundary that triggers an action when a device enters or leaves it. How geofencing works, its uses and limits, and a test on ship data.
What is Map Matching? GPS Traces, Methods and Examples
Map matching places each GPS record on the road a vehicle drove. How it works, nearest-road snapping vs hidden Markov models, and a test on Ann Arbor drives.
Geospatial Big Data: Why Analytics Is Hard to Scale
Teams struggle to scale geospatial analytics for five reasons: data volume, mixed formats, many coordinate systems, spatial joins and pipeline upkeep.
share this article
Awesome that you’d like to share our articles. Where would you like to share it to: