免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 2641|回复: 3
收起左侧

[经验共享] (VB二次开发)内插首曲线及高精度切剖面探讨

[复制链接]

3

主题

6239

铜板

17

好友

工程师

口直心快

Rank: 7Rank: 7Rank: 7

积分
577
发表于 2011-4-14 22:40 | 显示全部楼层 |阅读模式
      说实话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(已经过本人测试),完全能满足我们作图要求。
      成果附件在此就不提供。欢迎相互探讨,谢谢。
该会员没有填写今日想说内容.

37

主题

1万

铜板

0

好友

教授级高工

hi

Rank: 12Rank: 12Rank: 12

积分
1830
发表于 2011-4-14 23:01 | 显示全部楼层
成果附件在此就就提供试试3
大家好

17

主题

3718

铜板

12

好友

高级工程师

Rank: 9Rank: 9Rank: 9

积分
995
发表于 2011-4-15 06:43 | 显示全部楼层
提供试试嘛
该会员没有填写今日想说内容.

3

主题

6239

铜板

17

好友

工程师

口直心快

Rank: 7Rank: 7Rank: 7

积分
577
 楼主| 发表于 2011-4-15 11:39 | 显示全部楼层
效果图c:\5.png
该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表