H3 Hierarchy and Compaction: Multi-Resolution Spatial Analysis
Master H3's parent-child cell relationships and compaction algorithm for efficient spatial data representation
Every H3 hexagon at any resolution is the parent of exactly seven children at the next finer resolution. This seven-to-one relationship makes H3 uniquely powerful for multi-scale analysis — and its compaction algorithm exploits it to compress spatial datasets dramatically.
Read more
H3 Catchment Analysis: Modelling Service Areas with Hexagonal Grids
Use H3's k-ring and grid distance functions to build precise spatial buffers and accessibility zones
Traditional circular buffers distort space and ignore real-world geometry. H3's hexagonal rings give you scale-consistent spatial catchments that work the same way across the entire Earth's surface.
Read more
H3 Density Mapping: Visualising Urban Point Data as Hexagonal Heatmaps
Transform scattered coordinates into meaningful density patterns using H3's spatial aggregation
Raw GPS coordinates are noisy, overwhelming, and hard to interpret at scale. H3's hexagonal grid transforms thousands of points into clear, legible density maps — and the core aggregation logic fits in under ten lines.
Read more
What Do Large Language Models Know About Place?
LLMs encode an implicit geography of human experience — and understanding its limits matters for anyone building location-aware AI applications
When you ask an LLM to describe Nottingham, it does not retrieve a database record. It draws on a statistical distillation of everything written about Nottingham by people who have been there, lived there, passed through, or read about it. That is an unusual kind of geographical knowledge — rich, associative, and deeply human, but also skewed, incomplete, and geographically uneven.
Read more
Building High-Throughput Spatial Pipelines with Go Concurrency
Using goroutines, channels, and context cancellation to process millions of geospatial records in parallel
Go's concurrency primitives are among the most ergonomic in any systems language. This post shows how to put goroutines and channels to work on a real problem: processing large spatial datasets at speed.
Read more
Self-Hosted Vector Tiles with PMTiles and MapLibre GL JS
Serve a fully interactive web map from a single static file — no tile server, no backend, no infrastructure
Vector tiles have become the standard for interactive web mapping, but running a tile server has always been the barrier to entry. PMTiles changes this: it is a single-file archive format that lets browsers fetch individual tiles via HTTP range requests, turning any static host — S3, GitHub Pages, a CDN — into a tile server.
Read more
Location-Aware Search with Elasticsearch Geo Queries
Combining full-text relevance with geo_distance, bounding box filtering, and spatial decay scoring
Elasticsearch's geospatial capabilities let you ask questions that pure text search cannot answer: not just 'find documents about coffee' but 'find the most relevant coffee shop within 500 metres of where I am standing, weighted by recency and rating'. This post walks through how to build that kind of query from first principles.
Read more
DuckDB as an In-Process Spatial Analytics Engine
Running complex spatial SQL against millions of records—no server, no infrastructure, just a file and a query
DuckDB is one of the most interesting developments in data infrastructure in years. It is an in-process analytical database that runs entirely within your application. With the spatial extension, it becomes a powerful tool for geospatial analytics at a fraction of the usual complexity.
Read more
Rust's Zero-Cost Abstractions for Geospatial Processing
How Rust's iterator model and trait system let you write elegant code that compiles to bare-metal performance
Zero-cost abstractions are Rust's central promise: you pay nothing at runtime for the high-level constructs you write at the source level. For geospatial data processing—where datasets routinely run to hundreds of millions of coordinate pairs—this matters enormously.
Read more
Building a Geospatial REST API with FastAPI and PostGIS
A complete walkthrough of a production-ready spatial data API: routing, geometry serialisation, spatial queries, and GeoJSON responses
FastAPI's async-first design and automatic OpenAPI documentation make it an excellent choice for geospatial APIs. Combined with PostGIS for spatial queries and GeoAlchemy2 for the ORM layer, you can build a fully-featured location API in a few hundred lines of Python.
Read more
Cloud-Native Geospatial: GeoParquet, COGs, and STAC
The modern formats and cataloguing standards that are reshaping how spatial data is stored, accessed, and shared
The geospatial industry is in the middle of a format revolution. GeoJSON files copied to S3 buckets, shapefiles emailed between teams, and WMS services that time out under load are giving way to a new stack built around cloud-native principles: data that can be accessed in parts, indexed without downloading, and queried directly from object storage.
Read more
Spatial ETL Pipelines with GeoPandas and Shapely
Building robust, reproducible geospatial data transformation workflows entirely in Python
Most geospatial data arrives dirty: mismatched projections, broken geometries, inconsistent attribute schemas. GeoPandas and Shapely give you a powerful, Pythonic toolkit for cleaning, transforming, and enriching spatial data before it reaches your database or analysis pipeline.
Read more
Chora: The First Python Library for Place-Based Computing
Model place as experience, not just location
Unlike standard GIS which asks 'What is at coordinates X,Y?', Chora asks 'Why does this park feel like Home to Alice, but Danger to Bob?' Place isn't a polygon—it's an emergent phenomenon arising from memory, habit, emotion, and social interaction.
Read more
Spatial Narrative: A Rust Library for Spatiotemporal Event Analysis
Modelling, indexing, and analysing events across geographic space and chronological time
Events happen in places, at times, and within contexts. Spatial Narrative is a Rust library built for researchers who need to work with spatiotemporal data—whether that is historical archives, GPS tracks, conflict records, or urban mobility patterns.
Read more
PlaceCrafter: Curating Urban Functional Regions through Platial Clustering
A web-based geospatial tool for identifying place-based regions in cities using OpenStreetMap data
The world is not just made of streets, buildings, and zones—it is shaped by how people engage and interact with places in their everyday lives. PlaceCrafter supports researchers in identifying platial regions: functional, human-centred areas that cross administrative and formal boundaries.
Read more
Platial Atlas: Mapping How People Experience Places
A global research project redefining place through lived experience rather than coordinates
Traditional maps often delineate our world with rigid lines and boundaries, yet these divisions seldom reflect the nuanced ways individuals experience and interact with their environments. The Platial Atlas project seeks to bridge this gap.
Read more
Getting Started with H3: The Hexagonal Grid System for Spatial Analysis
A practical tutorial for understanding and implementing Uber's H3 hexagonal grid system
Why are Uber, Foursquare, and every major location intelligence company switching to hexagonal grids? This tutorial will teach you H3 fundamentals with interactive examples you can run in your browser.
Read more
Why 'Placing Code' Matters
A manifesto for place-aware software development and spatial computing
Most navigation apps don't know where you really want to go. This opening post explores why we need code that understands the difference between space and place, and introduces the philosophy behind jwilliams.science.
Read more