Privacy & sensitive locations
Coordinates are personal data: re-identification risk, geomasking, aggregation thresholds and the checks to run before a release.
A coordinate that describes a person is personal data, and it is unusually identifying: home locations are nearly unique, and a handful of visited places is enough to re-identify somebody from an otherwise anonymous track.
The dangerous part is that the standard defences feel stronger than they are. Aggregation is not anonymisation until a minimum count is enforced — a grid cell with one record in it names that record, and publishing the grid publishes the person. Rounding coordinates is a grid by another name. Random displacement protects a point and not a pattern, because an attacker with the underlying population can undo it. Even a heatmap of enough points reconstructs the points.
Below: the concepts cover re-identification risk and what each technique actually protects against; the how-to guides implement masking, aggregation and thresholds; and the fixes are the releases that leaked despite one of them.
🧭 Start with the concepts
The ideas the how-to guides below assume you already have.
- Geoprivacy explained: why coordinates are personal data geospatial privacy
- Re-identification risk in spatial data explained re-identification spatial data
- Spatial k-anonymity explained spatial k-anonymity
- Geomasking methods explained: donut, random and adaptive geomasking methods
- Aggregation and suppression rules explained small count suppression
- Differential privacy for spatial counts explained differential privacy spatial
⚙️ Then do the task
Step-by-step walkthroughs with code you can copy and adapt.
- How to measure re-identification risk in a point dataset measure re-identification risk python
- How to apply donut geomasking to sensitive points in Python donut geomasking python
- How to aggregate points to units that meet a minimum count aggregate points minimum count
- How to suppress small counts in a spatial table in Python suppress small counts python
- How to add differentially private noise to spatial counts laplace noise counts python
- How to reduce coordinate precision safely in Python reduce coordinate precision python
- How to strip GPS coordinates from photo metadata in Python strip exif gps python
- How to test whether GPS traces reveal where people live gps traces home location privacy
- How to run a privacy check before publishing a spatial dataset spatial data privacy check
🔧 When it breaks
The errors this topic produces, with the cause explained rather than just the command.
- Geomasked points land in the sea or outside the study area geomasked points in water
- Anonymised points still identify individuals anonymised points still identify
- Suppressed cells can be recovered from the totals complementary suppression disclosure
- Geomasking changed the result of the analysis geomasking bias analysis
- A shared file still contains the original coordinates file still contains original coordinates
- Why Are So Many of My Crime Points in Exactly the Same Place? crime points same location block level stacked
Learning paths through this topic
A curated route rather than a list — the guides in the order that builds on itself.
Related topics
Subjects that keep coming up alongside this one, most overlap first.