使用限幅器

时间:2017-10-17 06:11:20

标签: python gis polygon clipper pyclipper

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

这就是我想要实现的目标(ilustration的单位):

Polygon radiuses

这就是我在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和50km半径?

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

2 个答案:

答案 0 :(得分:1)

对我有效的方式:

<relation>%rowtype

我的意思是:

  

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

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

它基于不适合我的baji答案

  

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

答案 1 :(得分:0)

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

scaled_coordinates = clipper_offset.Execute(scale_to_clipper(1000.0))

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