我是PostGIS的新手,需要在这里寻求帮助。 我有一个来自谷歌地图的折线(代表一个行程),需要在它周围建立一个以米或公里为特定距离的多边形(缓冲区)。
对于输入,我有纬度/经度点列表和所需的缓冲距离。
任何人都可以帮我构建查询,以便返回的结果是纬度/经度坐标中的多边形,可以在地图上绘制吗?
答案 0 :(得分:6)
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
我没有尝试过代码,但应该可以使用。
答案 1 :(得分:2)
答案 2 :(得分:2)
对于lon / lat几何上的米的缓冲区,您可以在ST_Buffer
数据类型上使用geography
。这种方法可以避免找到合适的投影。 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
答案 3 :(得分:0)
经过测试,我发现postgis生成的多边形缓冲区不可靠。也就是说,如果我想在折线周围设置一个5公里长的缓冲区,postgis会返回一个多边形,这个多边形 AT MOST 5公里,但是在某些点不到这个。
放弃postgis