学术出版,国际教著,国际期刊,SCI,SSCI,EI,SCOPUS,A&HCI等高端学术咨询
来源:职称驿站所属分类:地质论文 发布时间:2011-06-08浏览:81次
摘要:在数字地形图生产的过程中,由于生产的规定不够严格、作业人员作业不规范等原因,造成数据在空间关系上存在各种错误,给数据后续利用带来隐患,必须对数据进行必要的检查。在检查的过程中,利用程序来实现检查,可以大幅度降低生产成本,提高效率,本文主要是在AutoCAD软件平台下,利用AUTOLISP语言编写程序来完成面状地物封闭性的检查。
关键词:AutoCAD,数字地形图,面状地物封闭性检查,AUTOLISP语言,程序检查,实现
0引言
在数字地形图生产的过程中,由于生产的规定不够严格、作业人员作业不规范等原因,造成数据在空间关系上存在各种错误,给数据后续利用带来隐患,必须对数据进行必要的检查。
在数字地形图数据结构检查的过程中,应用程序来实现检查,可以大幅度降低生产成本,提高效率,现在以AUTOLISP语言编写的面状地物封闭性检查程序为例,来谈谈自己的体会。
数字地形图数据中,面状地物是指由封闭的线构成的闭合地物(如房屋、林地等),在GIS系统中由其封闭线构面,面状地物的不封闭直接导致构面拓扑分析错误。作业人员在绘图时由于操作错误或为保持图面的整洁将已闭合的图形断开(如文字注记与地物重合,地类界和其它地物重合等情况)。
1实现方法
面状地物是线形地物的闭合形式,因此构造选择集采用把所有线性地物都选择进来。首先提取实体的地物代码,根据面状地物代码索引表判断实体是否为面状地物,提取组码70的值,判断实体是否闭合。
对于不闭合的面状实体一般采用下列两种方法处理:①对于首尾坐标相同的实体,去掉结尾点运用实体闭合功能使实体闭合。②对于首尾坐标不相同的实体,由于其情况比较复杂,一般不提倡采用自动闭合的方法,可以聚焦其实体,根据具体情况人工干预使其闭合。
2程序主代码
程序文件名:mzdwjc.lsp
(defunc:check-close(/filenamefpone-lineIall-objlenone-nameone-datcordptp1p2flag-closeflagpline-typeflag2point-lst)
(if(notout-lst)
(prong
(setqfilename“out.ini”)
(if(not(findfilefilename))
(prong
(alert”没有找到索引文件OUT.INNn请设置正确的路径!!!”)
(exit))
(setqfilename(findfilefilename)))
(setqfq(poenfilename”r”))
(setqapp-lstnildel-flagnil)
(setqone-lst(read-linefp))
(while(and(/=one-lst”end”)(/=one-lst”END”))
(setqone-lst(strtolst-newone-lst))
(setqout-lst(consone-lstout-lst))
(setqone-lst(read-linefp)))
(setqout-lst(reverseout-lst))
(closefp))
)
(setqI0)(setqs1(getvar”userr1”))
(if(<s11)(setqs1500.0));图形比例尺;
(command”layer”“m”“error”“”);建立层以存放标记实体;
(if(noti-close)(setqi-closei)(setqII-close))
(command“zoom”“e”)
(setqall-obj(ssget“c”(getvar”extmin”)(getvar”extmax”)((-4.”<or”)(0.”POLYLINE”)(0.”LWPOLYLINE”)(-4.”or>”))))
(if(notall-obj)
(prong
(alert”n当前图形没有任何实体”)
(exit)))
(setqlen(sslengthall-obj))
(if(>i-closelen)(setqIlen))
(repeatlen
(setqone-name(ssnameall-obji))
(setqpline-type(cdr(assoc0(entgetone-name))))
(setqone-dat(entgetone-name’(“south”)))
(setqcord(assoc-3one-dat))
(setqcord(cdr(assoc1000(cdadrcord))));地码编码;
(if(and(=nth2(assoccordout-lst))”2”)(or(=pline-type”POLYLINE”)(=pline-type”LWPOLYLINE”)))
(setqpoint-lst(pline-pointone-name)))
(ifpoint-lst
(prong(setqpt(carpoint-lst))
(setqpl(-(carpt)10)(-(cadrpt)10))p2(list(+(carpt)10)(+(cadrpt10)))))
(if(=nth2(assoccordout-lst))”2”)
(prong
(setqflag-close(cdr(assoc70one-dat)))
(if(=(remflag-close2)0)
(prong
(print”n面状地物没有封闭n”)
(if(/=flag4)(setqflag(getint”n1:标记此地物;2:聚焦此地物;3:将地物强行封闭
4:所有地物强行封闭<4>:”)))
(if(and(/=flag1)(/=flag2)(/=flag3)(notflag))(setqflag4))
(if(<=flag1)
(prong
(command”circle”pt(/(*s13)1000)0“此地物没有属性”))
(if(=flag2)
(prong
(command“circle”pt5)
(command“zoom”p1p2)(exit)))
(if(or(=flag3)(=flag4))
(prong
(setqone–dat(subst’(70.129)(assoc70one-dat)one-dat))
(entmodone-dat))))))))
(setqI(1+i))
(alert”面状地物封闭性检查成功”))
3程序功能
1)程序能对不封闭面状地物进行标记;
2)程序能对不封闭面状地物进行聚焦;
3)程序能对不封闭面状地物作强制封闭处理;
4)程序运行速度较快,在数字地形图生产过程中,能够成倍提高生产效率。
4存在的问题
1)因程序用到OUT.INI文件,使用者需要对文件进行编辑,格式如下:[!--empirenews.page--]
面状地物编码,地物图层,地物类型,地物名称,线形等信息
如:141200,JMD,2,简单房屋,18,jdfw,0,PLINE
2)程序运行在广州南方测绘仪器有限公司CASS软件下,数据格式采用CASS标准。
5结束语
在数字地形图生产过程中,数据存在的问题有:等高线相交、等高线不闭合、高程赋值不合理、要素遗漏和位移、相互关系不一致、分层错误、接边错误、数据总体结构等错误。对这些错误的检查和处理,采用计算机自动检查和辅助检查是控制海量数据质量的必由之路。国内很多的地形图编辑软件都是建立在AutoCAD平台下的,利用AutoCAD强大的定制和二次开发功能,可以根据不同的需求进行二次开发,提高数据成果的规范性质量,使地形图成果数据更能满足高质量的入库要求,同时降低生产成本,提高工程效益。
参考文献
[1]陈伯雄等.VisualLISP程序设计—技巧与范例(第三版).北京:人民邮电出版社,2002
《地形图面状地物封闭性检查程序的实现》
本文由职称驿站首发,您身边的高端学术顾问
文章名称: 地形图面状地物封闭性检查程序的实现
下一篇:LBS发展现状探究
扫码关注公众号
微信扫码加好友
职称驿站 www.zhichengyz.com 版权所有 仿冒必究 冀ICP备16002873号-3