我试图使用形状来识别形状所使用的区域,以及在数控路由器上切割它的工具所使用的区域。该形状是使用埃兹德克斯从dxf绘图中导入的。
工具路径可以是矩形(如果它们被沿着直线的锯片切割),也可以是一组段(如果它们是由铣削钻头路由的)。在这两种情况下,我都可以使用LineString.buffer()自动创建偏移量,并找到工具使用的区域。
我使用shapely是因为我认为这是找出形状是否重叠的最佳工具(使用union()将所有工具合并为一个形状,使用overlaps()查找干扰)。如果有更好的工具用于这个目的,请告诉我。
buffer()在创建段以表示拐角上的弧方面做得很好。
是否有一种方法来创建段来表示形状本身上的弧?
例如,如何在此形状的左侧创建弧?我是否需要创建自己的(慢速) python函数?还是有一种优化的外形方式?

发布于 2015-06-10 16:58:16
在python中创建自己的弧形并不一定很慢。numpy在这些方面的操作非常好,而且shapely有意与Numpy进行良好的互操作。
例如,
import numpy as np
import shapely.geometry as geom
# Define the arc (presumably ezdxf uses a similar convention)
centerx, centery = 3, 4
radius = 2
start_angle, end_angle = 30, 56 # In degrees
numsegments = 1000
# The coordinates of the arc
theta = np.radians(np.linspace(start_angle, end_angle, numsegments))
x = centerx + radius * np.cos(theta)
y = centery + radius * np.sin(theta)
arc = geom.LineString(np.column_stack([x, y]))在我的机器上,在开始角和结束角之间用1000个点近似弧需要3毫秒(这包括把它转换成一个形状良好的LineString)。
发布于 2015-06-10 17:02:26
我从来没有使用过形状,但我知道一些矢量图形原理。重叠通常用“差异”提取。如果你把多边形的差异取出来,剩下的就是你的弧线。https://gis.stackexchange.com/questions/11987/polygon-overlay-with-shapely
https://stackoverflow.com/questions/30762329
复制相似问题