How Wherobots builds with NVIDIA to let AI see the physical world Posted on September 30, 2026October 3, 2026 by Damian AI was blind to the physical world, but Wherobots is giving AI the ability to understand it using data, compute, and NVIDIA GPUs The world and what happens in it is digitized by petabytes of raw and derivative spatial datasets of various data types and scales, and the potential for applying AI to it is immense. But the AI models and agents we use every day need connectivity to tools that turn this data into usable insights and relationships. Wherobots gives AI the ability operate on and understand raw physical-world data, and NVIDIA RTX PRO 6000 Blackwell Server Edition GPUs are core to it. Architecturally here’s how this works at a high level. Wherobots: Integrates with your open data architecture: by utilizing data lakes like Amazon S3 and Iceberg catalogs such as Databricks Unity Catalog and AWS Glue Data Catalog as the center of truth, you can integrate Wherobots into your existing data architecture. Brings the spatial capability: data teams and their agents have the capability to solve the most challenging physical world problems by directing Wherobots to extract insights from multi-dimensional, raster, vector, and tabular datasets of various formats and scales. Is plug-and-play: in minutes, you can enable AI coding tools like VS Code, Claude Code, and Cursor to direct Wherobots operations on this data and build innovations with AI. Under the hood, we deploy RTX PRO 6000 Blackwell GPUs and libraries on tasks they are optimized for. RTX PRO 6000 Blackwell GPUs run at the core of RasterFlow, which is the preprocessing and inference solution designed to make insight extraction from satellite and aerial sensor datasets easy. We also leverage NVIDIA CUDA™ streams to optimize performance. RasterFlow crunches pixels with a distributed fleet of NVIDIA G7e Amazon Web Services (AWS) instances, accelerated by RTX PRO 6000 Blackwell GPUs. These GPUs, built on the groundbreaking Blackwell architecture, feature the second-generation Transformer Engine to deliver unprecedented performance, efficiency, and scale for generative AI and accelerated computing. SedonaDB, which WherobotsDB utilizes in a distributed mode, can run spatial joins directly on the ray tracing cores inside RTX PRO 6000 Blackwell GPUs to deliver the best price-performance for a class of spatial join types. Let’s dig in. RasterFlow on NVIDIA RasterFlow prepares large scale imagery data for inference and runs computer vision models on a distributed inference architectureIts goal is to give customers the ability to generate insights from this data across physical areas of interest of any scale, enabling real-world applications such as: Last-Mile Delivery Routing: Identifies sidewalks (using models like Tile2Net) which can help determine viable navigational routes for both manual and autonomous delivery systems. Property Risk Analytics: Can aid in quantifying the number of properties facing flood risk across coastal cities by embedding FEMA flood zone designations into parcel-level data, helping insurers, reinsurers, and real estate developers evaluate policy and property portfolios. Since its introduction in private preview, we continue to optimize the RasterFlow architecture, reaching a point where mosaicking and inference tasks cost 2–3x less than the next best option at scale. For instance, RasterFlow supports Meta’s Segment Anything Model (SAM3) for general-purpose object detection on Earth Observation imagery. With the efficiencies we’ve achieved, you can use SAM3 to detect objects from high-resolution 30cm imagery for less than $25 per 1,000 square kilometers. Example of roof detections on 30cm imagery using Meta’s Segment Anything Model (SAM3) RasterFlow uses CUDA™ streams to keep GPUs busy Data movement can kill inference performance, so we use NVIDIA CUDA™ streams and RTX PRO 6000 Blackwell GPUs to address this bottleneck. Every batch of satellite imagery patches travels from host memory to the GPU before the model can run, and every batch of prediction patches travels back before RasterFlow can merge it into a seamless output mosaic. If we ran these steps serially one after another, our GPUs would idle on PCIe transfers with every forward pass. CUDA™ streams remove that idle time. A stream is an ordered queue of GPU work, where different kinds of work in different streams can execute concurrently. . RTX PRO 6000 Blackwell GPUs include dedicated copy engines that move data across PCIe independently of the compute cores, which means a transfer in one stream proceeds while a model forward pass runs in another. RasterFlow drives this through PyTorch’s torch.cuda.Stream API. This inference loop has separate upload and download streams feeding two reusable buffer slots. While the model runs batch N on the first stream, a second stream copies the next batch to the GPU, and a download stream drains the predictions from batch N-1 back to host memory, where the CPU merges patches in the mosaic accumulator. At steady state three batches are in flight at once: one uploading, one computing, one landing in the output. RasterFlow allocates these buffers once and reuses them for every batch. CUDA™ events sequence the handoff between streams, so data movement never starts before the forward pass that produced it finishes. This allows the GPU to stay busy from the first patch to the last. What’s next: GPU-native decompression with NVIDIA nvCOMP™ and Zarr RasterFlow stores every analysis-ready mosaic as a Zarr store of compressed chunks on Amazon S3, and today those chunks decode on the CPU. nvCOMP™, NVIDIA’s library of GPU-accelerated compression codecs, can move that decode step onto the GPU itself, and we are looking forward to nvCOMP™-backed codec support landing in Zarr. The payoff of this feature is three-fold. First, compressed chunks cross PCIe instead of raw pixels, so each transfer carries fewer bytes. Second, decompression runs at GPU memory bandwidth (which is higher than CPU) and the decoded array materializes directly in GPU memory where the model needs it. Finally, CPU cores are free for the work only they can do: assembling patches and merging predictions into the mosaic. RasterFlow use cases RasterFlow continues to unblock customers who need to extract insights from global-scale imagery datasets. We are actively working with customers across multiple industries, and utilizing RasterFlow to deliver results like these: The Fields of the World global run produced globally consistent agricultural field-boundary data for land-use monitoring, food-system analysis, and model development. We executed this run using RasterFlow, and led it in partnership with Taylor Geospatial, Microsoft AI for Good Lab, and Nasa Harvest. With RasterFlow you can run this same model with 10m Sentinel-2 imagery, including cloud-free mosaic generation and model inference, for less than $1 per 10,000 square kilometers. Agricultural field boundaries predicted by Taylor Geospatial’s Fields of the World model running on RasterFlow. We are actively supporting the US Forest Service in their research, and our joint goal is to bring their new FireCon model online in the second half of this calendar year. This initiative is key to delivering far more accurate daily wildfire containment suitability mapping system for active wildfires of the Western US, enabling better planning, management, and response to wildfires. FireCon model predictions for the best fire control points generated across the western United States by RasterFlow. SedonaDB on NVIDIA WherobotsDB runs a distributed version of SedonaDB, which customers use to efficiently process and join two dimensional raster and vector data. In SedonaDB 0.4, we shipped a GPU-accelerated spatial join as an extension that runs on RTX PRO 6000 Blackwell GPU ray tracing cores. In practice, almost all spatial analyses are powered by one or more spatial joins, which are computationally intensive and frequently a bottleneck in spatial queries. But SedonaDB with GPU acceleration provides relief, and delivers up to a 5.93x speedup and a 59.02% cost reduction on our standard spatial benchmark. The research behind it, RayBooster: A Ray Tracing Engine to Accelerate SedonaDB, was accepted to VLDB 2026 in the Industry Track, and we developed it with The Ohio State University. Attempts to accelerate traditional analytical database workflows using GPUs have typically required utmost care and/or rethinking of a workflow to minimize data transfer between the existing workflow (on the CPU) and the accelerated implementation (on the GPU). The spatial join is an ideal candidate for this type of acceleration because it is computationally intensive, and relatively small amounts of data transfer can result in large numbers of computations. Furthermore, the required data transfer is only a single direction; geometries must be transferred to the GPU but need not be transferred back. Another limitation to GPU acceleration of traditional database workflows has been a requirement for a potentially large amount of GPU memory to avoid completely rewriting a workflow with careful attention to the sizes of the inputs. SedonaDB’s join implementation was built to partition large joins into smaller ones that can be run with limited memory with its CPU-based join, and while this heuristic needs to be tuned differently for GPUs, we did not need to rewrite our GPU implementation to support arbitrarily large joins. This extends the acceleration we observed to a wider range of GPUs that customers may have available. Deploying AI on physical world data with NVIDIA High complexity, scale, and costs have limited the utilization of spatial data, resulting in a significant gap between AI and physical world data. This gap is closing fast and as it closes, humans are more capable of directing AI towards solutions that drive top, bottom, and the sustainability lines of their business. Through our investments in Apache Sedona and Wherobots, and by building on NVIDIA technology, data teams and their agents are becoming increasingly capable of innovating and operating solutions with physical world data, under budget, with the talent and AI tools they already have, regardless of spatial data type and degree of complexity. Key takeawaysWherobots gives AI the ability to operate on and understand raw physical-world data, and NVIDIA GPUs are core to it. Wherobots deploys NVIDIA GPUs and libraries on tasks they are optimized for.RasterFlow crunches pixels with a distributed fleet of NVIDIA G7e AWS instances, accelerated by RTX PRO 6000 Blackwell GPUs. CUDA streams keep three batches in flight at once, driving mosaicking and inference costs to typically 2-3x less than the next best option at scale. SAM3 on 30cm imagery runs for under $25 per 1,000 square kilometers.SedonaDB runs spatial joins directly on the ray tracing cores inside NVIDIA GPUs. In SedonaDB 0.4, Wherobots shipped a GPU-accelerated spatial join that delivers up to a 5.9x speedup and a 59% cost reduction on the standard spatial benchmark. The research paper, RayBooster: A Ray Tracing Engine to Accelerate SedonaDB, was accepted to VLDB 2026 in the Industry Track.RasterFlow is validated in production with Taylor Geospatial, Microsoft AI for Good Lab, and NASA Harvest (Fields of the World), and is actively supporting the US Forest Service (FireCon) to deliver daily wildfire containment suitability mapping across the Western US in H2 2026. Get Started with Wherobots Try Now
RasterFlow is now available in Public Preview Posted on September 15, 2026October 3, 2026 by Ryan Avery RasterFlow makes planetary-scale earth intelligence workflows easy and costs predictable. We are excited to announce that RasterFlow is now in Public Preview, opening up the power of planetary scale Earth Intelligence to all Wherobots Professional Edition customers! RasterFlow let’s you solve complex monitoring challenges with vision-language models or tailored models for specific use cases, without needing to manage complex raster preparation and inference infrastructure. Teams are already running RasterFlow at planetary scale: The USDA Forest Service uses RasterFlow to deliver wildfire containment predictions to its Wildfire Risk Management Division at an operational cadence. Miraterra uses RasterFlow to predict agricultural field boundaries across the U.S. Midwest and Canada’s Prairie Provinces, then joins detailed microbial samples and geospatial embeddings to those boundaries. Taylor Geospatial worked with Wherobots to produce 8.2 billion global field boundaries for the Fields of the World program. Join our Public Preview virtual event, Pixels to Predictions: Planetary-Scale Earth Observation with RasterFlow, for a live walkthrough of built-in models, predictable pricing, and real customer pipelines. Register Here → Join Public Preview Event: Pixels to Predictions with RasterFlow. Register HERE RasterFlow is a serverless image preparation and computer vision engine that makes it easy to extract insights from large scale raster datasets. It builds mosaics from multiple raster data sources, runs inference with computer vision models, and vectorizes the results, through a high-level API that simplifies the complexity of raster pipelines and distributed computing. You pay RasterFlow usage using a predictable, low cost pricing model that scales with your area of interest. With RasterFlow’s built-in models, users can instantly launch tasks for common Earth Intelligence use cases. For instance, RasterFlow includes Meta’s SAM3 model for text-prompted object detection, Taylor Geospatial’s Fields of the World model for agricultural field boundaries, Meta’s CHM v1 for estimating tree canopy height. You can also bring your own, and we are expanding the set of open models we offer out-of-the box (let us know which open models you want offered and we can add them). Market leading pricing that you can predict RasterFlow’s predictable pricing allows you to estimate the cost of your tasks before they run. The price for each task is based on the data volume processed, so you can accurately estimate the cost of any task before execution. And pricing scales linearly with the size of your area of interest, so you can extrapolate the costs from smaller test runs to planetary scale. Data volume = Area in km² × Pixels per km² × Bands × Time periods The four inputs are: Area: Size of your AOI in km² Pixels per km²: Determined by input resolution; finer imagery means more pixels Bands: For example, 4 for RGB + NIR Time periods: For example, 3 annual observations Let’s walk through a concrete example. If you wanted to find every solar panel array across a 500 km² county, you could use the built-in SAM3 model and a simple text prompt (“solar panel”) to generate detections. Here’s the code to launch this task across your area of interest using RasterFlow’s built-in support for 30cm imagery from USDA’s National Agriculture Imagery Program (NAIP): Pythonfrom rasterflow_remote import RasterflowClient from rasterflow_remote.data_models import GeometryModelRecipes rf = RasterflowClient() detections = rf.predict_mosaic_geometries_recipe( aoi="s3://your-bucket/county.parquet", start=datetime(2022, 1, 1), end=datetime(2023, 1, 1), model_recipe=GeometryModelRecipes.SAM3_TEXT_GEOMETRY, text_prompt="solar panel", confidence_threshold=0.5, ) print(detections.uri) # GeoParquet containing detected solar-panel polygons To calculate the price for this task, we first determine the number of input pixel values based on the size of the AOI (500 km²), the resolution of the dataset (30cm NAIP), the number of bands (4), and the number of time periods (1). Price = Data volume × Task-specific rate Then, for mosaic generation and inferencing tasks, we apply a “complexity factor” to account for differences in task processing. For instance, building a mosaic from NAIP imagery is simpler than creating a cloud-free composite from Sentinel-2 imagery, so we apply a 0.1× multiplier. Similarly, different models have different complexity factors, so we apply the relevant inference complexity factor (in this case, 1.0× for SAM3). Finally, each RasterFlow task has a specific price that may vary by compute region. Combining these factors, we arrive at our total costs for these tasks: TaskComplexity factorRasterFlow Spatial Units (SU)Price per SUCostMosaic generation (NAIP)0.1×2.22$0.75$1.67Inference (SAM3)1.0×22.22$1.50$33.33Total$35.00 For more details on RasterFlow pricing, see our pricing page and documentation. To see some example solar panel detections for Marion County, Oregon, here is an interactive visualization: Check out our viewer to explore these results further. Or, for more details about our Text to Detections support with SAM3, see this blog post: Detecting Objects From Text Prompts with RasterFlow and SAM3. Your mosaics, predictions, and vectors in your storage Wherobots storage integrations connect RasterFlow directly to your own S3 buckets. Tasks can read your areas of interest and proprietary imagery from your buckets, then write mosaics, predictions, and vectorized results back to them. Wherobots securely manages the required roles and credentials, so you can focus on your workflows instead of wrangling permissions. Pythonfrom rasterflow_remote import RasterflowClient, DatasetEnum client = RasterflowClient() result = client.build_mosaics( datasets=[DatasetEnum.S2_MED_HARVEST], aoi="s3://my-company-data/aois/project.parquet", # one or multiple geometries start=datetime(2024, 1, 1), end=datetime(2025, 1, 1), bucket="s3://my-company-data/rasterflow/results", ) print(result.first_row_mosaic) "s3://my-company-data/rasterflow/results/mosaics/<run-id>/mosaic_index.parquet" Outputs remain in open, interoperable formats: Zarr for mosaics and predictions, GeoParquet for vectorized results, and Iceberg tables through managed catalogs. Your data and results remain in the storage your applications already use, without a separate migration or export workflow. Built-in visualization to inspect your Earth observation insights Visual inspection is essential for validating inference results at scale, but large raster outputs are difficult to explore in their raw form. Wherobots lets users instantly layer mosaics, model predictions, and vectorized results on an interactive map, making it easy to assess quality, tune thresholds, and spot misaligned or spurious detections. Every completed RasterFlow task includes a one-click link to view its results in the Workload History. RasterFlow also includes tasks that optimize existing Zarr stores for interactive viewing by adding image pyramids, downsampled overviews, and histogram statistics. The built-in map client then streams coarse tiles when zoomed out and full-resolution pixels when zoomed in, delivering responsive exploration at any scale. For example, see this interactive visualization of model outputs from SAM3: How RasterFlow compares to Google Earth Engine Google Earth Engine provides a deep planetary imagery catalog and a strong environment for exploratory analysis. But for planetary scale workflows, Google Earth Engine has some significant limitations: Limited cost predictability. Earth Engine bills in EECU-hours, so you only learn the total cost after the job finishes. With RasterFlow, you can calculate the cost of your tasks before you run them, eliminating uncertainty and potential billing surprises. Build your own inference pipelines. Building a planetary scale earth observation pipelines with computer vision models requires integration with Vertex AI and custom pipeline development. Workflows that integrate with imagery data sources, patch tiles, handle seams, and maintains georeferences are costly to develop and maintain. RasterFlow packages mosaicking, inference, and vectorization as built-in tasks with a simple API. Results are siloed in Earth Engine. Analysis results are stored in Earth Engine, which is separate from Google Cloud Platform or Google Cloud Storage. Using them elsewhere requires queuing export jobs, so a team building on AWS pays both export and egress costs. Mosaicking cost. Because of these export costs, mosaicking costs on Earth Engine can be significantly higher for developers in AWS. For instance, generating and exporting a Sentinel-2 mosaic with all 12 bands for 150,000 km² costs about $50 in Earth Engine vs. $13.50 for RasterFlow. Customer impact at planetary scale Fields of the World: a global field-boundary layer Fields of the World is a Taylor Geospatial effort to produce globally consistent agricultural field-boundary data for land-use monitoring, food-system analysis, and model development. Taylor Geospatial partnered with Wherobots to run their PRUE model on RasterFlow for the 2024 to 2025 global release. Read about the Fields Of The World (FTW) Project. We achieved this with three tasks that you can run today: Building mosaics to create the seasonal Sentinel-2 composites Model inference to run the PRUE model globally Vectorization to convert the per-pixel predictions into field boundaries in GeoParquet. StageArtifactSizeFeature COGs90,918 objects153 TBFeature Zarr mosaic363,999 objects, 7,499,140 logical chunks150 TBPrediction Zarr mosaic84,877 objects, 8,982,630 logical chunks45 TBVector output, GeoParquet1,000 objects, 8,217,195,679 rows675 GB In total, we generated 348.7 TB across 540,794 objects, to produce 8.2 billion field boundaries. The full pipeline write-up is in Fields of the World: a GeoAI pipeline on RasterFlow. Daily wildfire containment mapping with the USDA Forest Service FireCon model predictions for the best fire control points, generated across the western United States by RasterFlow. The USDA Forest Service FireCon model produces containment-suitability maps for active wildfires across the Western United States. Because fuel, terrain, weather, and fire conditions change continuously, yesterday’s map may not reflect the conditions crews face today. Previously, the cost and complexity of running the full pipeline limited how frequently the team could update these maps. RasterFlow changes that by ingesting potential control location data, terrain characteristics, weather forecasts, and daily soil moisture readings, normalizing the data and running the full inference pipeline end-to-end in a matter of hours rather than a full day. That dramatic reduction in both runtime and cost means the team can afford to run the pipeline multiple times per day, giving frontline response teams a current view of the fire landscape. The results are also delivered as multi-resolution raster layers, so they render smoothly whether crews are looking at a broad regional view or zooming in on a specific fire line. In practice, this translates directly into better-informed containment and resource decisions on the ground, especially during fast-changing fire conditions where yesterday’s map simply isn’t good enough. Get started today RasterFlow is available now to Wherobots Cloud Professional Edition users: Sign in to Wherobots Cloud. Build a mosaic or run a built-in model by starting with one of these notebooks: Detect objects with SAM3. Build a cloud-free Sentinel-2 mosaic. Find agricultural field boundaries. Estimate canopy height with Meta CHM v1. Register for the Public Preview webinar. Key takeawaysRasterFlow is now in Public Preview, opening up the power of planetary-scale Earth observation to all Wherobots customers, available today to Wherobots Cloud Professional Edition users.Predictable, pre-execution pricing. Pricing is based on data volume processed (Area in km² × Pixels per km² × Bands × Time periods × task-specific rate), so you can accurately estimate the cost of any task before execution and extrapolate from smaller test runs to planetary scale.An alternative to Google Earth Engine. Unlike Earth Engine’s EECU-hour billing that reveals cost only after a job finishes, RasterFlow lets you calculate costs up front and keeps results in your own storage. A 150,000 km² Sentinel-2 mosaic with all 12 bands costs about $50 in Earth Engine vs. $13.50 for RasterFlow.Proven at planetary scale with built-in models. RasterFlow ships with Meta’s SAM3, Taylor Geospatial’s Fields of the World, and Meta’s CHM v1. RasterFlow powers wildfire containment predictions for the USDA Forest Service, field-boundary work for Miraterra Soil, and the 8.2 billion global field boundaries Taylor Geospatial produced for Fields of the World. See a live walkthrough of Rasterflow. Save Your Spot
The Wherobots Spatial AI Assistant is now in the Anthropic Connectors Directory Posted on August 20, 2026October 3, 2026 by Tiffany Huynh You can now ask Claude questions about the physical world and get answers grounded in real spatial data. Which facilities sit in the path of today’s storms? Which county west of the Mississippi has the fewest pharmacies per person? How much of Austin’s rooftop area sits under canopy? The Wherobots Spatial AI Assistant, now available in the Anthropic Connectors Directory, answers these questions in plain language and returns results, maps, and reports directly in your Claude conversation. Spatial AI Assistant by Wherobots on Anthropic Marketplace Wherobots is the AI context engine for the physical world. It gives AI the spatial intelligence it needs to reason about where things are, how they relate, and what has happened on the ground. Here is an example of an insurance risk analysis of all of Colorado that we initially built with Claude Opus 5 and the Spatial AI Assistant, then expanded on with the VSCode Spatial AI Coding Assistant to be a complete hosted application. The challenge with traditional data systems for building an application like this is both the skills and the data processing cost. We were able to easily join Regrid parcels with Overtures buildings, build hexes that show various layers of risk derived from open raster data, along with the underlying geometry scored on each parcel in a matter of minutes with a Wherobots large runtime. Having the infrastructure and processing capability at you and your AI’s “fingertips” to build with makes moving from idea to production application far easier and faster than without. Screening indicators from modelled and tract-resolution inputs — not underwriting. Counts are floors. Imagery is locational context only. Open full screen ↗ Getting started with the Spatial AI Assistant takes two steps: install the connector, and sign in to your Wherobots organization, and then begin to prompt Claude. With zero additional setup, Claude can begin to utilize datasets including: Overture: Buildings, Transportation, Places Foursquare: Open Places NWS Watch/Warnings, updated hourly GLO-30/90 DEM Elevation Rasters Regrid Parcels (sample) See it in action here: Interacting with Claude Chat to create an analysis about coastal flood risk in California. Analyzing open datasetsThe Wherobots Global Hub continues to expand the open datasets it offers out of the box. In the near future we plan to add wildfire risk models to the hub in partnership with the USDA Forest Service as well as the national hydrography dataset (NHD). You can also connect to STAC collections for additional raster datasets. If there is open or proprietary data that you are interested in having access to fully supported and maintained by Wherobots while iterating with Claude’s models, reach out to us about it. Analyzing proprietary datasetsIn a few steps, customers can easily attach Wherobots to their S3 storage buckets, catalog systems like Databricks Unity Catalog and AWS Glue Data Catalog, and authoritative 3rd party datasets like Regrid’s Parcels. These integrations enable Wherobots to query proprietary mobility, customer, and asset data with Claude.Once you’ve connected Wherobots every Claude conversation can query the data Wherobots has access to, so you can test your ideas and drive progress with physical world data. How the Spatial AI Assistant Works The Spatial AI Assistant plugs into the Wherobots Spatial SQL API and uses skills for accessing the Wherobots documentation, as well as the datasets registered in the Wherobots Global Hub. Claude uses Wherobots skills packaged with the connector to write strong, valid spatial SQL with (generally) correct functions, syntax, and joins. Results come back into your Claude conversation, ready to work with, and you don’t need to interact with a roadmap or a team of spatial experts to get it. Try It Today There’s a 14 day/$95 free trial available to all first time users to Wherobots that you can utilize to test your ideas. After the trial expires, customers pay a low on-demand rate for Wherobots spatial units consumed through the Spatial SQL API. When you start your trial let us know you have connected the Spatial AI Assistant and you can qualify for an additional $250 in Wherobots credits. Getting started is easy. Install Wherobots Spatial AI Assistant for Claude, connect your Wherobots organization, and ask your first question like: How much of Austin’s rooftop area sits under canopy? Want to see what this looks like in practice before you install? Watch the MCP demos in the videos below. The workflows shown there, from natural language questions to working spatial SQL to results on a map, are the same workflows the Spatial AI Assistant puts in front of your entire organization. Key takeawaysThe Wherobots Spatial AI Assistant is now in the Anthropic Connectors Directory, so you can ask Claude questions about the physical world and get results, maps, and reports in the conversation.Getting started is two steps: install the connector and sign in to your Wherobots organization. Out of the box Claude can use Overture buildings, transportation, and places; Foursquare Open Places; NWS watches and warnings (hourly); GLO-30/90 DEM; and a Regrid parcels sample.The assistant plugs into the Wherobots Spatial SQL API and uses packaged skills so Claude writes valid spatial SQL. You don’t need a GIS team in the loop to get an answer.First-time users get a 14 day / $95 free trial. Tell Wherobots you connected the Spatial AI Assistant and you can qualify for an additional $250 in credits.
Spatial Graph RAG for the Physical World Posted on June 9, 2026October 3, 2026 by Ben Pruden Introduction RAG (Retrieval Augmented Generation) has addressed one of AI’s biggest challenges for enterprise users: missing or hallucinating empirical business and real world context . Instead of generating answers from nothing, RAG retrieves relevant documents and feeds them to the model as context. It works. Ask an AI about your company’s Q4 revenue, and RAG pulls the earnings report before answering. But RAG has a blind spot. It retrieves documents, flat chunks of text ranked by semantic similarity. It doesn’t understand relationships between assets. It doesn’t know that your VP of Sales reports to the CRO, or that Product A competes with Product B, or that the supplier in Shenzhen feeds the factory in Guadalajara that ships to the warehouse in Memphis. You can leave the connections to be made by the LLM, but seeding control over simple facts to a nondeterministic process is not the best business decision. Graph RAG fixes this by building a knowledge graph of entities and their relationships, then retrieving compact subgraphs, not just documents, as context for the model. It’s one of the fastest-growing concepts in AI infrastructure, and for good reason: it makes AI dramatically better at reasoning about connected information. There’s just one problem. Every Graph RAG implementation today builds knowledge graphs from text, semantics, and ontologies. Documents, wikis, databases, web pages. The relationships are extracted from language. But the most consequential relationships in the physical world aren’t always written down. They’re spatial. Which building contains which addresses . Which buildings area accessible by which road. Which facilities sit inside which flood zone. Which agriculture fields are adjacent to which water sources and who owns those water rights. These relationships exist in geometry, not in sentences… No amount of document retrieval will surface them. This is the case for Spatial Graph RAG: building knowledge graphs from the physical world, using spatial operations instead of NLP, and retrieving spatial relation-anchored subgraphs that ground AI in physical reality. What is Graph RAG? Graph RAG extends standard RAG by adding a knowledge graph layer (nodes and edges) between the raw data and the language model. Standard RAG: User asks a question System searches a vector database for semantically similar text chunks Top-K chunks are injected into the LLM prompt as context LLM generates an answer grounded in those chunks Graph RAG User asks a question System identifies relevant entities (nodes) in a knowledge graph System traverses the graph’s edges and nodes to retrieve a compact subgraph of connected entities, relationships, and provenance Subgraph (entities (the nodes) + relationships (the edges) + evidence (relationship provenance) is injected into the LLM prompt LLM generates an answer grounded in structured, relational context The difference matters. Standard RAG might retrieve three paragraphs that each mention a company name. Graph RAG retrieves the company node, its relationships to subsidiaries, suppliers, competitors, and executives, and the evidence supporting each relationship. The model doesn’t just get text fragments, it gets structured understanding. Microsoft Research’s GraphRAG paper (Edge et al., 2024) demonstrated this dramatically: on questions requiring synthesis across entire datasets, Graph RAG achieved 72-83% comprehensiveness win rates versus standard RAG. Reference: From Local to Global: A Graph RAG Approach to Query-Focused Summarization — Microsoft Research, 2024 The Problem: AI Hallucinates and Make Assumptions About Places and Relationships Ask a language model “What’s at this address?” or “Is this restaurant inside that building?” or “Which of these two locations is closer to the highway?” and you’ll often get confident, specific, wrong answers. This isn’t a model intelligence problem. It’s a context problem. The model has no spatial context, no understanding of physical relationships between real-world entities. Research bears this out directly. GeoLLM (Manvi et al., ICLR 2024) demonstrated that querying an LLM with geographic coordinates alone consistently fails, even when the model contains relevant geographic knowledge internally. Performance improves substantially only when structured, map-derived context is provided alongside the query. In other words: the problem isn’t that LLMs don’t know about geography , it’s that they can’t use that knowledge without grounded relational structure to anchor it. The root cause goes deeper than missing map data. Place understanding is fundamentally relational: A business is inside a building, which is on a street, which connects to a road network, which is in an administrative boundary An address might match multiple buildings, and the correct assignment depends on access points and proximity to road segments Two POI records might be duplicates, a brand and a venue, or distinct businesses in the same building, and the evidence for each interpretation is spatial A business is accessible via a building that is accessible via a the transportation network who’s navigation is weighted by current traffic load These relationships can be ambiguous, inconsistent across data sources, and impossible to resolve from text alone. This is exactly the problem knowledge graphs solve in the document world and it’s exactly the problem spatial knowledge graphs solve for the physical world. From Graph RAG to Spatial Graph RAG Spatial Graph RAG applies the Graph RAG architecture to physical-world data, using spatial operations instead of NLP to construct the knowledge graph, and location-anchored queries instead of text queries to retrieve subgraphs. The pipeline has three stages. The first two are distinct engineering layers that work in sequence: distributed, transformations, aggregations, data generation, and spatial joins generate the nodes and edges, then graph operations traverse them. Step 1: Generate graph edges with spatial SQL Spark and Spatial SQL comprise the graph creation factory. Using WherobotsDB‘s spatial functions on Overture Maps data, we materialize node and edge tables into Apache Iceberg. Each edge carries provenance whether it was asserted by a source dataset, derived by a spatial join, or scored based on multiple signals . Containment edges (place → in building): containment_edges = sedona.sql(""" SELECT p.id AS src, b.id AS dst, 'CONTAINED_IN' AS relationship, ST_Area(ST_Intersection(p.geometry, b.geometry)) / ST_Area(p.geometry) AS overlap_pct, 'spatial_join' AS provenance 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) """) Proximity edges (place → near road access point), using WherobotsDB’s native ST_KNN for nearest-neighbor joins at scale: # ST_KNN is WherobotsDB's distributed k-nearest-neighbor join # (available in WherobotsDB and Apache Sedona 1.7+) access_edges = sedona.sql(""" SELECT p.id AS src, s.id AS dst, 'ACCESSED_VIA' AS relationship, ST_Distance(p.geometry, s.geometry) AS distance, 'knn_join' AS provenance FROM wherobots_open_data.overture_maps_foundation.places_place p INNER JOIN wherobots_open_data.overture_maps_foundation.transportation_segment s ON ST_KNN(p.geometry, s.geometry, 1, false) """) Admin containment edges (building → in administrative boundary): admin_edges = sedona.sql(""" SELECT b.id AS src, d.id AS dst, 'IN_BOUNDARY' AS relationship, d.subtype AS boundary_type, 'spatial_join' AS provenance FROM wherobots_open_data.overture_maps_foundation.buildings_building b JOIN wherobots_open_data.overture_maps_foundation.divisions_division_area d ON ST_Within(b.geometry, d.geometry) WHERE d.subtype IN ('locality', 'county', 'region') """) All edge tables are unioned and written to Iceberg for durability and incremental updates: unified_edges = ( containment_edges.withColumn("edge_type", lit("contained_in")) .union(access_edges.withColumn("edge_type", lit("accessed_via"))) .union(conflation_edges.withColumn("edge_type", lit("likely_same_as"))) .union(admin_edges.withColumn("edge_type", lit("in_boundary"))) ) unified_edges.writeTo("my_catalog.spatial_graph.edges").createOrReplace() Step 2: Run graph operations with GraphFrames Node and Edge tables are not a graph, they’re raw material. GraphFrames, the DataFrame-native graph library for Apache Spark, turns those tables into a traversable graph inside the same WherobotsDB session. No separate graph database required. Construct the GraphFrame: from graphframes import GraphFrame from pyspark.sql import functions as F # Vertex table: union all entity types with a common schema nodes = sedona.sql(""" SELECT * FROM wherobots_open_data.overture_maps_foundation.nodes """) # Edge table: union all relationship types edges = sedona.sql(""" SELECT * FROM my_catalog.spatial_graph.edges """) g = GraphFrame(vertices, edges) Connected components for conflation clustering: # Find clusters of likely-same-entity candidates — each component # represents a set of records that may refer to the same real-world place sc.setCheckpointDir("/tmp/graphframes-checkpoints") components = g.connectedComponents() # Records sharing a component_id are conflation candidates components.filter(F.col("entity_type") == "place") \\ .groupBy("component") \\ .count() \\ .filter("count > 1") \\ .show() Motif finding for multi-hop subgraph extraction: GraphFrames’ motif syntax lets you query for structural patterns — the same way you’d write a path query in a graph database, but natively in Spark: # Find: place → contained_in → building → in_boundary → admin_area # This is the "what's here?" retrieval pattern for LLM context place_context = g.find("(place)-[e1]->(building); (building)-[e2]->(admin)") \\ .filter("e1.relationship = 'CONTAINED_IN' AND e2.relationship = 'IN_BOUNDARY'") \\ .select("place", "e1", "building", "e2", "admin") Subgraph extraction anchored to a location (the RAG retrieval step): def retrieve_subgraph(anchor_id: str, hop_depth: int = 2): """ Given an entity ID (building, place, or address), retrieve the connected subgraph up to hop_depth hops — this is the context bundle that gets passed to the LLM. """ # Breadth-first expansion from the anchor node frontier = {anchor_id} subgraph_edges = [] for _ in range(hop_depth): neighbors = g.edges.filter( F.col("src").isin(frontier) | F.col("dst").isin(frontier) ) subgraph_edges.append(neighbors) new_nodes = neighbors.select("src").union( neighbors.select(F.col("dst").alias("src")) ).distinct() frontier = {row["src"] for row in new_nodes.collect()} from functools import reduce all_edges = reduce(lambda a, b: a.union(b), subgraph_edges).distinct() subgraph_vertices = g.vertices.filter(F.col("id").isin(frontier)) return GraphFrame(subgraph_vertices, all_edges) # Usage: retrieve context for a specific building context_graph = retrieve_subgraph("building_id_4821", hop_depth=2) Even in a dense urban area with thousands of entities, the relevant subgraph is small, typically 10–50 nodes with their connecting edges. Step 3: Ground the LLM in spatial evidence The extracted subgraph replaces the flat text chunks that standard RAG provides. Instead of a paragraph about a restaurant, the model receives structured spatial evidence: Entity: Joe's Pizza (place, confidence: 0.95) → CONTAINED_IN: Building #4821 (overlap: 99.2%, provenance: spatial_join) → ACCESSED_VIA: Carmine St segment (distance: 4.1m, provenance: knn_join) → LIKELY_SAME_AS: Joe's Pizza [OSM] (name_score: 0.94, distance: 3.2m) → IN_BOUNDARY: Greenwich Village → Manhattan → New York County Now the model can answer “Is Joe’s Pizza inside that building?” with evidence, not guessing. Standard Graph RAG vs. Spatial Graph RAG DimensionStandard Graph RAGSpatial Graph RAGData sourceDocuments, wikis, databasesPhysical-world datasets (map data, imagery, sensor data)Entity extractionNLP (named entity recognition)Spatial data themes (buildings, places, addresses, roads)Relationship extractionText parsing, co-occurrenceSpatial operations (containment, proximity, adjacency, intersection)Edge generationNLP pipelines (spaCy, OpenIE)Distributed spatial joins (Apache Sedona / WherobotsDB)Graph operationsGraph databases (Neo4j, Neptune)GraphFrames on Spark — same cluster, no separate DBQuery anchorText query, entity nameCoordinate, building ID, place, addressSubgraph retrievalEntity traversal, community detectionSpatial neighborhood + motif queries (GraphFrames)ProvenanceSource document, page, paragraphSource dataset, spatial operation, confidence scoreHallucination reducedFactual claims about documentsPlace claims, spatial relationships, address assignmentsScale challengeMillions of documentsBillions of spatial features (planetary scale) Inside the Stack: Why Spatial Graph RAG Needs Two Layers The compute layer runs on WherobotsDB, built for native spatial execution at scale. Standard graph databases (Neo4j, Amazon Neptune, TigerGraph) are built for entity-relationship traversal on pre-loaded graphs. They have no native ability to perform the distributed spatial joins needed to construct edges at planetary scale. You can’t load 2.6 billion Overture building geometries into Neo4j and ask it to compute containment relationships with 1.2 billion places. Spatial Graph RAG needs two distinct capabilities in the same session: Edge and Node generation: distributed spatial joins across billions of features stored as different geometry types. This is what WherobotsDB and Apache Sedona are built for. The Overture Maps Foundation itself uses Wherobots and Apache Sedona to generate its monthly global data releases at scale. Graph operations: connected components, shortest paths, motif queries, iterative traversal. This is what GraphFrames provides, natively on the same Spark session, treating graphs as DataFrames. Running both inside WherobotsDB means the edge tables generated in Step 1 are immediately available to GraphFrames in Step 2 — no data movement, no format conversion, no separate system to operate. Why GraphFrames for Spatial Graph RAG GraphFrames extends Spark DataFrames with graph-parallel primitives: connected components, PageRank, triangle count, shortest paths, and motif finding. For Spatial Graph RAG, the most important capabilities are: Connected components : for identifying conflation clusters (which records likely refer to the same real-world entity) Motif finding: for multi-hop structural queries like (place)→(building)→(admin_area) that power context retrieval BFS/neighborhood expansion: for bounded subgraph extraction anchored to a query location The “graphs as tables” design (vertices and edges as DataFrames) maps directly onto the Iceberg edge tables generated by spatial SQL, which is why the two layers compose cleanly. Spatial Graph RAG Use Cases Place Q&A for AI Assistants “What’s at this location?” “Is this business still open?”, questions AI handles poorly today. A spatial knowledge graph provides evidence-bearing subgraphs that make answers accurate and traceable. Conflation and Data Quality Determining whether two records from different sources represent the same real-world entity. Spatial Graph RAG turns conflation from an irreversible merge into an inspectable, evidence-driven process, connected components expose the clusters, motif queries explain the evidence. Insurance Risk Assessment Which properties are in flood zones, which are adjacent to wildfire-prone vegetation, which are accessed by roads that become impassable in storms. Autonomous Systems and HD Maps Which lane connects to which intersection, which signs apply to which road segment. Graph-structured map data provides the relational context. Supply Chain Risk Intelligence Facilities → nearby hazard zones, suppliers → upstream of disruption, routes → through chokepoints. Building Spatial Graph RAG From Overture Maps Data The Overture Maps Foundation provides the ideal source data, available directly in The Wherobots Hub. The pipeline: Load Overture themes from the Wherobots Open Data Catalog (wherobots_open_data.overture_maps_foundation.*) Generate edges via distributed spatial joins (WherobotsDB spatial SQL) Store vertex and edge tables in Apache Iceberg (Havasu format) Construct graph with GraphFrames — same Spark session, no separate DB Run graph operations — connected components for conflation, motifs for context retrieval Serve subgraphs as LLM context through the Spatial AI Assistant or MCP integration Every build enriches The Global Hub. Spatial Graph RAG: Key Points Graph RAG adds knowledge graph context to LLM reasoning Standard Graph RAG builds knowledge graphs from text. Spatial Graph RAG builds them from the physical world AI hallucinates about place because it has no structured spatial context — even when the model contains relevant geographic knowledge (GeoLLM, 2024) The pipeline is two layers: distributed spatial SQL generates edges; GraphFrames traverses them — both in the same WherobotsDB session Provenance makes it auditable — every edge carries evidence, every conflation candidate is inspectable The physical world is fundamentally relational. Spatial Graph RAG gives AI the relationships it needs to reason about place. References From Local to Global: A Graph RAG Approach to Query-Focused Summarization — Edge et al., Microsoft Research, 2024 GeoLLM: Extracting Geospatial Knowledge from Large Language Models — Manvi et al., ICLR 2024 An Integrated API for Mixing Graph and Relational Queries — Dave et al., GraphFrames / GRADES 2016 A Semantic-Spatial Aware Data Conflation Approach for Place Knowledge Graphs — He et al., IJGI 2024 Overture Maps Foundation Apache Sedona — 70M+ downloads GraphFrames GitHub Start Building with WherobotsDB Get Started Key takeawaysStandard Graph RAG builds knowledge graphs from text. Spatial Graph RAG builds them from the physical world: containment, proximity, adjacency, and intersection, using spatial SQL instead of NLP. The most consequential physical-world relationships are often not written down.The pipeline is two layers in one WherobotsDB session: distributed spatial SQL materializes node and edge tables into Apache Iceberg, then GraphFrames traverses them (connected components, motif finding, neighborhood expansion). No separate graph database is required.Microsoft Research's GraphRAG paper (Edge et al., 2024) reported 72–83% comprehensiveness win rates versus standard RAG on questions requiring synthesis across entire datasets. GeoLLM (Manvi et al., ICLR 2024) showed that querying an LLM with coordinates alone consistently fails unless structured, map-derived context is provided.You cannot load 2.6 billion Overture building geometries into Neo4j and compute containment with 1.2 billion places. Edge generation at that scale is what WherobotsDB and Apache Sedona are built for; the Overture Maps Foundation itself uses them for monthly global releases. Even in a dense urban area, a retrieved subgraph is typically 10–50 nodes.
How well does SAM3 detect building footprints? We asked the Wherobots Spatial AI Coding Assistant Posted on May 28, 2026October 3, 2026 by Philip Darringer In a recent post, we showed how easy it is to use RasterFlow and Meta’s Segment Anything 3 Model (SAM3) to detect features in the physical world. A single end-to-end pipeline built a 133 GB NAIP mosaic of Marion County, Oregon, ran SAM3 against it with text prompts spanning eight classes, and produced approximately one million detection polygons in a Wherobots table including roughly 312,000 building roofs. That is an impressive result on its own. But once the inference job finished, the obvious next question was: are these detections any good? Specifically, how well do they agree with an independent reference dataset of building footprints? The Overture Maps Foundation publishes a global buildings dataset that is freely available in the Wherobots Hub. If I could compare the SAM3 roof detections against Overture for the same county, I would have a first-pass evaluation of whether SAM3 is finding the right things in roughly the right places. The catch: I am a product manager, not a data scientist, and I am not well-versed in the standard techniques used to evaluate the output of remote-sensing models. Intersection-over-union, recall and precision curves, confidence calibration, the right metric coordinate reference system… I knew the terms, but I had not performed an evaluation like this from scratch before. That is exactly where the Wherobots Spatial AI Assistant comes in. Upcoming Session: See an AI agent take plain-language question and orchestrating pipelines to end results using RasterFlow and the Wherobots MCP server. Evaluating SAM3 on Aerial Imagery in Four Prompts I opened a conversation with the assistant inside Claude, using the Wherobots MCP server. I described what I had: a fresh SAM3 detection table in org_catalog.sam3_marion_db.sam3_outputs, and a goal of comparing it to Overture buildings. The full session took four prompts. Prompt 1: Describe the data. “can you see SAM3 results in org_catalog.sam3_marion_db.sam3_outputs? can you tell me more about this dataset of SAM3 detections for Marion County OR?” Within seconds, the assistant had walked the catalog, run summary statistics, and returned a complete profile: eight detection classes (layers), around one million total rows, 312k roofs, confidence scores ranging from 0.50 to 0.96, the table’s spatial extent, and the source mosaic. One of the queries it ran was a simple breakdown of the detections by class (layer): SELECT layer, COUNT(*) AS n, AVG(bbox_score) AS avg_score FROM org_catalog.sam3_marion_db.sam3_outputs GROUP BY layer ORDER BY n DESC A sample of SAM3 roof detections (blue) over NAIP imagery in Marion County, Oregon. Each polygon is a segmentation mask, not a bounding box. Prompt 2: Design the comparison. “if I wanted to compare the buildings (roofs) detecting with SAM3 against the building footprints in the overture dataset in wherobots_open_data.overture_maps_foundation, how would I do that?” The assistant designed a four-stage approach: clip both datasets to a Marion County area of interest; spatial-join them on intersection; compute intersection-over-union per pair; and aggregate to recall, precision, and calibration metrics. It also surfaced a set of caveats: Roofs are not footprints, since overhangs and occlusion mean the shapes will never match exactly. Overture is not ground truth in rural areas and is likely to miss buildings. The 0.5 confidence cutoff was already baked into the SAM3 outputs, which limits any precision-recall analysis to the upper half of the confidence range. Area math must be performed in UTM zone 10N rather than EPSG:4326. These considerations gave me confidence that the analysis was well thought through and likely accurate. Prompt 3: Use the right area of interest. Rather than a rough bounding box, I wanted the comparison clipped to the actual Marion County admin boundary, fetched from a trustworthy source. “can you use wkls to get the official admin boundary from Overture for Marion County, like this: gdf = gpd.read_file(wkls['us']['or']['Marion County'].geojson())” The assistant rebuilt the join strategy around the admin polygon generated using wkls. It pulled the boundary as a single-row Spark view that could be broadcast into the spatial joins, and combined an Iceberg bounding-box prefilter on Overture with an exact ST_Intersects predicate against the real Marion County shape. The generated code was straightforward: import wkls import geopandas as gpd gdf = gpd.read_file(wkls['us']['or']['Marion County'].geojson()) aoi_geom = gdf.geometry.iloc[0] aoi_wkt = aoi_geom.wkt sedona.sql(f""" CREATE OR REPLACE TEMP VIEW aoi AS SELECT ST_GeomFromWKT('{aoi_wkt}') AS geom """) Prompt 4: Let’s do the analysis in a notebook. “can you create this analysis in a Jupyter notebook that I can run with Wherobots?” The assistant returned a 24-cell notebook covering everything from SedonaContext setup through the final visualization. I ran it in VS Code using a Wherobots cloud runtime. The rest of this post walks through the code and the results. Comparing SAM3 Building Detections to Overture Footprints Here’s the notebook: sam3_vs_overture_marion.ipynb The notebook has four sections: Setup and constants. Setting up imports, initializing the SedonaContext, defining the target CRS (EPSG:32610, UTM zone 10N), IoU thresholds, and table names. It’s worth noting out that the assistant chose UTM zone 10N automatically (the right metric CRS for western Oregon) without me having to ask. Fetch the AOI from wkls. The notebook calls wkls['us']['or']['Marion County'].geojson(), reads the result into a GeoPandas frame, extracts the polygon’s WKT and bounding box, and registers a one-row aoi Spark view. It then renders the boundary on a SedonaKepler map so I could visually confirm I had the right AOI before running anything expensive. Sanity counts. Two COUNT(*) queries over the SAM3 and Overture tables, both clipped to the admin boundary: SAM3 roofs inside Marion County: 261,414 (the full dataset has 312k; the remainder fell outside the official admin polygon). Overture buildings inside Marion County: 146,642. SAM3 finds notably more candidate roof shapes than Overture has buildings. Filtered AOI views. Two temporary views, sam3_roofs and overture_bldgs, each with the lon/lat geometry and a UTM-projected geometry. The Overture view uses a two-stage filter: a bounding-box prefilter that takes advantage of Iceberg column statistics and an exact ST_Intersects predicate against the admin polygon for Marion County. Spatial join. This step matches candidate buildings. For every pair of SAM3 roof and Overture building whose geometries intersect, the query computes the intersection area, the two source areas, and the IoU: SELECT s.sam3_id, s.bbox_score, o.overture_id, ST_Area(ST_Intersection(s.geom_m, o.geom_m)) AS inter_m2, ST_Area(s.geom_m) AS sam3_m2, ST_Area(o.geom_m) AS overture_m2, ST_Area(ST_Intersection(s.geom_m, o.geom_m)) / NULLIF(ST_Area(s.geom_m) + ST_Area(o.geom_m) - ST_Area(ST_Intersection(s.geom_m, o.geom_m)), 0) AS iou FROM sam3_roofs s JOIN overture_bldgs o ON ST_Intersects(s.geom_4326, o.geom_4326) Intersection-over-union (IoU) is the area shared by two polygons divided by their combined area. A value of 1.0 is a perfect match; 0.0 means no overlap. The ST_Intersects predicate runs on the lon/lat geometries, where Sedona’s spatial join planner has the column statistics it needs to be efficient; the ST_Area and ST_Intersection calls run on the UTM-projected geometries, where the resulting numbers are in square meters and meaningful. The query returns 207,109 candidate matched pairs and is cached for the rest of the analysis. Resolution and metrics. Sometimes a single SAM3 polygon covers several Overture buildings, for example when SAM3 segments a multi-roof complex as one shape. Other times, several SAM3 polygons land on the same Overture building. To keep the comparison clean, the notebook keeps only the best-matching pair on each side. The remaining cells then compute the numbers the rest of the post relies on: Recall. What fraction of Overture buildings has a matching SAM3 detection of roughly the right shape. Precision. What fraction of SAM3 detections lines up with a known Overture building. Calibration. Whether SAM3’s confidence score is a reliable signal of how well-shaped each detection actually is. Aggregate area. How the total roof area SAM3 found across the county compares to the total building footprint area Overture has. A final cell renders five high-IoU and five low-IoU matched pairs on aerial imagery for visual spot-checking, so I could see with my own eyes where SAM3 and Overture agree and where they don’t. Example results comparing Overture building footprints (yellow) and SAM3 roof detections (blue). Top: a high quality result. Center: SAM3 failed to segment the roof in this building. Bottom: SAM3 segments part of the roof, but not the whole footprint. SAM3 Building Detection Accuracy: Recall, Precision, and IoU Results I wasn’t sure how best to assess the results. So I asked Claude to help with the analysis and here is a summary: The overall correlation is very high. SAM3 and Overture report total roof area within 7% of each other across this county. That level of agreement says they are measuring the same physical objects, not coincidentally landing on the same total. SAM3’s confidence score correlates to the accuracy of the polygon. SAM3 detections with high confidence scores have polygons that line up well with the real buildings, while lower confidence detections have less accurate shapes. That means we can use the confidence score as a reliable filter. Many of SAM3’s “false positives” are real buildings Overture missed. The assistant pointed out that many of the SAM3 detections without an Overture match are actual rural houses and outbuildings visible on aerial imagery. So the real precision is likely higher than 75%. When SAM3 finds a building, it usually gets the shape right. Only about 12 percentage points separate “found something on this building” from “found roughly the right shape on this building.” That means SAM3 is not just placing a point on the map, it is accurately outlining the building roofs. These results are impressive! With a single text prompt (”roofs”), I was able to produce detections that match a curated, multi-source reference dataset to within 7% on total roof area, found the right shape on three-quarters of known buildings, and carried a confidence score an application can actually trust. Even though SAM3 was not fine-tuned for roof detection, the resulting output would be operationally useful for many use cases. Using the Spatial AI Coding Assistant to Evaluate Computer Vision ML Models A few hours after I started, I had an initial assessment on the quality of the SAM3 detections. And I had a notebook with reproducible results that anyone can rerun in minutes. The assistant does not replace the role of the data scientist, but accelerates initial spatial and statistical analysis. And it did it while surfacing important caveats from the start. Try It Yourself Sign up for Wherobots Cloud and connect the Spatial AI Assistant to your own data. Read the prior RasterFlow + SAM3 post for the upstream half of this workflow. Sign up for the RasterFlow private preview to try out SAM3 today! Try the Spatial AI Coding Assistant GET STARTED Key takeawaysA prior RasterFlow + SAM3 job built a 133 GB NAIP mosaic of Marion County, Oregon, ran text prompts across eight classes, and produced about one million detection polygons, including roughly 312,000 building roofs. This post evaluates those roof detections against Overture Maps buildings in the Wherobots Hub.The evaluation was designed and executed in four prompts with the Spatial AI Assistant inside Claude, using the Wherobots MCP server. The assistant returned a 24-cell notebook. Area math uses UTM zone 10N (EPSG:32610), not EPSG:4326. The AOI is the official Marion County admin boundary from wkls, not a bounding box.Inside the official county polygon: 261,414 SAM3 roofs vs 146,642 Overture buildings. The spatial join produced 207,109 candidate matched pairs. SAM3 and Overture total roof area agree within 7% across the county.Caveats baked into the analysis: roofs are not footprints; Overture is not ground truth in rural areas and likely misses buildings; the 0.5 confidence cutoff was already applied in SAM3 outputs, limiting precision-recall to the upper half of the confidence range. Many SAM3 'false positives' are real rural buildings Overture missed, so real precision is likely higher than 75%.
Wherobots MCP Server: Building GEOINT Spatial Pipelines with AI Agents Posted on May 26, 2026October 3, 2026 by Ben Pruden Editor’s note: The Wherobots Spatial Data Catalog is now the Havasu Catalog. I built three national-security GEOINT use cases on the Wherobots stack in days instead of weeks. A Critical Infrastructure Vulnerability (CIV) pipeline with two regional variants, plus a border-corridor analysis on real transportation segments. The Wherobots geospatial MCP server is what made that timeline possible. Most of the work in standing up a credible use case isn’t the analysis. It’s the plumbing. Finding the right data within the organization. Understanding the schema. Anchoring synthetic operational data to real geometries so the joins represent reality. That’s where the weeks go, and anyone who’s built a multi-table spatial pipeline on real data knows the shape of it. About a dozen joined results, multiple Overture Maps Foundation themes, notional mission overlays, and an scenario-based MCP server evaluation notebook driving the whole thing. The build took days instead of weeks thanks to the Wherobots Spatial AI Coding Tools. What used to be the slow part of this kind of build was never the analysis. It was the getting to the analysis. Finding the right Overture tables. Learning their column shapes. Remembering whether class lived on base_infrastructure or places_place. Figuring out that categories was structured as a STRUCT vs. a flat field. Discovering the hard way that power_pole and power_tower collectively contain 36M rows and could have consumed tons of unnecessary resources. The Wherobots MCP collapsed every one of those build time consuming events into a tool call. Designing the CIV Pipeline Schema The end state for the CIV use case is a 10-step pipeline ending in a 5-component scoring formula: vulnerability_score = 0.25 * flood_count + 0.25 * wildfire_count + 0.15 * (facility_count + 0.01 * building_count) + 0.20 * criticality_tier * 100 + 0.15 * (negative_tweet_count * 2 + neutral_tweet_count * 0.5) Sitting underneath that score: an AOI layer, an asset layer, flood and wildfire proximity buffers, settlement/facility proximity, building density, a criticality tier table, seasonal hazard windows, social-media sentiment proximity, and a geofence overlay. About a dozen tables in wherobots.geoint.*_civ, each with a clear FK relationship back to critical_assets_civ.asset_id. Overture thematic geometries underneath, synthetic operational signal layered on top. That’s a lot of schema. Designing it is the interesting part. Creating the plumbing without agentic support can extend the timeline significantly. Direct Access to Your Spatial Catalog The real paradigm shift isn’t any single tool call. It’s that the agent can reach for my Wherobots organization’s current catalog, and any of the catalogs connections it has (Databricks Unity, AWS Glue, S3) whenever it needs to, intra-session. Not a snapshot from when the analysis was developed. Not a schema description I pasted into a system prompt three turns ago. When the agent invokes the MCP, the response reflects the catalog as it exists at that moment, which means: After I created critical_assets_civ in Step 2, a follow-up prompt could find it via a fresh catalog walk. No need to tell the agent anything. When I added a negative_tweet_count column further down the pipeline, the next describe_table call against that table reflected the new column. When I joined two of my own tables and persisted the result as a new Iceberg table, the agent could discover and reason about it on a subsequent prompt as easily as any Overture table. The catalog and the agent’s understanding don’t have to drift apart. That sounds like a small thing. In practice though, it is a BIG deal, because the work of building a multi-table use case is a sequence of “I just created this, now use it to build the next thing.” Whenever the agent reaches for the catalog, it can see what I’ve built so far, what’s in the open data catalog, and what fields are queryable. I’m never re-explaining my own schema. This is what an AI context engine for the physical world looks like in practice. The agent isn’t reasoning about geography from training data. It’s reading the live state of a interconnected and extensible Wherobots spatial catalog and writing SQL grounded in it. The loop that emerged on top of that capability looked the same across both builds: Discover. “What Overture tables describe critical infrastructure in this AOI?” The MCP catalog walk surfaced base_infrastructure, base_water, base_land_cover, places_place, and buildings_building, including the row counts that warned me off power_pole and power_tower before I computed a spatial join on them. -- Catalog walk: filter base_infrastructure to classes worth joining on, -- excluding power_pole (18.3M rows) and power_tower (18.0M rows) once -- list_tables_tool surfaced their volume. SELECT class, COUNT(*) AS row_count FROM wherobots_open_data.overture_maps_foundation.base_infrastructure GROUP BY class ORDER BY row_count DESC; Describe. Before any SQL got written, describe_table returned the actual columns. No guessing whether categories.primary was a STRUCT field or a flat string. No discovering at runtime that subtype and class were different axes. Generate with grounded context. Schema-aware SQL generation produced queries that ran on the first or second attempt because the agent had already seen the column shape, including the tables I’d just created moments earlier. -- Step 3: Flood Hazard Proximity -- Counts water features within 1 km of each critical infrastructure asset. -- Pre-filters water to Ukraine AOI to reduce spatial join volume. SELECT a.asset_id, COUNT(w.id) AS flood_water_count FROM critical_assets a JOIN wherobots_open_data.overture_maps_foundation.base_water w ON ST_DWithin(a.geometry, w.geometry, 1000, true) CROSS JOIN ukraine_aoi ua WHERE w.class IN ('river', 'stream', 'lake', 'reservoir', 'canal') AND ST_Intersects(ua.geometry, w.geometry) GROUP BY a.asset_id ORDER BY flood_water_count DESC; Execute with limit=10. Every query got tested on a small slice before it ran across the full AOI. The cost of being wrong dropped to near zero, which meant I iterated on scoring weights, distance thresholds, and asset-class filters far more aggressively than I would have otherwise. The result: I spent my time on the parts that required judgment. Where should the flood buffer be: 500m, 1km, 2km? 500m is too tight in dense urban terrain. 2km swallows half the AOI. The MCP let me test all three in the time it would normally take to write the first query. What’s the right tier-weighting for a substation vs. a generator? Does negative sentiment matter 2x or 4x more than neutral sentiment in the composite score? How do I express a seasonal vulnerability window so the downstream MCP scenarios can filter on it cleanly? Here’s what the scoring formula above looks like as the actual SQL that runs against the persisted views. Every *_proximity table shares the same asset_id grain, so the composite score is a single set of LEFT JOINs back to the asset layer: -- Step 10: Enhanced Vulnerability Score (5-component composite) SELECT ca.asset_id, ca.class, ac.criticality_tier, COALESCE(fp.flood_water_count, 0) AS flood_count, COALESCE(wp.wildfire_landcover_count, 0) AS wildfire_count, COALESCE(sp.facility_count, 0) AS facility_count, COALESCE(bd.building_count, 0) AS building_count, COALESCE(sm.negative_tweet_count, 0) AS negative_tweet_count, ( 0.25 * COALESCE(fp.flood_water_count, 0) + 0.25 * COALESCE(wp.wildfire_landcover_count, 0) + 0.15 * (COALESCE(sp.facility_count, 0) + 0.01 * COALESCE(bd.building_count, 0)) + 0.20 * ac.criticality_tier * 100 + 0.15 * (COALESCE(sm.negative_tweet_count, 0) * 2 + COALESCE(sm.neutral_tweet_count, 0) * 0.5) ) AS vulnerability_score, CASE WHEN COALESCE(fp.flood_water_count, 0) > 0 AND COALESCE(wp.wildfire_landcover_count, 0) > 0 THEN TRUE ELSE FALSE END AS multi_hazard_flag FROM critical_assets ca JOIN asset_criticality ac ON ca.asset_id = ac.asset_id LEFT JOIN flood_proximity fp ON ca.asset_id = fp.asset_id LEFT JOIN wildfire_proximity wp ON ca.asset_id = wp.asset_id LEFT JOIN settlement_proximity sp ON ca.asset_id = sp.asset_id LEFT JOIN building_density bd ON ca.asset_id = bd.asset_id LEFT JOIN social_media_proximity sm ON ca.asset_id = sm.asset_id ORDER BY vulnerability_score DESC; The Same Pattern Works for Retail, Insurance, and Supply Chain Strip the national-security framing off the build and the underlying loop is domain-agnostic. Swap critical_assets_civ for store locations and the proximity layers for foot-traffic decay and competitor density, and the same pipeline becomes a retail expansion analysis. Swap them for policy-in-force locations and named-storm tracks, and it’s catastrophe exposure modeling for an insurance carrier. Swap them for distribution centers and port-congestion signal, and it’s a supply-chain resilience build. Swap them for parcels and zoning and hazard layers, and it’s a municipal planning workflow. The paradigm generalizes: a live catalog the agent re-reads every turn if needed, layered data anchored to real datasets and foundational Overture data, and an iterative discover → describe → generate → test → refine loop. It works anywhere you have a catalog of geospatial or tabular data you’re actively building on top of. The schema work is the same shape regardless of whether the bottom layer is Overture infrastructure, OpenStreetMap, NAIP rasters, parcel records, or a customer’s own warehoused operational data. What changes is the vocabulary on top. What You Ship: Notebooks, Schemas, and a Reusable GEOINT Pipeline Two regional CIV setup notebooks, a third for border-corridor segments, and an MCP scenario notebook with 10+ analyst prompts that exercise the full schema. All on real Overture geometry. All synthetic where it needs to be. All persisted to our managed Iceberg catalog as wherobots.geoint.* so the next analyst can pick it up where I left off. The deliverable looks like weeks of work. The MCP server and spatial AI coding tools made it days. The schema is where the value lives, and the AI coding tools let me spend my time there. Here is a link to the use case setup notebook Get Started with the Spatial AI Coding Assistant Access Now Key takeawaysThree national-security GEOINT use cases were built on Wherobots in days instead of weeks: a Critical Infrastructure Vulnerability pipeline with two regional variants, plus a border-corridor analysis on real transportation segments. The slow part was never the analysis; it was catalog discovery, schema, and anchoring synthetic operational data to real geometries.The MCP server walks the live Wherobots catalog (and connected Databricks Unity, AWS Glue, or S3 catalogs) intra-session. After critical_assets_civ was created in step 2, a follow-up prompt could find it via a fresh catalog walk. The agent is reading the catalog as it exists at that moment, not a schema pasted into a system prompt.A catalog walk warned off power_pole (18.3M rows) and power_tower (18.0M rows) — 36M rows collectively — before a spatial join. The discover → describe → generate → test (limit=10) → refine loop let the author test 500 m, 1 km, and 2 km flood buffers in the time it would normally take to write the first query.The CIV score is a 10-step pipeline ending in a 5-component formula: 0.25 flood_count + 0.25 wildfire_count + 0.15 (facility_count + 0.01 building_count) + 0.20 criticality_tier * 100 + 0.15 (negative_tweet_count * 2 + 0.5 neutral_tweet_count). Deliverables: two regional CIV notebooks, a border-corridor notebook, and an MCP scenario notebook with 10+ analyst prompts, persisted as wherobots.geoint.* Iceberg tables.
Detecting Objects From Text Prompts with RasterFlow and Segment Anything 3 Posted on May 4, 2026October 3, 2026 by Ryan Avery RasterFlow now Supports Detections from Text! RasterFlow now makes it simple to run promptable geospatial vision models across large aerial and satellite imagery collections, removing the need to build bespoke inference pipelines. With our new SAM 3 support, you can prompt for concepts like “roofs”, “roads”, or “shipping containers” and turn those detections into vector outputs ready for analysis in Wherobots, from city scale to country scale. Here we see SAM 3 localize and capture roofs really well. It also segments roads pretty cleanly, though there is still room for improvement. Results are shown on the inference input, a NAIP 30 centimeter basemap, and include all instance pixels above 50% confidence. In this post, we put SAM 3 to the test detecting roofs in suburban neighborhoods, shipping containers in crowded loading docks, and tractors across agricultural landscapes. Throughout, we comment on where it succeeds, where it falls short, and how results compare to previous SAM models. Finally, we discuss what’s next for computer vision in Earth observation (EO) and how the community can build on models like SAM to create more promptable, flexible applications that handle the scale and diversity of remote sensing imagery. How Segment Anything Model 3 Improves on SAM 1 and SAM 2 for Remote Sensing In 2023, the Segment Anything Model (SAM) set a new paradigm for computer vision. While most models were trained to address one task at a time, SAM demonstrated that a single model could reliably classify, localize, and segment many kinds of objects in complex natural scenes. SAM set a new standard task for computer vision models that went beyond classification or semantic segmentation: Promptable Visual Segmentation (PVS), which takes spatial prompts such as boxes, points, or masks as input and predicts masks. However, SAM 1’s performance on out-of-distribution imagery domains had issues. Back in 2023, while I was working on detection projects with 10 meter resolution imagery, I found it often took multiple rounds of prompting to get useful segments, and many results still needed manual cleanup. For example, in a rural town, SAM 1 can segment many features across different spatial scales, but it still misses all roads. SAM 1 segments many features across different spatial scales in Dikwa, Nigeria, but still misses roads. SAM 2 improved accuracy and added video support, but both SAM 1 and SAM 2 were limited to making predictions without associated labels. The masks they produced were not grounded in categories useful for deriving insights. Fast forward to today: SAM 3 addresses Promptable Concept Segmentation (PCS), a task where a model can accept either spatial prompts (masks, boxes, pixels) or text prompts like “cat”, “dog”, even “roofs”! The SAM 3 architecture supports Promptable Concept Segmentation, accepting text and image exemplars in addition to spatial prompts to produce masks with labeled concepts. It also benefits from pretraining on overhead imagery. Source: YouTube. This opens up new possibilities for detecting objects in imagery. Because SAM 3’s training data spans many imaging domains, including overhead aerial imagery, it can succeed in many Earth observation contexts where previous model generations struggled. For example, one can use SAM 3 to predict “roofs” in NAIP imagery simply by asking, with no model training or ad hoc labeling needed, and get pretty stellar results. With RasterFlow, we can create imagery mosaics and predict roofs simply by prompting SAM 3 with short noun phrases like “roofs”. To put SAM 3 to the test on Earth observation imagery, we generated many more SAM 3 predictions on top of National Agriculture Program 30 centimeter imagery using RasterFlow, our scalable mosaic building and inference engine. Below details the performance of RasterFlow on this high resolution detection task. RasterFlow TaskBilled RuntimeOutputTotal Output SizeSpatial Scale of Outputbuild_gti_mosaic11m 47sNAIP Zarr mosaic133.08 GB (123.94 GiB)~114.15 km × 66.81 kmpredict_mosaic_geometries39m 51sGeoParquet geometry results263.85 MB (251.63 MiB)~111.02 km × 66.81 km See an AI agent take plain-language question and orchestrating pipelines to end results using RasterFlow and the Wherobots MCP server, check out the upcoming live session. See it in action Join us live How to Run SAM 3 on Aerial and Satellite Imagery with RasterFlow What used to take a complex mix of imagery ETL, bespoke inference pipelines, and self-provisioned infrastructure for large Earth observation processing now takes under an hour and two simple Python functions. Let’s check it out below. Build an Aerial Imagery Mosaic from NAIP First, we will generate a mosaic: a seamless, stitched-together image from many independent remote sensing scenes. RasterFlow handles all the data sourcing, loading, cleaning, and partitioning into a data asset optimized for inference for a particular model. from rasterflow_remote import RasterflowClient rf_client = RasterflowClient() mosaic_output = rf_client.build_gti_mosaic( gti="s3://wherobots-examples/rasterflow/indexes/naip_index.parquet", aoi="s3://wherobots-examples/rasterflow/aois/marion_county.parquet", bands=["red", "green", "blue", "nir"], location_field="url", crs_epsg=3857, time_column="year", skip_xy_coords=False, xy_chunksize=1024, query="res == 0.3 and time >= '2022-01-01' and time <= '2023-01-01'", requester_pays=True, sort_field="time", ) print(mosaic_output.uri) Run the SAM 3 Inference on the Mosaic With our mosaic built, we can now run inference with SAM 3. Unlike more rigid models which only predict one category, SAM 3 can accept one or more text prompts and detect all matching objects in a single pass. The runtime for a given batch of imagery scales linearly with the number of detections. More prompts tends to mean more detections, so keep in mind that the more prompts you add, the longer you can expect an inference run to take. from rasterflow_remote.data_models import GeometryActorEnum, MergeModeEnum model_output = rf_client.predict_mosaic_geometries( store="s3://wherobots-examples/rasterflow/mosaics/marion_county.zarr", model_path="https://huggingface.co/wherobots/sam3-text-geometry-pt2/resolve/main/full_sam3_pipeline.pt2", patch_size=1008, clip_size=0, device="cuda", features=["red", "green", "blue"], labels=["roads", "airplanes", "airports", "roofs", "solar panels", "swimming pools", "shipping containers", "tractors"], actor=GeometryActorEnum.TEXT_TO_VECTOR_GEOMETRIES, max_batch_size=1, confidence_threshold=0.5, merge_mode=MergeModeEnum.NONE, xy_block_multiplier=1, ) Analyze the SAM 3 Detections with WherobotsDB We can visualize both the mosaic and detections directly in the notebook with an embedded RasterFlow map. The RGB imagery mosaic and the SAM 3 detections have been web-optimized with RasterFlow for fast and fluid browsing. If the embed does not load in your environment, open it in a new tab here. After visually exploring detections, we can load the results into WherobotsDB for quantitative analysis. WherobotsDB lets us post-process geometries, calculate zonal statistics on other rasters, count objects, measure clustering, and much more. import os from sedona.spark import * from pyspark.sql.functions import * from wherobots import vtiles config = ( SedonaContext.builder() .getOrCreate() ) sedona = SedonaContext.create(config) parquet_path = "s3://wherobots-examples/rasterflow/model-outputs/marion_county_sam3/" df = sedona.read.format("geoparquet").load(parquet_path) df.printSchema() df.show(10) Here we’ll use ST_Area to estimate the total square km area of all roofs in Marion County. roofs_df = df.filter(col("label") == "roofs") source_srid = roofs_df.selectExpr("ST_SRID(geometry) AS srid").first()["srid"] source_crs = f"EPSG:{source_srid}" print(source_crs) # Run the SRID inspection cell above first so source_crs reflects the data's actual CRS. roof_areas = roofs_df.withColumn( "area_sq_m", expr(f"ST_AreaSpheroid(ST_Transform(geometry, '{source_crs}', 'EPSG:4326'))"), ).cache() roof_areas_agg = roof_areas.agg( sum("area_sq_m").alias("total_area_sq_m"), (sum("area_sq_m") / lit(1_000_000.0)).alias("total_area_sq_km"), ) roof_areas_agg.show(truncate=False) roof_size_stats = roof_areas.agg( count("*").alias("roof_count"), avg("area_sq_m").alias("avg_roof_sq_m"), expr("percentile_approx(area_sq_m, 0.5)").alias("median_roof_sq_m"), (avg("area_sq_m") * lit(10.7639)).alias("avg_roof_sq_ft"), ) stats = roof_size_stats.first() print(f"roof_count: {stats['roof_count']:,}") print(f"avg_roof_sq_m: {stats['avg_roof_sq_m']:.2f}") print(f"median_roof_sq_m: {stats['median_roof_sq_m']:.2f}") label_counts = df.groupBy("label").count().orderBy(col("count").desc(), col("label")) label_counts.show(truncate=False) We can also generate web-optimized vectors in PMTiles format. PMTiles are easily shareable and plug directly into geospatial visualization applications, making them a great choice for distributing detection results. df_tiles = df.withColumn("layer", col("label")) output_path = 's3://wherobots-examples/rasterflow/model-outputs/marion_county_sam3.pmtiles' vtiles.generate_pmtiles(df_tiles, output_path) SAM 3 Accuracy on Earth Observation: Where It Succeeds and Where It Falls Short After experimenting with SAM 3 on NAIP, I’m impressed with the range of categories that SAM 3 can positively identify. At the same time, the model still has clear precision and recall gaps for more niche semantic categories, like “tractors” or “shipping containers”. SAM 3 correctly detects tractors in a harvested field. In an agricultural context, SAM 3 finds some tractors but also misses some. SAM 3 correctly identifies shipping containers in a storage yard. False positives: SAM 3 labels rectangular roofs as “shipping containers”. These examples illustrate the gap between SAM 3’s strengths on common categories and its current limitations on more niche ones. I’m bullish that if SAM 3 were fine-tuned on a larger corpus of mixed high-resolution imagery and high-quality labels, it would perform even better outside of its primary domain of natural imagery. Even so, I think the potential for SAM 3 for simpler categories like “roofs” is underutilized. SAM 3 could potentially improve many existing datasets we rely on to make decisions, like Overture Buildings and detections of other kinds of structures. What to Try Next with SAM 3 on Wherobots Some things we didn’t showcase but I recommend trying in your experiments: Can you find and count vehicles that are a certain color? Can you use SAM 3 to segment city streets? What about rural roads? Try to map forest canopy! SAM 3 can do a pretty great job at segmenting concepts that don’t map cleanly to individual objects, but are more textural. For a larger-scale example of RasterFlow in production, see how RasterFlow processed 2.3B Overture Maps features for Fields of the World. If you’re excited to try SAM 3 on Wherobots, sign up for RasterFlow Private Preview. You can also get in touch at ryan@wherobots.com or talk to us here. I’d love to hear about what you’re looking to build and how SAM 3 could fit into your detection workflows. Try SAM3 on Wherobots START BUILDING Key takeawaysRasterFlow now supports SAM 3 promptable concept segmentation: text prompts such as ‘roofs’, ‘roads’, or ‘shipping containers’ produce vector outputs from aerial and satellite mosaics. SAM 3 accepts spatial prompts or text, and it was pretrained on overhead imagery, unlike SAM 1/2.On Marion County NAIP 30 cm, build_gti_mosaic billed 11 minutes 47 seconds and wrote a 133.08 GB Zarr mosaic (~114.15 km × 66.81 km). predict_mosaic_geometries billed 39 minutes 51 seconds and wrote 263.85 MB of GeoParquet. Eight labels were prompted in one pass at confidence_threshold 0.5.SAM 3 localizes roofs well on the NAIP basemap and segments roads reasonably, with room for improvement. Niche classes such as tractors and shipping containers show clear precision and recall gaps, including rectangular roofs labeled as shipping containers.What used to take a mix of imagery ETL, bespoke inference pipelines, and self-provisioned infrastructure now takes under an hour and two Python functions: build_gti_mosaic then predict_mosaic_geometries. Detections load into WherobotsDB as GeoParquet for ST_AreaSpheroid, counts, and PMTiles via vtiles.generate_pmtiles.
Introducing developer tools that let AI build with physical world data Posted on April 8, 2026October 3, 2026 by Pouyan Aminian Your AI can now understand and query spatial data using the Wherobots MCP server, VS Code extension, and CLI. The physical world is a new frontier for AI, but modern AI-driven tools are limited by what they can do with this type of data. LLMs don’t understand how to use physical world data for analytical purposes. For example, when we asked ChatGPT to compute the flood risk from sea level rise for all homes along the California coastline, it came back claiming that “no one can give you a single exact number”, plus some unverifiable numbers: That may have been true, until now! In the past, it would take highly skilled developers who are familiar with spatial data and its query patterns, weeks to prototype this type of analysis. Now, developers and analysts, irrespective of their geospatial skills, can build it on-demand using natural language. Using your AI agent connected to Wherobots, they can build working solutions with small to very large scale geospatial data in minutes. Wherobots now offers your AI the capability to understand spatial data to generate quality code. The pairing includes direct access to WherobotsDB, a cloud-based, secure, and distributed execution environment purpose-built to generate results efficiently at scale. Soon, the same AI will be capable of driving RasterFlow, the planetary-scale inference engine for Earth Intelligence to extract machine-generated insights from satellite, drone, and sensor datasets. If you’re working in the energy space or you’re interested to see an agent take plain-language question and orchestrating pipelines to end results, check out the upcoming live session. Spatial AI for Energy Join us live Enabling AI to Work with Physical World Data We are launching three new tools that let AI understand and drive the analysis of spatial data; an MCP server, a CLI, and a VS Code extension. These tools are designed to bring geospatial development into IDEs like VS Code, Claude Code, OpenCode, Cursor, Windsurf, Kiro and others. And soon the Wherobots connector will make it easy to use the same analytical capability in Claude and ChatGPT from respective marketplaces. With these tools, LLMs and agents can discover and understand spatial data, generate and debug code, and build solutions considerably faster using natural language as an interface. As a result, developers and analysts immediately become more productive with geospatial data, enabling them to solve more problems, and shorten the development cycle from weeks down to potentially minutes. Wherobots integrates with data lakes and lakehouses including AWS S3, Databricks Unity Catalog, and AWS Glue, allowing teams to realize massive gains using their existing data. Getting Started Sign up for a free trial of Wherobots Pro. Use Wherobots for free for 30 days and up to $95, with an additional $250 credit if you activate your spatial AI coding tools. Create a Wherobots API key. Install the Wherobots extension for VS Code. Optionally, establish secure integrations with datasets in Amazon S3, Databricks Unity Catalog, or AWS Glue. Wherobots will utilize these integrated datasets, along with hosted datasets within its catalog. You can also install Wherobots on other IDEs, work with the MCP server, utilize the CLI and agent skills. Start using the extension by typing a prompt into the chat window: “Using NDVI datasets and field boundaries for California, what kind of field-level crop health insights can I compute?” “Write a notebook for me to ingest the latest American Community Survey data from US Census.” “I need to know how many properties in California coastal cities are facing flooding risk. I want you to come up with an analysis framework for this, help me identify the right datasets to help me solve this problem, generate some initial insights from those for me to validate, and finally (once I approve) write a notebook for me to run this analysis independently.” Using VS Code and Claude Opus 4.6 harnessed to Wherobots, we were able to complete the California flood risk analysis that ChatGPT couldn’t in under 30 minutes and for less than $5 of Wherobots usage. The California Coastal Flood Risk notebook we built is here. Here is a quick video interacting with a generated notebook via VSCode. Enabling Agents to Understand the Physical World What we announced today enables people to use AI to build solutions with physical world data, at a fraction of the time and cost. Agents are now capable of developing production-grade geospatial data applications, autonomously or semi-autonomously with a human in the loop with Wherobots acting as the natural language interface and the context engine between the two. What’s Possible Now Here are a few example prompts that can drive prototypes and working solutions. To build prototypes or solutions, you will need to ensure the right data is integrated with Wherobots such that your AI can use Wherobots to understand it, and execute effectively based on your directions. For many organizations, this data is already available either in their private data lake (Amazon S3, Databricks Unity Catalog, AWS Glue Data Catalog) or in the public domain (STAC, public datasets, purchased datasets). Mobility, fleet management, and logistics: “Use Wherobots to transform the raw GPS data for the month of March [located in Databricks Unity Catalog Table X] into trips, and match it to the Overture transportation network using Wherobots map matching. Tell me which segments of road in the state of California were the most constraining for my trips. Define constrained as the speed traveled was less than 50% of the advertised speed limit, rank these segments by trips taken, and also eliminate road segments that were within 1/4 mile of an intersection.” Marketing and advertising: “Using the fields of the world dataset generated by Wherobots RasterFlow, join fields to Regrid parcels. Also join this result with my customer database located in [S3 location]. I want to identify unique farm owners who are not customers and sell to them.”Insurance: “Compute the flood risk score using the [flood plane raster] for all properties under general home insurance located in my [S3 bucket path]. Identify which properties have flood insurance and are at the most risk, based on [criteria X]. Separately tell me which properties are at risk, but not insured so I can target them for insurance offerings.” Agriculture: “Use the fields of the world dataset as a filter. Use RasterFlow and the latest Sentinel 2 data in the AWS data exchange to compute NDVI for the state of California. Join these results with the fields to produce NDVI statistics in the month of July for all fields in California.” (This example will be AI-driven soon, but is feasible today with RasterFlow in private preview) What’s Coming Next In the coming months you can expect: Wherobots Connector on the Claude and OpenAI Marketplaces OAuth support for the MCP Server Additional hosted datasets in the Wherobots Hub New integrations with additional data sources and catalogs Here’s a sneak peek of the experience we are planning to enable via Claude, including notebook generation and insights provided directly inside Claude Chat: Please reach out to us at product@wherobots.com or support@wherobots.com if you have feedback, requests, or questions. Start your free trial below and start using the spatial AI coding tools. Start your free trial. Try Now Key takeawaysWherobots launched three tools that let AI understand and drive spatial analysis: an MCP server, a CLI, and a VS Code extension, designed for IDEs including VS Code, Claude Code, OpenCode, Cursor, Windsurf, and Kiro. A Wherobots connector for Claude and ChatGPT marketplaces is described as coming soon.Using VS Code and Claude Opus 4.6 harnessed to Wherobots, the California coastal flood-risk analysis that ChatGPT declined to quantify as a single number was completed in under 30 minutes for less than $5 of Wherobots usage. The notebook is linked from the post.Free trial stated here: Wherobots Pro for 30 days and up to $95, with an additional $250 credit if you activate spatial AI coding tools. Create an API key, install the VS Code extension, and optionally integrate S3, Databricks Unity Catalog, or AWS Glue.Wherobots integrates with AWS S3, Databricks Unity Catalog, and AWS Glue so agents work against existing lakes. RasterFlow-driven agent workflows are described as coming soon. Roadmap items: marketplace connectors, OAuth for MCP, more Hub datasets, and additional catalogs.
Introducing RasterFlow: a planetary scale inference engine for Earth Intelligence Posted on December 10, 2025September 1, 2026 by Philip Darringer We’re very excited to announce RasterFlow is now available to select customers in a private preview. If you are interested in learning more or would like to request access to the preview, contact us here! RasterFlow is a serverless image preparation and inference engine that makes it significantly easier to generate Earth Intelligence from planetary scale Earth Observation (EO) datasets. With it, customers and their AI agents will be significantly more capable of innovating with EO data and integrating earth insights into their data infrastructure. Upcoming Session: See an AI agent take plain-language question and orchestrating pipelines to end results using RasterFlow and the Wherobots MCP server. See it in action Join us live How RasterFlow Powers Earth Intelligence at Scale A few weeks ago, we announced our collaboration with the Taylor Geospatial Engine to help them evaluate their Fields of the World (FTW) machine learning model that segments agricultural field boundaries. Using an early release of RasterFlow, we were able to quickly and cost-effectively run this model at scale. Here’s a breakdown of how this works in practice. RasterFlow ingests and assembles the source imagery – in this case Sentinel-2 – into an inference-ready mosaic, generating representative features using the FTW model for planting and harvest seasons, and removing cloud cover as needed (1, 2). The FTW model is run against this mosaic using RasterFlow’s distributed inference engine to predict fields and field boundaries (3). RasterFlow predictions are then vectorized into geometries and made available as an Iceberg table (4) that can be used in WherobotsDB or other downstream applications and data systems for field-level crop insights. RasterFlow’s applicability is much wider than Sentinel 2 and FTW. It supports Zarr and COG imagery datasets and PyTorch computer vision models for inference. RasterFlow at Scale The images above represent sample outputs for a small area in Kansas, but RasterFlow can be very attractive for larger scale runs. In our collaboration with the Taylor Geospatial Engine, we executed larger scale runs including the Continental United States (CONUS), Japan, Mexico, South Africa, Switzerland and Rwanda. RasterFlow’s efficient parallel processing enabled each of these large scale workflows to complete in minutes to a few hours. RasterFlow autoscales compute resources based on expected compute and inference load, which is a function of area and time range, dataset density, and model complexity. Challenges using EO Data Most data teams do not have the expertise or the budget to build and operate the unique infrastructure and software stack required to extract insights from EO datasets using computer vision models. These barriers have prevented innovative ideas from getting off the ground. According to Gartner, only 1% of AI models today leverage physical world data, vs a projected 80% by 2029. Similarly, AI agents are projected to generate 10 times more data from physical environments than from all digital AI applications combined.1 However, AI agents can’t economically make sense of this raw data because it has to be prepared by the same costly, complex, and unique infrastructure the data teams need, but neither have access to. Here’s an example that underscores these challenges: if you or an AI agent are trying to analyze wildfire state and predicted spread to measure risk to infrastructure, developers typically need to build dedicated pipelines that: Ingest and prepare imagery for inference, minimizing noise such as cloud cover and edge effects Deploy a machine learning model on prepared imagery, trained to segment and classify fires Tune model inference for scale and efficiency, while minimizing edge and tiling effects from individual tasks Measure change over time using models that take into account wind direction, speed, vegetation, buildings and other infrastructure in the probable path of the fire Join model predictions with other important context including building footprints, land parcels and infrastructure such as powerlines and pipelines to calculate overall risk Forecast the spread of the fire In total, these steps require significant investments in both infrastructure development, operations, and talent that most businesses are unable to justify, much even accomplish. On-Demand Imagery Preparation and Inference for Earth Observation Workflows The inspiration for RasterFlow was to make it easy for any company to use large scale sensor datasets and computer vision models to unblock innovation and AI applications for the physical world. RasterFlow does this by combining decades of expertise with a fully managed, inference and mosaicking workflow and API designed for Earth Intelligence at any scale. Here are a few key capabilities: On-demand serverless operations for imagery ingestion, preparation (also known as mosaicking), and inference. Built-in support for popular open datasets and open models so you can get started quickly. Inference results that can be converted to vector geometries and integrated into a lakehouse architecture; in a customer’s cloud storage bucket as Parquet files in Apache Iceberg tables. Ability to easily postprocess these results with WherobotsDB or other lakehouse engines with support for spatial operations, such as Databricks, Snowflake, or Google BigQuery. Simple enough for any engineer, scientist, or analyst to use: just pick a model, an area of interest to deploy that model, and a time range. Advanced users can take advantage of lower-level APIs to customize their planetary-scale inference runs. RasterFlow Operators: Core Functions for Preparing Imagery, Model Inference, and Vectorization RasterFlow provides fully managed operations required for processing Earth Observation datasets, including: Imagery ingestion and preparation to remove cloud cover, edge effects, and build a high quality inference-ready mosaic Distributed inference for large scale computer vision, geospatial foundational and other PyTorch model runs Vectorization of model outputs into geometries or as analytics ready rasters For object detection workloads, RasterFlow pairs with models like Segment Anything 3, see how SAM 3 performs on aerial and satellite imagery for a full walkthrough. Ingesting and Preparing Satellite Imagery for Model Inference Satellites and drones capture imagery on a particular flight path. And it may take multiple drone flights, or days, weeks, or even months for the flight paths of a satellite constellation to capture clean imagery for a particular area of interest. Clouds and weather events may still block what you may be interested in. In these circumstances it’s important to understand the rate of coverage and define your time horizon accordingly, to build a mosaic. A mosaic is a composite image that is the result of composing high-quality pixels (e.g., cloud free) over a time range, and stitching them together for a particular area. Base satellite layers in your favorite map applications (Google Maps, Mapbox) are cloud-free mosaics composed from images over a wide time range. Many computer vision models are trained to find relatively durable things on Earth, like buildings, roads, and land cover. But when clouds, coverage, imagery edge effects, or other types of “noise” exist in the input imagery, the quality of inference suffers. The purpose of the mosaic is to correct for this noise and make imagery, inference-ready, so model inference produces the results you want. RasterFlow takes care of this heavy lifting for you, creating an inference-ready mosaic that maximizes the usefulness of today’s Earth Observation models. Distributed Geospatial Inference at Planetary Scale We’ve moved past the use of eyes to analyze imagery, and are now capable of letting machines do this work for us. With RasterFlow, today’s machine learning models can perform tasks such as object detection, segmentation, and classification, on a very large area of interest, with orders of magnitude more efficiency and scale than an analyst’s eyes can offer. The RasterFlow inference engine is designed for small to very large scale runs. It efficiently parallelizes across the input mosaic across a distributed and serverless inference architecture while minimizing tiling effects typically produced when inference pipelines operate on individual tiles. Running Hosted or Custom Geospatial AI Models with RasterFlow For convenience, RasterFlow currently hosts popular open source PyTorch geospatial computer vision models that are ready to use. These models currently include: Fields of the World (FTW) Field Boundary Delineation Meta and World Resource Institute Tree Canopy Height Prediction ChesapeakeRSC Road Segmentation Tile2Net Pathway Segmentation You can also import your own custom PyTorch model to your Wherobots Organization for private deployment. RasterFlow + TorchGeo: Simplifying PyTorch-Based Geospatial AI Wherobots actively supports the TorchGeo project which helps machine learning experts to more easily work with geospatial data within the PyTorch ecosystem. We will continue to build out RasterFlow integrations with TorchGeo, including onboarding additional TorchGeo models and further simplifying the model lifecycle for PyTorch models. While we are starting with support for PyTorch focusing on TorchGeo models, we are open to adding support for other model frameworks. Calling Geospatial Model Developers: Contribute to RasterFlow We are continually adding new, open source geospatial computer vision models to the Wherobots Model Hub. And if you’re a model developer, we’re interested in speaking with you to onboard your model and distribute the value of your work to a wider audience using Wherobots RasterFlow. Vectorizing Model Outputs: From Raster Predictions to Geospatial Geometries Many computer vision models output rasters, where each pixel in the raster represents a predicted real-world value such as height of the tree canopy, or the confidence that the pixel represents a certain feature such as an agricultural field boundary or a sidewalk. RasterFlow provides built-in support for raster vectorization, turning pixel values into rich, concise geometries. These geometries represent features of interest that can be post-processed, conflated, and integrated into your workflows because they are yours, stored in open source file (Parquet) and table (Iceberg) formats in your S3 bucket. Using RasterFlow with Geospatial Foundation Models and Embeddings Recent developments in Geospatial Foundation Models have generated tremendous interest in the research community, potentially accelerating Earth Observation applications the same way that Large Language Models (LLMs) and embeddings have transformed AI’s ability to generate language. RasterFlow can generate embeddings from the latest open Geospatial Foundation Models, including OlmoEarth from the Allen Institute for AI (Ai2) and Clay. With RasterFlow’s ability to cost-effectively generate embeddings at scale, researchers and practitioners can easily generate embeddings for their area of interest and evaluate their suitability and power. Customers and Partners Using RasterFlow for Scalable Earth Intelligence One highlight while developing RasterFlow has been our collaboration with customers and partners like SatSure, Taylor Geospatial Engine, and Spyrosoft. We’ve used feedback from these teams to ensure we are solving for customer needs. Before the Thanksgiving holiday we shared our recent learnings from working together with Taylor Geospatial Engine, who have been incredibly helpful in providing input on the types of ways their ecosystem of developers and ML engineers would want to interact with RasterFlow. SatSure is an existing Wherobots customer and an early adopter of RasterFlow, and we are excited to see what they build next with it. "RasterFlow meaningfully accelerates the work SatSure and Wherobots already do together. By automating mosaicking, preprocessing, and distributed inference into a single, on-demand workflow, it removes much of the engineering overhead required to operationalize our models at national and multi-season scale. This helps us move new geospatial AI models into production faster, iterate more quickly with customers, and deliver fresher, high-resolution insights across agriculture, banking and financial services, and infrastructure use cases." Rashmit Singh CTO and co-founder, SatSure One of the largest deployments to date processed 348 TB of satellite imagery for a global release, see how RasterFlow delivered Fields of the World at planetary scale RasterFlow Availability and Multi-Cloud Architecture Wherobots infrastructure runs natively on AWS and customers pay for use through the AWS marketplace. RasterFlow and WherobotsDB support hybrid architectures, where data is read from, and results are written to other environments such as GCP, Azure, Oracle, or on-premises. This is particularly useful when processing open datasets or using open models and the environment in which data is processed may not be a concern. On-demand pricing for RasterFlow will be announced at a later date, but can be discussed with customers participating in the private preview. Next Steps: Try RasterFlow and Explore the Wherobots Spatial Data Platform We invite anyone who wants to test out RasterFlow to request to join the private preview here. Get started building with the most capable and efficient spatial data platform using the Wherobots Professional Edition. Sign up for the newsletter to keep pace with what’s happening at Wherobots. Source – 27 August 2025, Gartner Innovation Insight: World Models Are Set to Empower AI Agents With Imagination ↩︎ Join the Private Preview Sign Up Key takeawaysRasterFlow is a serverless imagery-preparation and inference engine, now in private preview, that turns planetary-scale Earth Observation datasets into Earth Intelligence without customers having to build their own mosaicking and model-serving stack.Working with the Taylor Geospatial Engine, RasterFlow ran Fields of the World inference across CONUS, Japan, Mexico, South Africa, Switzerland, and Rwanda. Those large-scale workflows completed in minutes to a few hours as compute autoscaled with area, time range, dataset density, and model complexity.It ingests Zarr and Cloud-Optimized GeoTIFF imagery, hosts PyTorch models including FTW field boundaries, Meta/WRI tree canopy height, ChesapeakeRSC road segmentation, and Tile2Net pathway segmentation, and lets organizations import their own private PyTorch models.Predictions are vectorized into geometries and written as Parquet files in Apache Iceberg tables in the customer S3 bucket, then post-processed in WherobotsDB or other lakehouse engines such as Databricks, Snowflake, or BigQuery.Gartner projects that only 1% of AI models leverage physical-world data today versus 80% by 2029, while AI agents are projected to generate 10 times more data from physical environments than from all digital AI applications combined. One of the largest RasterFlow deployments processed 348 TB of satellite imagery for a global release.
Wherobots and Taylor Geospatial Engine Bring Fields-of-the-World Models to Production Scale Posted on November 26, 2025September 1, 2026 by Ben Pruden Agriculture depends on timely, reliable insight into what’s happening on the ground—what’s being planted, what’s being harvested, and how fields evolve over time. The Fields of The World (FTW) project was created to support exactly this mission, by building a fully open ecosystem of labeled data, software, standards and models to create a reliable global map of agricultural field boundaries using AI and Earth Observation (EO) data. Over the past several months, Wherobots has been working closely with the Taylor Geospatial Engine (TGE) team driving the FTW project to turn high-performing research models into operational, production-scale data products. This collaboration builds on TGE’s broader effort to accelerate AI & EO development through connecting cutting edge research to real world needs. Learn more about FTW at fieldsofthe.world and about TGE’s agricultural AI initiatives here. Turning Fields-of-the-World Research Models Into Operational Pipelines FTW Phase 2 surfaced state-of-the-art computer vision models for interpreting Sentinel-2 time-series imagery and predicting locations of agricultural fields. But, research models alone aren’t enough to deliver real agricultural insight. They must be reproducible at scale, compute-efficient, and aligned with downstream applications. This is where Wherobots focused its efforts: optimizing inference pipelines, distributing computation efficiently, and generating data products that can serve as reliable foundations for agricultural modeling, monitoring, and analysis. TGE’s objective was simple: transform breakthrough research into something developers, end-users, and organizations can actually use. "This project is a testament to what happens when the academic community, nonprofits, and industry all pull in the same direction… Wherobots' ability to run these open-source models at scale makes it possible for the community's work to reach a global audience, and open access to predictions and mosaics ensures that more researchers and innovators can build on top of it." Jennifer Marcus Executive Director, Taylor Geospatial Engine Open-Sourced Seasonal Mosaics and Model Predictions Today, we’re releasing the first production-scale outputs from this collaboration: Sentinel-2 Seasonal Mosaics Cloud-free, analysis-ready mosaics tailored to key agricultural seasons—planting and harvest—built from Sentinel-2 imagery. These mosaics provide a consistent, high-quality foundation for model training, monitoring workflows, and large-scale geospatial analysis. FTW Phase 2 Model Predictions Per-pixel prediction outputs generated by running the top-performing FTW Phase 2 model across these seasonal mosaics, aligned with FTW’s agricultural labeling standards. Expand for caption This is an example output of the field boundary model in a large scale AOI in Japan and Mexico. The comparison is between the 2023 predictions and 2023 + 2024 in predictions (2024 in bright green). Both datasets are openly available on Source Cooperative: https://source.coop/wherobots/fields-of-the-world These resources are designed to make advanced agricultural AI more accessible—supporting innovation in food security, sustainability, and data-driven farming. The Wherobots AI for Earth team were critical in scaling inference with the new field boundary delineation models to a multi-country scale. The fact that they can mosaic multi-season Sentinel-2 imagery over millions of square kilometers, then run models over those mosaics, and organize the outputs in minutes for a few hundred dollars is nothing short of incredible. Making global scale analysis a routine pipeline instead of an enormous one-off effort, has the potential to change monitoring tasks far beyond field boundary analysis. Caleb Robinson, Principal Research Scientist, Microsoft AI for Good Enabled by the Spatial Intelligence Cloud This release also highlights the underlying engine that made it possible. The Wherobots Spatial Intelligence Cloud is built specifically for large-scale geospatial machine learning workflows—constructing analysis-ready mosaics, executing distributed model inference, and writing results into modern, cloud-native formats like Zarr with exceptional efficiency. And model outputs can be further processed and analyzed within WherobotsDB, using the power of Apache Sedona to refine the field geometries or calculate vegetative indices at scale. These capabilities are part of our suite of tools within our AI for Earth product area. Under the hood, the platform uses state-of-the-art tooling for raster processing, GPU-accelerated inference, chunk-aligned storage, and aggressive cost optimization. These choices allow us to run continental-scale pipelines at speeds and costs that would have been unimaginable even a few years ago. As agricultural AI models continue to grow in scope and resolution, this kind of infrastructure becomes essential. Our goal is to make it straightforward for teams to experiment, scale, and operationalize geospatial ML without needing to reinvent the entire data stack. One of the most important parts about what the Wherobots’ team has done is to make it easy to see where and how the model is failing. For example, the model's poor performance in Nevada and the tiling artifacts from the previous model runs led to important changes in how we should be training models. Nathan Jacobs Assistant Vice Provost for Digital Transformation, Washington University in St. Louis What’s Next This is just the beginning. We’re continuing to work with the FTW and TGE teams to expand coverage, operationalize more models, and build richer analysis-ready layers for the agricultural AI ecosystem. If you’re exploring geospatial ML, agricultural monitoring, or large-scale satellite data processing, we’re excited to see what you build with these new open datasets—and with the Wherobots AI for Earth capabilities in your pipeline. Getting in Touch about Wherobots AI for Earth If you would like to continue to stay up to date about the Wherobots AI for Earth capabilities for solving real world problems, or speak to the Wherobots team about utilizing these capabilities in production, please reach out to us here. Key takeawaysWherobots partnered with the Taylor Geospatial Engine to take Fields of the World (FTW) Phase 2 research models—state-of-the-art computer vision on Sentinel-2 time-series imagery—and turn them into operational, production-scale agricultural field-boundary pipelines.The first public release includes cloud-free Sentinel-2 seasonal mosaics for planting and harvest seasons plus per-pixel FTW Phase 2 model predictions aligned with FTW agricultural labeling standards.Both datasets are openly available on Source Cooperative at source.coop/wherobots/fields-of-the-world.Microsoft AI for Good researcher Caleb Robinson notes that Wherobots can mosaic multi-season Sentinel-2 imagery over millions of square kilometers, run the models, and organize outputs in minutes for a few hundred dollars.The Spatial Intelligence Cloud builds analysis-ready mosaics, runs distributed GPU inference, writes results to cloud-native formats such as Zarr, and lets teams refine field geometries or calculate vegetative indices in WherobotsDB with Apache Sedona.