我是PostGIS的新手,在这里需要寻求一些帮助。
我有一个来自谷歌地图的折线(代表行程),需要在其周围建立一个特定距离的多边形(缓冲区),单位为米或千米。
作为输入,我有纬度/经度点的列表和所需的缓冲距离。
有人能帮忙构建查询,使返回结果为纬度/经度坐标的多边形,可以直接绘制在地图上吗?
我是PostGIS的新手,在这里需要寻求一些帮助。
我有一个来自谷歌地图的折线(代表行程),需要在其周围建立一个特定距离的多边形(缓冲区),单位为米或千米。
作为输入,我有纬度/经度点的列表和所需的缓冲距离。
有人能帮忙构建查询,使返回结果为纬度/经度坐标的多边形,可以直接绘制在地图上吗?
SELECT
ST_Buffer(ST_Polygon(ST_AddPoint(the_geom, ST_StartPoint(the_geom))),100)
FROM
mytable
SELECT
ST_Transform(ST_Buffer(ST_Transform(ST_Polygon(ST_AddPoint(the_geom,ST_StartPoint(the_geom)),4326),XXXX),100),4326)
FROM
mytable
我还没有尝试过这段代码,但它应该可以正常工作。
对于经纬度几何图形的米级缓冲区,您可以使用geography
数据类型上的ST_Buffer
。这种方法允许避免查找合适的投影。PostGIS实际上使用UTM区域。
例如,geometry(ST_Buffer(georgaphy(geom), 100))
返回几何图形geom
的100米缓冲区多边形。
因此,对于具有seq、lon和lat列的表,它看起来像:
SELECT geometry(ST_Buffer(georgaphy(ST_MakeLine(ST_MakePoint(lon, lat))), dist))
FROM sometable
ORDER BY seq