1

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

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

多边形半径

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

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

4

2 回答 2

2

对我有用的方式:

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) ]

于 2018-11-09T15:00:16.120 回答
0

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

scaled_coordinates = clipper_offset.Execute(scale_to_clipper(1000.0))

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

于 2018-05-28T08:33:40.670 回答