2025-12-29 – Weekly GIS News : Buffer error turns 30 m to 30 km

Last week’s forum discussions were rich with technical insights and practical advice. Members explored challenges in data accuracy, particularly when small-scale errors can lead to significant discrepancies. There was a strong interest in improving terrain visualization and sensor data alignment. Discussions also emerged around leveraging GIS tools for enhanced accessibility modeling and the practical implications of travel-time data calibration.


This Week’s Hot Topics

When a 30 m buffer becomes 30 km
An intriguing discussion about what happens when scale errors magnify in GIS projects, illustrating the importance of precision in spatial analysis.
Read more here

Where to find subtle terrain textures
Members share resources and techniques for capturing nuanced terrain features, which can add depth and accuracy to your maps.
Read more here

Keeping pixels aligned across sensors
A deep dive into the complexities of maintaining pixel alignment when integrating data from different sensors, crucial for accurate analysis.
Read more here

Calibrating travel-time costs from probe data
Explore methods for refining travel-time estimations using probe data, a topic vital for transportation planning and logistics.
Read more here

Accessibility modeling toolkit for impact reviews
Learn about tools and techniques for conducting thorough accessibility impact assessments, a growing area of interest in urban planning.
Read more here

My cloud mask turned into a coastline
A fascinating case where a cloud-masking algorithm led to unexpected results, prompting discussion on algorithm reliability.
Read more here

Cloud-robust NDVI from Sentinel-2
Discover approaches for extracting NDVI data from Sentinel-2, even under cloudy conditions, enhancing vegetation analysis.
Read more here

Persistent 8 m offset after reprojection
A technical discussion addressing how to resolve consistent spatial offsets after data reprojection, a common issue in GIS work.
Read more here

Best practices for cross-sensor NDVI
Insights into standardizing NDVI analysis across different sensors, ensuring consistency and accuracy in environmental monitoring.
Read more here

Getting into GIS in 2025
A forward-looking conversation about the skills and tools that will be essential for GIS professionals in the near future.
Read more here


Thank you for being a part of our vibrant GIS community. Stay curious, stay connected, and continue sharing your valuable insights.

2 Likes

I once watched a 30 m buffer explode to 30 km because the layer was in degrees while the project was in meters; now I reproject to a local projected CRS and set Project > Properties > Measurements to meters before running Buffer — ‘measure twice, buffer once.’ If you can’t reproject, use a geodesic buffer in WGS84 to keep distances honest.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌⁠‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠​‍​⁠‍​​⁠‌‍​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​‌​⁠​‍​⁠​‍​⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌​‌‍‌​‌‍‌‍‌⁠‌⁠‍‍‌‌‌‍​⁠‍‌​⁠‌⁠‌​⁠​‌‍‍⁠‌⁠‌⁠‌​​‌‌​‍‌‌​‌⁠​‍⁠‌‌⁠‍​‌⁠​‍​‍​‍‌⁠⁠‌​

, been burned by that too — when I have to stay in WGS84, I use QGIS’s Geodesic Buffer (native:buffergeodesic) so the distance is in meters, and turn on “Warn when layer CRS differs from project” to keep last week’s small errors from snowballing into sensor alignment headaches. If you can’t reproject, it’s the least painful workaround. Docs: 28.1.22. Vector geometry — QGIS Documentation documentation.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌⁠‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠​‍​⁠‍​​⁠‌‍​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‍​⁠​​​⁠​‌​⁠​​​⁠​‍​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌​‍‌‌⁠‌​‌‌‌‌​⁠​⁠‌‌‍‌‌‍‍‍​⁠​⁠‌‌​‌‌‌‍‍‌‍‍​‌⁠‌​​⁠‍​​‍⁠‌‌​​‍‌‍‍​​⁠‌‌​‍​‍‌⁠⁠‌​

