Google maps 使用PostGIS围绕线串创建多边形

Google maps 使用PostGIS围绕线串创建多边形,google-maps,gis,postgis,Google Maps,Gis,Postgis,我是PostGIS新手,需要在这里寻求帮助。 我有一条来自谷歌地图的多段线(代表一个行程),需要在它周围构建一个多边形(缓冲区),以米或公里为单位指定距离 对于输入,我有纬度/经度点列表和所需的缓冲距离 有人能帮我建立查询,以便返回的结果是纬度/经度坐标的多边形,可以在地图上绘制吗?这不是使用PostGIS,但有一个类似于您所要求的 另一种选择:选择 在末端再次添加线字符串的第一个顶点,以便 创建多边形的步骤 将线字符串转换为多边形 围绕多边形创建缓冲区 选择 ST_缓冲区(ST_多边形(ST

我是PostGIS新手,需要在这里寻求帮助。 我有一条来自谷歌地图的多段线(代表一个行程),需要在它周围构建一个多边形(缓冲区),以米或公里为单位指定距离

对于输入,我有纬度/经度点列表和所需的缓冲距离


有人能帮我建立查询,以便返回的结果是纬度/经度坐标的多边形,可以在地图上绘制吗?

这不是使用PostGIS,但有一个类似于您所要求的

另一种选择:选择

  • 在末端再次添加线字符串的第一个顶点,以便 创建多边形的步骤
  • 将线字符串转换为多边形
  • 围绕多边形创建缓冲区
  • 选择
    ST_缓冲区(ST_多边形(ST_添加点(the_geom,ST_StartPoint(the_geom))),100)
    从…起
    空白表
    
  • 如果缓冲区以米/公里为单位,数据以纬度/经度为单位,则可能需要首先将多边形转换为适当的投影(我不知道您在哪里),然后再转换回纬度/经度
  • 选择
    ST_变换(ST_缓冲区(ST_变换(ST_多边形(ST_添加点,ST_起始点,XXXX)),4326),XXXX),100),4326)
    从…起
    空白表
    

    我没有尝试过该代码,但它应该可以工作。

    对于lon/lat几何图形上的米缓冲区,您可以使用
    地理
    数据类型上的
    ST\u缓冲区。这种方法可以避免找到合适的投影。PostGIS实际上为此使用UTM分区

    例如,
    geometry(ST_Buffer(geogaphy(geom),100))
    返回几何体的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公里,但在某些点小于5公里


    放弃postgis

    你说得很对,这不是我想要的。我事先研究过使用RouteBox,它根本不适合我的需要。这是不正确的。以下是PostGIS在路线周围创建25英里缓冲区的示例:@Marcelo-您能提供如何实现这一点的代码吗?当我在一个测试提供程序上执行此操作时,缓冲区被扭曲。如果您已经说过要放弃PostGIS,为什么还要使用代码P(你已经接受了自己的答案,但这并不能解决问题)。StackOverflow不是这样工作的!关于此注释:对于地理位置而言,如果对象足够大,以至于它位于两个UTM区域之间或跨越日期线,则可能不会表现出预期的行为