|
说实话mapgis画图用起来极不方便,二次开发对加点及画线及简单画区在此就不再讨论,特别是与EXCEL连接“自动”成图,可大大提高工作效率,有许多相关的文章。这次只讨论计曲线间内插首曲线的方法及高精度切剖面思路。
初看起来两个问题风马牛不相及,其实不然,两个问题紧密联系。我们可以看一下,MAPGIS软件有一个菜单 线编辑——光滑曲线——光滑曲线,这个功能就可以把我们要讨论的问题联系在一起。我们知道,当曲线的控制点足够密时,曲线就可以用其控制点连成的直线段进行表示,就是用了传说中的“微分”原理。而 线编辑——光滑曲线——光滑曲线 就提供了把曲线微分成足够密的控制点。我们现在来讨论在曲线控制点足够密时情况下,如何实现内插首曲线和切剖面的方法。
一)内插曲线
1)、我们用LinArea的Get函数获取两条计曲线的坐标,并把坐标值写入EXCEL中;
2)、我们用Math.Round函数过滤掉点多的曲线,让两条曲线的控制点数相等;
3)、我们用数学公式均分两条曲线对应点,并把结果写入EXCEL中;
2)、利用现有的函数写成WL文件,一切就OK(当曲线过于不匹配时,可分段进行内插);
二)切剖面
切剖面最关键的是如何确定剖面线与等高线(曲线)的交点坐标,上面已交待,曲线可用直线段进行表示,并且已经“变成”了直线段,下面就讨论这一过程
1)、计算剖面线y=ax+b的参数a,b;
2)、遍历等高线,提取直线段的坐标;
3)、判断直线段是否与剖面线相交(把直线段的x1,x2坐标代入剖面线y=ax+b中得到y1′,y2′,利用(y1′-y1)*(y2′-y2)是否大于0);
4)、如果相交就计算其交点(在此不再多述);
通过实践,内插线比计算交点线速度快50倍左右,当点足够密时,交点坐标精度可达0.01mm(已经过本人测试),完全能满足我们作图要求。
成果附件在此就不提供。欢迎相互探讨,谢谢。
|
|