将单个点转换为多边形
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);
我想将我只知道经度和纬度的单个点转换为可以在 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);