谢谢回复。
在SHAPEFILE格式中,没有真曲线,所有曲线都是由点构成。下面的代码可以创建圆弧:
def circle_array(x,y,c1,c2,r): #圆中心坐标, 起始角,终止角(度),半径 转换为矩阵
ar=[]
deg2rad=math.pi/180.0
#pnt=arcpy.Point()
n=360
for i in range(0,n+1):
ang = (c1+(c2-c1)*i/n) * deg2rad
arx=x + r * math.cos(ang)
ary=y + r * math.sin(ang)
4 个回复
朱政
赞同来自:
潘建伟
赞同来自:
点的多少决定了曲线多项式的阶数,也就是这个曲线能拐多少弯儿。
另外,我不记得arcpy中有以点阵创建圆弧的接口。
interfly
赞同来自:
在SHAPEFILE格式中,没有真曲线,所有曲线都是由点构成。下面的代码可以创建圆弧:
def circle_array(x,y,c1,c2,r): #圆中心坐标, 起始角,终止角(度),半径 转换为矩阵
ar=[]
deg2rad=math.pi/180.0
#pnt=arcpy.Point()
n=360
for i in range(0,n+1):
ang = (c1+(c2-c1)*i/n) * deg2rad
arx=x + r * math.cos(ang)
ary=y + r * math.sin(ang)
ar.append([arx,ary,0])
return ar
arcpy.polygon(ar)
关键是我不知道如何确定点数N, 太小光滑度不够,太大,浪费机时和内存。
在ARCMAP中,用工具创建一个圆,然后再创建一个更大的圆。 对圆进行编辑,可以看到,构成大圆的点更多。
想知道,点数是如何确定的,应该有个算法,以构建与平台同样光滑度的圆。
zsf - SGG
赞同来自:
类似地,贝塞尔曲线,也是通过几个点表示较复杂的图形。
使用编辑器-创建要素对应的圆构造工具,可以通过确定圆心和半径画圆。通过观察可以发现,完成保存后,gdb存储了圆心和构造关系,而shp格式则存储了圆上的离散点。
有一点容易很少人注意到,gdb内所创建的线要素的FeatureType是line features,而shp线要素是polyline
个人推测,使用shp保存圆时候,记录的点数跟圆大小和要素类容差都有关系,也即要满足最近两点对应的弦高应小于容差的关系。
要回复问题请先登录或注册
发起人
相关问题
问题状态