如何在 PostGIS 中将缓冲区大小从度数更改为以米为单位的距离?

How to change buffer size from degrees to distance by meters in PostGIS?

SELECT ST_Buffer(geom, 400)
FROM my_table;

此查询创建一个 400 度的缓冲区。我怎样才能将它更改为在点周围有 400m 的缓冲区? 我曾尝试使用 ST_TransformST_SetSRID 但出现错误。很可能是因为我的查询结构错误。 谢谢你的帮助。

ST_buffer 使用投影单位。您可以将 geometry 转换为 geography 以使用米,或依赖以米为单位的合适的本地投影。

SELECT ST_Buffer(geom::geography, 400)
FROM my_table;

如果还没有设置,可能要先设置原来的CRS

SELECT ST_Buffer(st_setSRID(geom,4326)::geography, 400)
FROM my_table;