[PROJ] Geodesic buffers/offsets?

Nyall Dawson nyall.dawson at gmail.com
Tue May 4 15:23:09 PDT 2021


Hi list,

Something which I get asked on a recurring basis by users is how to
create geometry buffers using a real-world distance on a geographic
dataset. E.g. creating a 100km buffer on a linestring in such a way
that the geodesic distances between the buffer and original line are
always 100km.

The approaches/advice I've found so far fall into these broad categories:
- find a local projection which covers the area of interest and create
planimetric buffers/offsets in that projection
- for point datasets, create a custom projection centered over each
individual point and densify/transform the planimetric buffer in that
projection back to the geographic CRS
- use a geographic focused library like s2 (but that has the
limitation in that it's spherical approximations only, not
ellipsoidal)

Consequently, I haven't found any generic approaches for calculating
ellipsoid based buffers/offsets, and I'm interested in other's
thoughts on this.

Buffers/offsets are a bit of a funny beast, because they're complex to
calculate with a lot of corner cases to handle. So we have great
libraries like GEOS which handle this problem well, but I personally
can't see GEOS ever gaining support for geodesic buffers as GEOS is
focused on cartesian calculations only. But on the other hand having
all the logic for buffer calculation sitting in proj also seems
completely out of scope and inappropriate too! (Maybe geographiclib
would be the best place for something of this nature?)

Has anyone else looked into this previously? Anyone with any insights
on this problem?

Cheers,
Nyall


More information about the PROJ mailing list