注册 登录
明经CAD社区 返回首页

风树的个人空间 http://www.mjtd.com/?408117 [收藏] [复制] [分享] [RSS]

日志

按三角网追踪等高线

已有 428 次阅读2013-11-10 20:15 |系统分类:应用| 等高线

看了测绘版的帖子:
       [wkq004]由三角网生等高线-我的Alisp之路
       http://bbs.mjtd.com/forum.php?mod=viewthread&tid=99515&fromuid=408117
挺佩服作者的认真态度,也试着做了一下:(命令40)
      做之前没有太多去看相关资料,但 [wkq004]文中有句话起到很大的作用:“1)对给定的等高线高程h,与所有网点高程zi(i=1,2,?,n),进行比较,若zi=h,则将zi加上(或减)一个微小正数ε> 0(如ε=10-4),以使程序设计简单而又不影响等高线的精度。”
      那么我们可以假设,如果等高线和三角形相交,有且只有两个交点,大大的简化了搜索过程。
       过程大致为:
     1)根据已知高程点数据做普通的Delaunay三角剖分,生成各三角形相邻的位置关系。
     2)对要搜索生成的等高线,设高程为z,实际搜索时按z+0.0003来计算。
     3)根据z+0.0003,先从高程范围上检索出所有和它相关的三角形(假设z-50到z+50),然后以任意一个三角形开始追踪,判断该等高线是否经过该三角形,如果不经过则对下个三角形进行查找;如果经过,则找到该三角形另外一个高程点后,根据相邻关系,追踪下个高程点在哪个三角形的那条边上(排除和该三角形同边的点), 一次类推,直到搜索到起点或不能找到下个点为止。
    4)对下一个未查找过的三角形进行查找,方式同上。直到所有三角形均被查找过位置,结束对该高程的等高线的追踪。
    可以做到但没有去做的是:
     1)先求出所有三角形z方向上的区间,然后将区间分为n个子区间,每个区间建议有部分重合的位置;提前检索出对应区间的三角形数据,复制到内存中,以备要同时生成多条等高线时使用,减少反复搜索。
     2)上面生成的等高线有很大可能是不连续的。解决的方法如[wkq004]文中提到的部分。
     3)写好后只是简单的用少量数据点试过没问题,但还没有深入的检验,待详细调试。

2014.1.2
    屏蔽了该命令,原因是:
    1、建议使用专业软件,在等高线线型、类型的的生成上均能提供专业上的保证。
    2、之前实现的只限于未经控制点加密、非圆滑的等高线生成部分,用来练习就到此为止。


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-10 04:37 , Processed in 0.073829 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部