用clipp实现多边形的米偏移

2024-05-16 19:52:35 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这是我想要达到的目标(指示单位):

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半径?

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


Tags: 方法import目标execute半径单位多边形array
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))

或者你需要的其他值。在

这是基于巴吉的回答,对我不起作用

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

您还需要缩放应用的偏移(到clipper函数):

scaled_coordinates = clipper_offset.Execute(scale_to_clipper(1000.0))

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

相关问题 更多 >