- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种实用等高线高程自动赋值方法研究
一种实用的等高线高程自动赋值方法研究
摘 要:数字地图中经常存在没有赋高程值和高程值赋值错误的情况,为后期应用及入库带来很多的不便。针对此问题笔者结合Tin三角网原理,提出以高程散点为基准,构建Tin三角网,通过Tin三角形的边长与等高线在空间上的相交关系,自动检查和对等高线进行赋值。经过笔者理论和实践分析,其正确率非常高,完全可用于对地形图等高线高程的检查和自动赋值。
关键词:Tin 自动高程赋值 等高线 空间分析
中图分类号:P283 文献标识码:A 文章编号:1672-3791(2013)06(a)-0039-02
传统的CAD中等高线往往通过高程点注记来识别等高线的高程,因此在CAD应用中,等高线很多就是普通的曲线,没有高程值。随着数字地图的应用范围日益拓广,通过读取等高线的高程值来实现多种应用变得非常普遍,因此等高线没有高程值,对后期数字地图的应用在成很多不便。
1 实现思路
等高线自动高程赋值一直是工程应用中的一个难题,当前常见的处理方式有两种,人工模式和半自动化模式。前者主要通过人工方式,逐条录入等高线的高程值,另一种模式是由人工指定起始等高线,根据等高距及高差,自动通过空间关系完成等高线的高程赋值。前者工作量巨大,在生产中基本不予采用,后者虽然部分实现自动化,但仍需人工干预,特别是出现地貌突变如陡坎、建筑物等,自动赋值往往失败。市场上常见的具有此功能的软件有MapGis、清华山维等。
为了减轻等高线高程赋值的工作量,提高赋值的正确率,笔者拟采用采集的高程点,通过构建Tin三角网,实现等高线高程自动赋值。
传统的CAD地形图中,等高线的高程信息主要通过邻近的高程点进行获取,因此地形图中的高程点具有以下功能。
(1)是获取等高线高程信息的有效手段。
(2)是对数字地图中等高线高程信息进行检核的有效手段。
因此,通过高程点获取等高线高程信息,是最为可行和有效的手段。对等高线和高程点做以下分析。
在没有地形突变的情况下,两高程点的连线与等高线相交的条数必然等于两高程点高程值整数部分差值与基本等高距的比值。如两个高程点高程值整数部分分别为N和M,其整数部分差值为(N-M),假设基本等高距为K,则与此两等高点相交的等高线条数必然为(N-M)/K。
再对(N-M)/K条等高线进行如下分析,首先,以较低的高程点作为基点,分别将其与(N-M)/K条等高线和高程点两点连线的交点进行连接,将得到(N-M)/K条线段。分别求得每条线段与等高线的交点个数P,则待求等高线的高程就等于基点与交点个数的和即(M+P)。
以上思路结构合理,理论严谨,但在应用中仍存在以下问题:首先对于地形突变处的处理,经分析可知,地形突变主要的影响在于等高线的标高出现不连续,如陡坎比高超过基本等高距,则其前后两条等高线的高程差就不为基本等高距。因此可通过如下条件过滤,当出现地形突变,则高程点的连线与等高线的交点必然少于两高程点高程值整数部分的差值。再次,对于交点数虽然等于两高程点高程值整数部分的差值,但仍存在如下可能:如果两个高程点高程值有误,如上文所述,若两高程点高程分别为M+1和N+1,则可能存在高程赋值错误。为此可进行如下处理。
对等高线高程赋值的两点,其连线必须是最优三角形。
当存在多次赋值时,将赋值过程中高程值出现概率最大的赋予对应等高线。
前者可以通过构建Tin三角形满足要求,后者主要是通过概率判断,提升高程赋值的准确性。经过以上分析,即可通过程序实现等高线的自动赋值了。
2 算法实现
通过上文理论分析,通过高程点自动对等高线进行赋值是可行的,为了在程序上实现上文的赋值过程,笔者拟采用如下流程实现等高线的自动赋值。
首先,将等高线提取出来,单独存放一个图层。
其次,将高程注记点提取出来。
第三,通过高程注记点,构建Tin三角形。
第四,读取Tin三角形中每个节点的高程,并赋予三角形的每条边。
第五,读取三角形其中一条边,通过空间分析,求得与之相交的每条等高线。
第六,若交点数与两高程点的高程值整数部分差值相同,则根据等高距,自动将高程值赋予等高线,同时记录赋值的次数,否则不参与赋值。
第七,若出现高程赋值不同,根据赋值次数,将出现概率最大的高程值赋予对应等高线。具体的流程图示例如(图1)。
下文是实现算法的部分关键代码:
DivElevation=Int(RecL.GetFieldValue(端点2))-Int(RecL.GetFieldValue(端点1))
//求取Tin三角形边长两端点的高程值
Lts.Add Ln.GetPartAt(1)(1)
TemLin
文档评论(0)