我是 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
我还没有尝试过代码,但它应该可以工作。
对于 lon/lat 几何图形上的缓冲区,您可以ST_Buffer
在geography
数据类型上使用。这种方法可以避免找到合适的投影。PostGIS 实际上为此使用了 UTM 区域。
例如,geometry(ST_Buffer(georgaphy(geom), 100))
为 geometry 返回 100 米的缓冲区多边形geom
。
因此,对于具有 seq、lon 和 lat 列的表,它看起来像:
SELECT geometry(ST_Buffer(georgaphy(ST_MakeLine(ST_MakePoint(lon, lat))), dist))
FROM sometable
ORDER BY seq
经过测试,发现postgis生成的多边形缓冲区不可靠。也就是说,如果我想在折线周围有一个 5 公里的缓冲区,postgis 将返回一个最多 5 公里的多边形,但在某些点上却比这小。
放弃 postgis