将单个点转换为多边形

Convert a single point to a polygon

我想将我只知道经度和纬度的单个点转换为可以在 Google 地图上显示的多边形。 要求在给定点周围只有 30 米。

我正在使用 Postgis,我尝试创建这样的多边形:

select ST_Transform(ST_Expand(ST_Transform(geo::geometry, _ST_BestSRID(geo)), 1, 1), 4326) 

from

ST_Centroid(ST_SetSRID(ST_MakePoint(?, ?), 4326)) as geo

我正在使用 Ruby 并将 ? 符号替换为经度和纬度。

这给了我一个多边形,但它太大了。老实说,我不知道如何让它变小,所以它周围只有 30 米。

如有任何帮助,我将不胜感激。

您可以在地理上使用 buffer 函数。它会自动使用适当的坐标系来近似以米为单位的缓冲区大小,并且输出将是一个圆,而不是一个正方形:

Select ST_Buffer(ST_SetSRID(ST_MakePoint(?, ?), 4326)::geography, 30);