Planetary-scale answers, unlocked.
A Hands-On Guide for Working with Large-Scale Spatial Data. Learn more.
Authors
Geospatial AI, also called GeoAI or spatial AI, is the use of machine learning and AI agents on data tied to places on Earth. That data includes satellite and aerial imagery, maps, elevation, parcels, and location records. It covers computer vision on imagery and foundation models that turn imagery into embeddings, reusable lists of numbers that summarize each place. It also covers models that predict values across space and language model agents that run spatial analysis from a question. The claim: a model's output becomes evidence only after a spatial engine joins it to independent data and someone reads the disagreements. The walkthrough west of Phoenix tests that claim on two model outputs.
Geospatial means tied to a location on the Earth's surface. Geospatial data says where something is, such as a field boundary, a road, or a satellite pixel, as vector features (points, lines, shapes) or raster grids. Geospatial AI is machine learning in which location is a core input. The data has coordinates, the questions ask where, and the answers are maps, shapes, or values attached to places.
The term GeoAI took shape in the late 2010s. The ACM SIGSPATIAL GeoAI workshop series started in 2017, as Lunga and colleagues recount in GeoAI at ACM SIGSPATIAL: the new frontier of geospatial artificial intelligence research (SIGSPATIAL Special, 2022). Papers that define GeoAI most often cite one editorial. It is Janowicz and colleagues' GeoAI: spatially explicit artificial intelligence techniques for geographic knowledge discovery and beyond (International Journal of Geographical Information Science, 2020). It argues that models for geographic problems should build in location, distance, and spatial relations. Spatial AI is a common synonym, though some authors reserve it for the perception systems of robots and devices, as in physical AI.
A geographic information system (GIS) stores, queries, and maps spatial data with explicit operations, such as a buffer or an intersection. Geospatial AI adds models trained on examples. A model labels every pixel of a county, or an agent turns a sentence into the buffer and intersect steps. Model outputs become GIS layers, and GIS work shifts toward checking them.
Computer vision, foundation models, spatially explicit machine learning, and language model agents follow the same pattern. Each prepares spatial data, runs a model, and returns spatial data that joins to other layers.
The largest strand applies computer vision to Earth observation data. Scenes such as Sentinel-2 seasonal mosaics or National Agriculture Imagery Program (NAIP) aerial imagery are cut into chips, small fixed-size image tiles. A network labels pixels or outlines objects such as each building footprint. The predictions are stitched back together as polygons. U-Net (Ronneberger and colleagues, MICCAI 2015, a medical imaging conference) became a standard pixel-labeling (segmentation) network for satellite imagery. Kirillov and colleagues' Segment Anything (ICCV 2023) was trained on over 1 billion masks (object outlines). Meta's SAM 3 (Carion and colleagues, 2025) segments every instance of a concept named in a short phrase, such as "solar panels". Satellite imagery analysis and change detection cover this strand in depth.
A geospatial foundation model is pretrained on unlabeled imagery to learn a general representation of the Earth's surface. It is then adapted to a task with a small labeled set. Examples include:
AlphaEarth is delivered as precomputed data. The community copy on Source Cooperative holds the 2017 to 2025 layers under the Creative Commons Attribution license (CC BY 4.0). The files are Cloud Optimized GeoTIFFs, image files a reader can fetch in parts. With labels, a small classifier on the vectors maps a class. Without labels, similar vectors mean surfaces that looked alike over the year. Rolf and colleagues' MOSAIKS (Nature Communications, 2021) showed the cost saving earlier: compute image features once, then fit each task with a linear regression.
Tobler's first law of geography (Economic Geography, 1970) states that near things are more related than distant things. Spatially explicit models build that pattern in. Geographically weighted regression (Brunsdon, Fotheringham, and Charlton, Geographical Analysis, 1996) fits a separate regression at each location so coefficients can vary across space. Location encoders turn a coordinate into a learned vector, such as Mai and colleagues' grid-cell-inspired Space2Vec (ICLR 2020). Their review of location encoding for GeoAI (IJGIS, 2022) compares the methods.
Language models were trained on text, documents, databases, and the internet. They answer many geography questions from memory. They cannot measure a distance, convert a coordinate to another map projection, or join two tables. An agent gets those answers by calling tools. Yao and colleagues' ReAct (ICLR 2023) alternates reasoning steps with tool calls and reads each result, the loop most agents use. Li and Ning's Autonomous GIS: the next-generation AI-powered GIS (International Journal of Digital Earth, 2023) applies it to GIS. In their design, the language model plans, writes code, runs it, and checks the output. The Model Context Protocol (MCP), released by Anthropic as an open standard in November 2024, gives agents one interface to data sources and tools. Context engineering covers how an agent assembles spatial facts. Spatial Graph RAG (retrieval-augmented generation) retrieves them from a graph of places. A spatial ontology keeps the types of those facts consistent.
Published evaluations show where language models make geographic errors:
Wherobots runs models over imagery in RasterFlow, and agents run spatial analysis through the Spatial AI Coding Assistant and the Wherobots MCP Server.
RasterFlow (Public Preview) builds image mosaics, runs computer vision models on them, and writes the results as vector data on the same platform. Its Sentinel-2 and NAIP recipes include Fields of the World, which draws field boundaries. Meta CHM (canopy height model) maps tree canopy height and writes it as a raster. Tile2Net maps sidewalks. Meta's SAM3 detects objects named in a text prompt in 30 cm imagery. Custom PyTorch models run through the bring-your-own-model path. Change detection over AlphaEarth embeddings scores how far each pixel's vector moved between years (cosine distance), as shown in AlphaEarth change detection for agriculture.
The Wherobots MCP Server exposes the WherobotsDB catalog and spatial SQL to Claude Code, Cursor, ChatGPT, Codex, and other agents. A plain-language question becomes a query a person can run and inspect. Agent Skills give an agent knowledge of Wherobots workflows. Because raster and vector data share one engine, a model's output joins to parcels in the same query an agent writes. WherobotsDB is built by the original creators of Apache Sedona and is 100% code compatible across all spatial functions.
# Build a Sentinel-2 mosaic and detect field boundaries with the Fields of the World recipe from datetime import datetime from rasterflow_remote import RasterflowClient from rasterflow_remote.data_models import ModelRecipes rf_client = RasterflowClient() result = rf_client.build_and_predict_mosaic_recipe( aoi="s3://my-bucket/aoi/county.parquet", # AOI as GeoParquet start=datetime(2025, 1, 1), end=datetime(2026, 1, 1), model_recipe=ModelRecipes.FTW, ) result.mosaic_index_uri # index of prediction mosaics
This walkthrough joins two model outputs to farmland parcels west of Phoenix, Arizona. Each parcel record carries its majority class from the US Department of Agriculture (USDA) Cropland Data Layer (CDL) for 2022. The CDL is a classified crop map, so the join gives each field an independent crop estimate. The queries join raster and vector in one engine; most stacks pick one.
The first query places a point inside each field and finds the parcel that contains it:
WITH fields AS ( SELECT md5(ST_AsText(geometry)) AS fid, ST_PointOnSurface(geometry) AS pt, ST_AreaSpheroid(geometry) AS m2 FROM wherobots_open_data.rasterflow_output_samples.fields_of_the_world_vector_global WHERE bbox.xmin > -112.72 AND bbox.xmax < -112.55 AND bbox.ymin > 33.32 AND bbox.ymax < 33.45 AND year(time) = 2024 ), parcels AS ( SELECT geometry AS pgeom, cdl_majority_category AS crop FROM wherobots_open_data.partner_samples.regrid_parcels WHERE county = 'maricopa' AND ST_Intersects(geometry, ST_PolygonFromEnvelope(-112.72, 33.32, -112.55, 33.45)) ) SELECT COALESCE(NULLIF(p.crop, ''), '(no parcel or no CDL label)') AS crop, f.m2 >= 20000 AS at_least_2ha, COUNT(*) AS fields, ROUND(SUM(f.m2) / 1e4, 1) AS ha FROM fields f LEFT JOIN parcels p ON ST_Contains(p.pgeom, f.pt) GROUP BY 1, 2 ORDER BY fields DESC
The rows for fields of 2 ha or more, the size used in the next step:
The join shows disagreement. The 19 fields on shrubland parcels cover 1,126.6 ha. Either the 2022 crop map classed that land differently, or the boundary model drew polygons over land that is not farmed. Model outputs checked against model outputs need this review before they count as evidence.
The second query tests whether the AlphaEarth embeddings agree with those labels. It reads the 64 values at the 10 fields listed above. It converts the stored 8-bit integers back to embedding values, as the dataset's README specifies. It then compares every pair of labeled fields with cosine similarity, a score from -1 to 1 of how closely two vectors point the same way:
WITH fields AS ( SELECT md5(ST_AsText(geometry)) AS fid, ST_PointOnSurface(geometry) AS pt FROM wherobots_open_data.rasterflow_output_samples.fields_of_the_world_vector_global WHERE bbox.xmin > -112.72 AND bbox.xmax < -112.55 AND bbox.ymin > 33.32 AND bbox.ymax < 33.45 AND year(time) = 2024 AND ST_AreaSpheroid(geometry) >= 20000 ORDER BY fid LIMIT 10 ), parcels AS ( SELECT geometry AS pgeom, cdl_majority_category AS crop FROM wherobots_open_data.partner_samples.regrid_parcels WHERE county = 'maricopa' AND cdl_majority_category <> '' AND ST_Intersects(geometry, ST_PolygonFromEnvelope(-112.72, 33.32, -112.55, 33.45)) ), labeled AS ( SELECT collect_list(struct(f.fid, f.pt, p.crop)) AS L FROM fields f JOIN parcels p ON ST_Contains(p.pgeom, f.pt) ), r AS ( SELECT RS_FromPath('s3://us-west-2.opendata.source.coop/tge-labs/aef/v1/annual/2024/12N/xr0oyaovft9h34y0g-0000008192-0000000000.tiff', 'fs.s3a.bucket.us-west-2.opendata.source.coop.aws.credentials.provider=org.apache.hadoop.fs.s3a.AnonymousAWSCredentialsProvider;raster.reader.auto-rescale=false') AS rast ), bands AS (SELECT /*+ REPARTITION(64) */ explode(sequence(1, 64)) AS band), vals AS ( SELECT /*+ BROADCAST(r), BROADCAST(labeled) */ bands.band, labeled.L, RS_Values(r.rast, transform(labeled.L, x -> ST_SetSRID(ST_Transform(x.pt, 'EPSG:4326', '+proj=utm +zone=12 +datum=WGS84 +units=m +no_defs'), 32612)), bands.band) AS us FROM bands CROSS JOIN r CROSS JOIN labeled ), px AS ( SELECT element_at(L, k + 1) AS f, band, IF(u > 127, u - 256, u) AS s FROM vals LATERAL VIEW posexplode(us) e AS k, u ), vec AS ( SELECT f.fid AS fid, FIRST(f.pt) AS pt, FIRST(f.crop) AS crop, transform(array_sort(collect_list(struct(band, SIGN(s) * POW(s / 127.5, 2) AS q))), z -> z.q) AS v FROM px GROUP BY f.fid HAVING COUNT(s) = 64 AND MAX(IF(s = -128, 1, 0)) = 0 ), everything AS (SELECT collect_list(struct(fid, pt, crop, v)) AS L FROM vec), pairs AS ( SELECT ST_DistanceSphere(a.pt, b.pt) / 1000 AS km, a.crop = b.crop AS same_crop, aggregate(zip_with(a.v, b.v, (x, y) -> x * y), 0D, (acc, x) -> acc + x) / SQRT(aggregate(a.v, 0D, (acc, x) -> acc + x * x) * aggregate(b.v, 0D, (acc, x) -> acc + x * x)) AS cos FROM everything LATERAL VIEW posexplode(L) t1 AS i, a LATERAL VIEW posexplode(L) t2 AS j, b WHERE i < j ) SELECT CASE WHEN km < 1 THEN '0-1 km' WHEN km < 2 THEN '1-2 km' WHEN km < 4 THEN '2-4 km' WHEN km < 8 THEN '4-8 km' ELSE '8-20 km' END AS distance, same_crop, COUNT(*) AS pairs, ROUND(AVG(cos), 3) AS mean_cosine FROM pairs GROUP BY 1, 2 ORDER BY 1, 2
The query ran in 162 seconds and returned 45 pairs. In the 4 to 8 km band, the only band with both kinds, same-crop pairs score 0.674 and different-crop pairs 0.603, from 23 pairs. That is the direction expected if the embeddings carry crop type. Similarity also falls with distance, from 0.965 for the closest pair to 0.379 for pairs 8 km or more apart. In this table, the effect of distance and the effect of crop type are mixed together. That is the random-split problem described below. Ten fields is a small sample, so treat the table as a demonstration of the method.
For another area, change the box, pick the AlphaEarth file from the dataset's GeoParquet index, and check the file's UTM map zone. Through the Wherobots MCP Server, an agent can find these tables and write the joins.
Spatial autocorrelation means that nearby values resemble each other. A test field next to a training field shares its soil, climate, and management. A random split then measures how well a model fills in between neighbors. Ploton and colleagues quantified the gap in Spatial validation reveals poor predictive performance of large-scale ecological mapping models (Nature Communications, 2020). They trained a random forest to map aboveground forest biomass in central Africa from an inventory of 11.8 million trees. Under random cross-validation the model explained more than half of the variation in biomass. Under spatial validation that accounts for autocorrelation, it had almost no (quasi-null) predictive power.
Roberts and colleagues' Cross-validation strategies for data with temporal, spatial, hierarchical, or phylogenetic structure (Ecography, 2017) set out block cross-validation, which holds out whole regions. Meyer and Pebesma's Predicting into unknown space? Estimating the area of applicability of spatial prediction models (Methods in Ecology and Evolution, 2021) maps where input conditions resemble the training data. A map can then mark where its predictions are supported. Wadoux and colleagues showed in Spatial cross-validation is not the right way to evaluate map accuracy (Ecological Modelling, 2021) that random and spatial cross-validation can both give biased estimates. They also showed that spatial cross-validation can be overly pessimistic. Probability sampling with design-based inference gives unbiased estimates: test sites are drawn at random by a known design, and accuracy is computed from it. The validation design has to match how the map will be used.
Shankar and colleagues' No classification without representation (2017) examined a sample of Open Images, a large public image dataset. Almost a third of the sample came from the United States. 60% came from the six most represented countries in North America and Europe. Marsocci and colleagues' PANGAEA benchmark (2024) reported the same bias in Earth observation benchmarks.
GEO-Bench (Lacoste and colleagues, NeurIPS 2023 Datasets and Benchmarks) collected six classification and six segmentation tasks with 20 baselines, so foundation models could be compared on equal terms. PANGAEA found that geospatial foundation models do not consistently outperform a U-Net trained from scratch. Mai and colleagues wrote a vision paper, On the opportunities and challenges of foundation models for GeoAI (ACM Transactions on Spatial Algorithms and Systems, 2024). It notes that geospatial tasks combine text, imagery, vectors, and time. It adds that benchmarks built on one data type miss that mix.
Reference data is often another model: the CDL labels in the walkthrough are USDA's own 2022 classification, applied to 2024 fields. The Yeh study above has the stronger design, a test in countries the model had never seen.
At continental scale, data movement and joins become the hard part. The global Fields of the World map (Robinson and colleagues, 2026) holds 3.17 billion field polygons across 241 countries and territories for 2024 and 2025. It was validated against reference boundaries in 24 countries, with a mean pixel-level recall of 0.85, the share of reference field pixels the map found. Taylor Geospatial ran the global field boundary model on RasterFlow, and every question asked of the output is a spatial join over billions of rows.
Jia Yu, Jinxuan Wu, and Mohamed Sarwat introduced GeoSpark (ACM SIGSPATIAL 2015), a cluster computing framework for large-scale spatial data on Apache Spark. The paper received the SIGSPATIAL 10-Year Impact Award in 2025. Yu, Zongsi Zhang, and Sarwat described its spatial partitioning, indexing, and join algorithms in Spatial data management in Apache Spark: the GeoSpark perspective and beyond (GeoInformatica, 2019). GeoSpark became Apache Sedona, the engine under WherobotsDB. Kanchan Chowdhury and Sarwat built GeoTorch (ACM SIGSPATIAL 2022) to train spatiotemporal deep learning models on clusters.
Embeddings add storage cost. AlphaEarth stores 64 bytes per 10 m pixel per year, so the engine has to read only the tiles each region needs, as the out-of-database raster architecture post describes.
For geospatial AI, the walkthrough and cited studies show that a model's map or answer becomes evidence after a check against independent data and validation matched to the map's use.
Connect your AI agent to spatial data through the Wherobots MCP Server with a Wherobots free trial at cloud.wherobots.com.
Geospatial AI and spatial AI are used interchangeably for AI applied to location data and imagery, along with the older term GeoAI. Some authors reserve spatial AI for the perception systems of robots and devices and use geospatial AI for Earth-scale data. In practice both name the same field: detection, prediction, and analysis on spatial data.
Geospatial foundation models are large neural networks pretrained on unlabeled satellite imagery to learn a general representation of the Earth’s surface. They are then adapted to a task with a small labeled set. Examples include SatMAE from Stanford. NASA and IBM’s Prithvi was pretrained on more than 1 TB of Harmonized Landsat Sentinel-2 imagery. Others are the open source Clay model and Google DeepMind’s AlphaEarth Foundations. AlphaEarth publishes one embedding per year for every 10 m pixel on land. An embedding here is a list of 64 numbers.
In insurance, geospatial AI extracts roof condition, roof material, solar panels, pools, and tree overhang from aerial imagery across a portfolio. It maps damage after hurricanes and wildfires from satellite passes. Agents connected to spatial databases let underwriters query hazard exposure in plain language.
Yes. Through tool interfaces such as the Model Context Protocol, an AI agent reads a spatial database’s catalog, writes spatial SQL, executes it, and inspects the result. An agent connected to the Wherobots MCP Server answers a question such as which parcels sit inside a flood zone with a query you can run.
Geospatial means tied to a place on the Earth’s surface. Geospatial data records where something is, as a point, line, polygon, or grid of pixels with coordinates: a field boundary, a road, a satellite image, or a delivery address. Geospatial AI is machine learning on data like that.
AI is automating parts of GIS work, such as digitizing buildings and fields from imagery and writing routine spatial queries. The remaining work shifts toward choosing data, checking model outputs against reference data, and explaining results. It also includes designing validation that matches how a map will be used. Published evaluations show language models still make geographic errors, so spatial results still need review by someone who can check them.
Many GeoAI building blocks are free. Sentinel-2 and Landsat imagery is free. NASA and IBM publish Prithvi weights on Hugging Face. The Clay model is open source under an Apache license. The AlphaEarth Foundations embeddings are published under CC BY 4.0, and the Fields of the World field boundaries are open data. Running models over large areas costs compute, so platforms charge for processing.
It depends on what is being located. For photos, image geolocation models such as PlaNet (ECCV 2016) and GeoCLIP (NeurIPS 2023) predict where a picture was taken. For addresses, geocoders match text to coordinates. For questions about places, such as which parcels a field sits on, a spatial database computes the answer, and a language model agent can write that query.
Nearby places resemble each other. A random train and test split puts near-copies of training samples into the test set, which overstates accuracy. Ploton and colleagues (Nature Communications, 2020) found a forest biomass model that looked strong under random cross-validation had quasi-null predictive power under spatial validation. Holding out whole regions gives a fairer estimate for a map of new places.
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: