When I work with location data, I do not start with maps. I start with the decision: nearest driver, service boundary, delivery promise, fraud signal, or route cost.
Place changes the answer
Geospatial data is not a map decoration; it changes pricing, availability, dispatch, and risk decisions.
How location changes product and operations
Geospatial data is not a map decoration; it changes pricing, availability, dispatch, and risk decisions.
Spatial storage choices
When I talk about "Spatial storage choices", I am checking whether Geospatial Data Architecture can be traced back, trusted, and used by someone making a decision.
PostGIS, BigQuery GIS, Elasticsearch or OpenSearch geo, MongoDB geospatial, DynamoDB with H3 keys, Bigtable, specialized GIS systems.
Cloud map and spatial services
| Provider | Typical services |
|---|---|
| AWS | Amazon Location Service, S3, Athena or Redshift spatial queries, OpenSearch geo, DynamoDB. |
| Azure | Azure Maps, PostgreSQL with PostGIS, Cosmos DB spatial, Synapse. |
| Google Cloud | Google Maps Platform, BigQuery GIS, Cloud SQL PostGIS, Dataflow. |
H3 pattern to remember
My recommendation in "H3 pattern to remember" is to keep the raw source close enough that the answer can be explained later.
Uber H3 is the public company example. Uber open sourced a hexagonal spatial index so location data can be grouped, joined, and analyzed at different resolutions.
Delivery zone example
I use "Delivery zone example" to keep Geospatial Data Architecture grounded in a real system, because abstract patterns are too easy to agree with and too hard to operate.
A delivery company receives driver GPS pings. The pipeline maps pings to H3 cells, stores raw pings for audit, builds route delay features, and powers nearest driver search.
Nearest driver query
I use "Nearest driver query" to connect the data type to the person, workflow, or system that will consume it.
select driver_id,
st_distance(location, :customer_location) as meters,
observed_at
from driver_location_pings
where service_zone = :customer_zone
and observed_at >= current_timestamp - interval '2 minutes'
and st_distance(location, :customer_location) <= 5000
order by location <-> :customer_location
limit 3;
The query limits candidates by service zone, freshness, and distance, then orders by nearest location. That is the decision path behind a practical dispatch result.
Location traps to watch
- Know the coordinate system and precision.
- Do not store more location history than the business needs.
- Use spatial indexes before distance queries become expensive.