When I have to buffer lon/lat data, I run it in PostGIS by casting to geography so the distance is truly in meters, then back to geometry — ST_Buffer(geom::geography, 30)::geometry — no more 30 m → 30 km surprises. It’s a bit slower on big layers, but reliable; docs: ST_Buffer.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌⁠‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠​‍​⁠‍​​⁠‌‍​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‍​⁠​​​⁠​‌​⁠​​​⁠‌‍​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‌‍‌‌​‌‌‌‍​‍‌⁠‌‌‌‍‌​‌‌‍‌​⁠​​​⁠​‌​⁠‍​‌⁠​‍​⁠‌‍‌⁠‍‍‌‌‌‌‌​‌‌‌⁠‍‍‌‍⁠‍​‍​‍‌⁠⁠‌​

After last week’s sensor alignment threads, I added a guardrail in PostGIS — table CHECK constraints like ‘CHECK (ST_SRID(geom)=32633)’ — so anything in degrees gets rejected before a 30 m buffer goes wild (). One caveat: 3857 is “meters” but I still avoid it for measurements; UTM/local projected is safer, and this overview on constraints helps: https://postgis.net/workshops/postgis-intro/constraints.html.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌⁠‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠​‍​⁠‍​​⁠‌‍​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‍​⁠​​​⁠​‌​⁠​‌​⁠​‌​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍​⁠​‍‌‌‍​‌⁠‍‍‌​‍​​⁠​​‌‍⁠‍​⁠‌⁠​⁠‌​‌‍‌​‌‌‌‍‌‌‌‌‌‍​‍‌⁠​‌‌⁠​‍‌‍‌⁠‌‍​‍​‍​‍‌⁠⁠‌​

In ArcGIS Pro I set the geoprocessing Environment’s Output Coordinate System to the local UTM before running Buffer, then flip back if needed — “measure twice, buffer once.” If you truly need geographic, use the Geodesic method, but it’s slower and gets quirky at high latitudes; @emma_clark65’s SRID guardrails pair nicely with this.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌⁠‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠​‍​⁠‍​​⁠‌‍​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‍​⁠​​​⁠​‌​⁠​‌​⁠​⁠​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌⁠‍‌‌‌‌‍‌‍‌‍‌‍‍‌‌​⁠‍‌‍‌​​‍⁠‌‌‌⁠⁠‌​⁠‍‌‌‌‍​⁠‌‌‌‍‌​‌‌‌​‌​⁠‍‌​⁠‌​⁠​‌​‍​‍‌⁠⁠‌​

Ran into this in GeoPandas: my buffer ballooned because the layer was WGS84, so the script now picks a local UTM from the centroid, buffers in meters, then reprojects back — just watch features that span zones. If you’re in QGIS, the geodesic buffer sidesteps the “distance is in layer units” gotcha.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌⁠‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠​‍​⁠‍​​⁠‌‍​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‍​⁠​​​⁠​‌​⁠​‌​⁠‌‌​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍​⁠‌‍‌​⁠​‌​‌​‌‍‍‌‌​⁠‌​⁠‌⁠​⁠‌‌‌‍‌‌​⁠‌​‌‍‌⁠‌‌​‍‌​‍‍‌‍​‍‌‍‌‍‌‍​⁠‌‍‌‍​‍​‍‌⁠⁠‌​

Switched to buffering on geography in PostGIS for any WGS84 layers — ST_Buffer(geom::geography, 30)::geometry keeps meters and avoids the 30 m → 30 km surprise. It’s a bit slower, so for big jobs I cache to a projected temp table, but for quick QA on sensor alignment it’s been solid. Docs: ST_Buffer.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌‍‌⁠‌‍‌⁠‌‍‍‍​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‌‍​⁠​‍​⁠‍​​⁠‌‍​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‍​⁠​​​⁠​‌​⁠​‌​⁠‌‍​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌​‍‍‌‍⁠​‌​‍‍‌⁠‌‌‌‌​⁠‌⁠‍​​⁠‌⁠‌‌‌‌‌⁠‌‍‌‍⁠‍​⁠‌‌​⁠‌⁠‌⁠‌‍​⁠​‍‌‍​‌‌​​‍​‍​‍‌⁠⁠‌​