簡體   English   中英

用剪刀按米偏移多邊形

[英]Offsetting polygons by meters with clipper

我想創建位置(城鎮、村庄等)的緩沖多邊形,以便使用它們進行半徑搜索。

這就是我想要實現的(用於 ilustration 的單位):

多邊形半徑

這就是我在 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 半徑?

順便提一句。 這是解決這個問題的正確方法嗎?

對我有用的方式:

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

您還需要縮放應用的偏移量(到裁剪器功能):

scaled_coordinates = clipper_offset.Execute(scale_to_clipper(1000.0))

pyclipper 將輸入浮點數縮放為 64 位整數: http ://www.angusj.com/delphi/clipper/documentation/Docs/Overview/Rounding.htm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM