【问题标题】:Offsetting polygons by meters with clipper使用裁剪器将多边形偏移米
【发布时间】:2017-10-17 06:11:19
【问题描述】:

我想创建位置(城镇、村庄等)的缓冲多边形,以便使用它们进行半径搜索。

这就是我想要实现的(插图单位):

这就是我在 pyclipper 中的做法:

import pyclipper

coordinates = # Array of lat,lng tuples
clipper_offset = pyclipper.PyclipperOffset()
coordinates = pyclipper.scale_to_clipper(coordinates)
clipper_offset.AddPath(coordinates, pyclipper.JT_ROUND, 
pyclipper.ET_CLOSEDPOLYGON)
scaled_coordinates = clipper_offset.Execute(1000.0)
scaled_coordinates = pyclipper.scale_from_clipper(scaled_coordinates)

数字 1000.0 是任意的,我的问题是 - 如何计算 Execute 方法的正确偏移比,以便偏移的多边形大约代表 10,20 和 50 公里半径?

顺便说一句。这是解决这个问题的正确方法吗?

【问题讨论】:

    标签: python gis polygon clipper pyclipper


    【解决方案1】:

    对我有用的方式:

    import pyclipper
    
    coordinates = [(198,362),(220,330),(282,372),(260,404)] # Array of lat,lng tuples 
    clipper_offset = pyclipper.PyclipperOffset()
    coordinates_scaled = pyclipper.scale_to_clipper(coordinates)
    
    clipper_offset.AddPath(coordinates_scaled, pyclipper.JT_ROUND, pyclipper.ET_CLOSEDPOLYGON)
    
    new_coordinates = clipper_offset.Execute(pyclipper.scale_to_clipper(10))
    
    new_coordinates_scaled = pyclipper.scale_from_clipper(new_coordinates)
    

    我的意思是:

    new_coordinates = clipper_offset.Execute(pyclipper.scale_to_clipper(10))

    10 或您需要的任何其他值。

    它基于对我不起作用的 baji 答案

    [ scale_to_clipper(x) => pyclipper.scale_to_clipper(x) ]

    【讨论】:

      【解决方案2】:

      您还需要缩放应用的偏移量(到裁剪器功能):

      scaled_coordinates = clipper_offset.Execute(scale_to_clipper(1000.0))
      

      pyclipper 将输入浮点数缩放为 64 位整数: http://www.angusj.com/delphi/clipper/documentation/Docs/Overview/Rounding.htm

      【讨论】:

        猜你喜欢
        • 2019-12-17
        • 2017-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-08
        相关资源
        最近更新 更多