Planetary-scale answers, unlocked.
A Hands-On Guide for Working with Large-Scale Spatial Data. Learn more.
Authors
Geospatial intelligence (GEOINT) is the analysis of images and map data to describe physical features and the activity around them on earth. US law defines it that way in 10 U.S.C. § 467, and splits it into three parts: imagery, imagery intelligence, and geospatial information. This article argues that GEOINT's value comes from joining those parts. An image shows what is there today. A map records what someone already charted. Each one misses what the other holds. A test on the Mississippi River at New Orleans shows how much. Aerial imagery from 2021 showed 175 vessel hulls, outlines of one vessel or of several moored side by side. Only 19 of them sit within 30 meters of a pier or quay in the open map.
The US Code gives the working definition. Section 467 of Title 10 says that "the term 'geospatial intelligence' means the exploitation and analysis of imagery and geospatial information to describe, assess, and visually depict physical features and geographically referenced activities on or about the earth." It adds that GEOINT "consists of imagery, imagery intelligence, and geospatial information." The same section defines each part:
The National Geospatial-Intelligence Agency (NGA) publishes the discipline's doctrine, its formal guidance on how GEOINT is done. NGA's GEOINT Basic Doctrine, Publication 1.0 calls itself "the highest level of doctrine for GEOINT." It is unclassified and written for people who use GEOINT or are new to producing it. A military manual, Joint Publication 2-03, covers geospatial intelligence support to joint operations.
The definition is broad. It names no sensor and no customer. A port authority counting berth use follows the same three steps as an insurer checking roof damage after a storm or a defense analyst counting vessels at a naval pier. Each one gets imagery, finds what it shows, and places the result against mapped features.
Three terms overlap in search results and in product pages. They answer different questions.
Earth intelligence covers the model step of GEOINT and often ends with the layer the model produces. GEOINT goes on to match that layer to maps and to judge what it means. GIS supplies much of the map data and the tools both of them use.
A GEOINT question moves through the three parts of the definition in order.
Step 3 is where most of the difficulty lies at scale. Imagery arrives as rasters (grids of pixels) in one coordinate system. Maps arrive as vectors (points, lines, and shapes) in another. The two are updated on different schedules. A system that holds raster and vector data in one engine can run steps 2 to 4 without exporting between tools.
Imagery intelligence predates the term GEOINT by four decades. The CORONA program returned no usable imagery on its first 13 missions. Then, on 18 August 1960, Mission XIV returned "more photographic coverage of the Soviet Union in a single mission than in all previous U-2 missions combined." By its 145th and final launch on 25 May 1972, CORONA had photographed about 750 million square miles of the earth's surface. Two years after that first success, analysts at the National Photographic Interpretation Center played what NGA calls "the crucial role" in the Cuban Missile Crisis.
Mapping and imagery stayed in separate agencies until the 1990s. On 1 October 1996 the National Imagery and Mapping Agency (NIMA) absorbed the Defense Mapping Agency, the National Photographic Interpretation Center, and the Central Imagery Office. It also took in imagery units of the CIA, the Defense Intelligence Agency, and the National Reconnaissance Office. In 2003 Congress renamed NIMA the National Geospatial-Intelligence Agency. NGA's history ties the new name to "a new intelligence discipline," GEOINT. The definition in 10 U.S.C. § 467(5) dates from the same law, Pub. L. 108-136 of 24 November 2003. Pub. L. 116-283 of 1 January 2021 widened it from activities "on the earth" to activities "on or about the earth."
The detection step has moved from people to models in the last decade. Benchmark datasets, large sets of labeled images for training and testing models, made that possible. xView (Lam et al., 2018) labeled over 1 million objects in 60 classes across 1,400 km² of 0.3 m WorldView-3 satellite imagery. DOTA (Xia et al., 2017), a dataset for object detection in aerial images, collected 2,806 aerial images labeled by experts. SpaceNet (Van Etten et al., 2018) released labeled satellite imagery with a series of prize competitions for map features. Models that take a prompt came next. Segment Anything (Kirillov et al., 2023) trained an outlining model on over 1 billion masks, the pixel outlines of objects. It works on new images without retraining. SAM 3 (Carion et al., 2025) finds and outlines every object that matches a short phrase, such as "ship."
GEOINT software covers the same three parts as the definition. Imagery management stores and serves large archives of scenes. Detection and segmentation models produce imagery intelligence; open models such as SAM 3 can run on a team's own imagery. Spatial databases and GIS tools hold the geospatial information and run the joins. The practical question for a team is how many of those steps run in one system. Each export between tools adds a format conversion, a coordinate system check, and another copy to keep current.
In Wherobots, RasterFlow (Public Preview) stitches images into mosaics, runs vision models on them, and saves the results as shapes (vectors) on the same platform. WherobotsDB then matches those shapes to map data in spatial SQL. The Wherobots MCP server connects AI assistants to Wherobots, so an AI agent can build the same GEOINT pipelines. The walkthrough below uses RasterFlow and WherobotsDB.
The experiment tests the article's claim. If vessels detected in imagery mostly sit at piers and quays the open map already holds, the imagery adds little the map lacks. If most sit where the map has no feature, the information comes from combining imagery and map.
The study area follows the river inside the Overture New Orleans boundary. The 200 m buffer reaches the wharves on both banks, where vessels moor.
The RasterFlow job ran SAM 3 on each survey's 30 cm NAIP mosaic with the text prompts "ship" and "barge". It saved every detection as a polygon with a label and a score. Detection took 1,773 seconds for the 2021 survey and 1,230 seconds for 2023. SAM 3 returned 3,775 polygons for 2021 and 4,074 for 2023. About three quarters of them (74.7% and 75.8%) were slivers under 1 m². Only 22.9% and 19.4% scored 0.5 or higher. The SQL below keeps detections with a score of at least 0.5 and an area of at least 100 m². It merges overlapping outlines into hulls and matches each hull to Overture piers, quays, and terminal names. Distances are measured edge to edge in meters on the Universal Transverse Mercator (UTM) zone 15N map grid. So a hull moored along a long pier counts as touching it. The thresholds are this article's choice, set after reviewing score and area distributions. They are not documented model defaults.
The three input tables come from two steps. First, Overture gives the study area: the "Mississippi River" water polygon inside the New Orleans boundary, buffered 200 m.
-- Study area: the Mississippi River inside New Orleans, plus 200 m CREATE TABLE org_catalog.geoint_walkthrough.aoi_nola AS WITH nola AS ( SELECT geometry FROM wherobots_open_data.overture_maps_foundation.divisions_division_area WHERE country = 'US' AND region = 'US-LA' AND subtype = 'locality' AND names.primary = 'New Orleans' ), river AS ( SELECT ST_Intersection(ST_Union_Aggr(w.geometry), FIRST(n.geometry)) AS geom FROM wherobots_open_data.overture_maps_foundation.base_water w JOIN nola n ON ST_Intersects(w.geometry, n.geometry) WHERE w.names.primary = 'Mississippi River' AND ST_GeometryType(w.geometry) IN ('ST_Polygon', 'ST_MultiPolygon') ) SELECT ST_MakeValid(ST_Buffer(geom, 200, true)) AS aoi FROM river;
Second, the RasterFlow SAM 3 recipe runs on that area once per survey and the detections are saved as a table. This is the call for the 2021 survey; the 2023 survey uses a window from 1 January 2023 to 1 January 2024 and writes sam3_nola_2023.
sam3_nola_2023
from datetime import datetime import pyspark.sql.functions as f from rasterflow_remote import RasterflowClient from rasterflow_remote.data_models import GeometryModelRecipes from sedona.spark import SedonaContext sedona = SedonaContext.create(SedonaContext.builder().getOrCreate()) aoi_wkt = sedona.sql("SELECT ST_AsText(aoi) FROM org_catalog.geoint_walkthrough.aoi_nola").first()[0] out = RasterflowClient().predict_mosaic_geometries_recipe( aoi=aoi_wkt, start=datetime(2021, 6, 1), end=datetime(2022, 6, 1), target_crs=3857, model_recipe=GeometryModelRecipes.SAM3_TEXT_GEOMETRY, text_prompt=["ship", "barge"], confidence_threshold=0.3) (sedona.read.format("geoparquet").load(out.uri).withColumn("survey", f.lit("2021")) .writeTo("org_catalog.geoint_walkthrough.sam3_nola_2021").createOrReplace())
Replace org_catalog.geoint_walkthrough with a catalog and database in your own organization. With those three tables in place, the SQL below reproduces the results.
org_catalog.geoint_walkthrough
-- Detections worth keeping: score >= 0.5 and at least 100 square meters CREATE OR REPLACE TEMP VIEW kept AS SELECT survey, label, bbox_score, geometry FROM org_catalog.geoint_walkthrough.sam3_nola_2021 WHERE bbox_score >= 0.5 AND ST_AreaSpheroid(geometry) >= 100 UNION ALL SELECT survey, label, bbox_score, geometry FROM org_catalog.geoint_walkthrough.sam3_nola_2023 WHERE bbox_score >= 0.5 AND ST_AreaSpheroid(geometry) >= 100; -- Hulls: overlapping ship and barge outlines merged per survey CREATE OR REPLACE TEMP VIEW hulls AS SELECT survey, explode(ST_Dump(g)) AS hull FROM (SELECT survey, ST_Union_Aggr(geometry) AS g FROM kept GROUP BY survey); -- Overture piers and quays in the study area CREATE OR REPLACE TEMP VIEW piers AS SELECT i.class, i.names.primary AS name, i.geometry FROM wherobots_open_data.overture_maps_foundation.base_infrastructure i, org_catalog.geoint_walkthrough.aoi_nola a WHERE i.bbox.xmin > -90.16 AND i.bbox.xmax < -89.88 AND i.bbox.ymin > 29.85 AND i.bbox.ymax < 29.98 AND i.class IN ('pier', 'quay') AND ST_Intersects(i.geometry, a.aoi); -- Overture places named as a wharf, terminal or dock within 500 m of the study area CREATE OR REPLACE TEMP VIEW terminals AS SELECT p.id, p.names.primary AS name, p.geometry FROM wherobots_open_data.overture_maps_foundation.places_place p, org_catalog.geoint_walkthrough.aoi_nola a WHERE p.bbox.xmin > -90.16 AND p.bbox.xmax < -89.88 AND p.bbox.ymin > 29.85 AND p.bbox.ymax < 29.98 AND ST_Intersects(p.geometry, ST_Buffer(a.aoi, 500, true)) AND lower(p.names.primary) RLIKE '\\b(wharf|terminal|dock)\\b' AND NOT lower(p.names.primary) RLIKE 'cafe|parking'; -- One row per hull: area, within 30 m of a pier or quay, nearest terminal name within 500 m. -- Distances are edge to edge in meters on UTM zone 15N (EPSG:32615). WITH h AS (SELECT survey, hull, ST_AreaSpheroid(hull) AS m2, md5(ST_AsText(hull)) AS hid, ST_Transform(hull, 'EPSG:4326', 'EPSG:32615') AS hull_m FROM hulls), p AS (SELECT ST_Transform(geometry, 'EPSG:4326', 'EPSG:32615') AS geom_m FROM piers), t AS (SELECT name, ST_Transform(geometry, 'EPSG:4326', 'EPSG:32615') AS geom_m FROM terminals), pier AS ( SELECT /*+ BROADCAST(p) */ h.hid, MAX(CASE WHEN p.geom_m IS NOT NULL THEN 1 ELSE 0 END) AS at_pier FROM h LEFT JOIN p ON ST_DWithin(h.hull_m, p.geom_m, 30) GROUP BY h.hid ), near AS ( SELECT hid, name FROM ( SELECT /*+ BROADCAST(t) */ h.hid, t.name, ROW_NUMBER() OVER (PARTITION BY h.hid ORDER BY ST_Distance(h.hull_m, t.geom_m)) AS rn FROM h JOIN t ON ST_DWithin(h.hull_m, t.geom_m, 500)) WHERE rn = 1 ) SELECT h.survey, h.hid, h.hull, h.m2, pier.at_pier, near.name AS terminal FROM h JOIN pier ON h.hid = pier.hid LEFT JOIN near ON h.hid = near.hid;
The verdict supports the claim. Of 175 hulls in 2021, 19 sit within 30 m of a pier or quay in Overture; in 2023 the share is 21 of 156. Most hulls along the working waterfront sit where the infrastructure layer has no pier or quay. Overture places does hold the terminal names, as points with no outline. That is enough to label 38 hulls in 2021 and 34 in 2023 with the nearest named wharf, terminal, or dock within 500 m.
The table lists every name the join used, with hull counts per survey. The names are as published in Overture.
Each survey is one set of flight days, so a difference of one to three hulls at a terminal is a snapshot. It is not a trend. A real activity series needs repeated imagery of the same terminals.
We reviewed 60 randomly sampled hulls, 30 per survey, in 140 m crops from the same NAIP mosaics SAM 3 ran on. A vessel or a vessel-like floating structure appeared in 59 of them. The one unclear crop shows a small shape at the bank, and two of the 59 may be a docking barge and a floating drydock. In one crop SAM 3 outlined a towboat and missed the four barges it was pushing. Two kinds of outline error appear. Barges rafted side by side merge into one hull, so a hull is a moored group, and a hull count is lower than a barge count. Some outlines also spill onto a pier or a crane next to the vessel. The review measures precision, the share of hulls that mark a vessel. It does not measure recall, the share of vessels SAM 3 missed. That needs an independent count. Automatic Identification System (AIS) records, the radio position reports ships broadcast, cover only part of this fleet. The International Maritime Organization (IMO) requires AIS on all passenger ships. It also requires AIS on ships of 300 gross tonnage and upwards on international voyages, and on cargo ships of 500 gross tonnage and upwards on other voyages. National rules for river towboats and barges differ, so how much of a river fleet transmits AIS needs its own check.
The same workflow runs on commercial satellite imagery. The Wherobots post Yulin Naval Base in Satellite Imagery: AI-Assisted Vessel Counts applies SAM 3 to Vantor multispectral satellite images of the Yulin naval port on Hainan, taken on five dates between May 25 and June 8, 2026. It stores the vessel detections as rows by area and date. The setting changes the inputs: satellite imagery with coarser pixels than NAIP and several dates within two weeks. The steps stay the same: imagery, detections from a text prompt, a join to mapped features, and a count per place and date. The New Orleans walkthrough above is the reproducible version on open data.
The New Orleans test and the legal definition agree. Geospatial intelligence depends on matching imagery to maps, and in New Orleans the open map was missing most of the places where vessels moor.
Run SAM 3 on your own area of interest with a Wherobots free trial at cloud.wherobots.com.
Geospatial intelligence (GEOINT) is the analysis of images and map data to describe physical features and the activity around them on earth. US law defines it in 10 U.S.C. § 467. The same section splits it into three parts: imagery, imagery intelligence, and geospatial information.
It answers questions about what is where on earth. Examples: how many vessels sit at a terminal, what changed at a site since the last image, and which roads a flood cut. Analysts and detection models find objects and changes in images. Each finding is then matched by location to mapped features such as piers, roads, and boundaries. The result is a fact with a place and a time that a decision maker can act on.
A geographic information system (GIS) stores, edits, and maps geospatial data. Geospatial intelligence is an analytic discipline that uses GIS data along with imagery to answer a question about activity, often for defense, security, or disaster response. GIS is one of the tools; GEOINT is the analysis and the product.
Imagery intelligence (IMINT) is, in the words of 10 U.S.C. § 467, the technical, geographic, and intelligence information derived through the interpretation or analysis of imagery and collateral materials. In plain terms, it is what a person or a model says is in an image, checked against other reports. It is one of the three parts of geospatial intelligence, alongside the imagery itself and geospatial information such as maps and charts.
GEOINT work spans government agencies such as the National Geospatial-Intelligence Agency (NGA), the armed services, and companies that build imagery, mapping, and analytics products. The skills carry across sectors: image interpretation, spatial analysis, machine learning, and data engineering on large imagery archives. NGA lists its hiring process, benefits and pay, and student programs on its careers pages.
Pay depends on the employer, the grade or level, and the location. Federal GEOINT positions follow published federal pay scales, and NGA publishes its benefits and pay information on its careers site. Private sector roles in imagery analytics and geospatial data engineering set their own ranges.
What is an Isochrone? Isochrone Maps and Travel Time
An isochrone is the area reachable from a place within a set travel time. How isochrones are computed, isochrone vs radius, and a King County test.
What is a Geospatial Database? Definition, Examples
A geospatial database stores geometry, indexes it by location and answers spatial SQL. The definition, examples, and how to choose one by workload.
What is a Map Projection? Types, Distortion, Examples
A map projection flattens the Earth onto a map and distorts area, shape, distance or direction. Projection types, examples, and how to choose one.
share this article
Awesome that you’d like to share our articles. Where would you like to share it to: