辽宁省1:1万DEM接边检查程序的研究与实现

来源 :城市建设理论研究 | 被引量 : 0次 | 上传用户:luo2kai3
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文主要講述了在CAD平台下,利用Auto LISP编程语言,实现对DEM数据接边情况的批量检查,并将检查的结果以图形和报表两种形式反馈给用户,提高DEM数据接边检查的效率。
  关键词: AutoCAD;Auto LISP;DEM
  中图分类号:TP313 文献标识码:A 文章编号:
  
  在制作辽宁省1:10000万DEM基础数据时,经常需要对分幅制作的DEM进行接边检查,在以往的过程中都是利用Virtouzo本身提供的功能进行两幅间的接边检查,这种方法虽然也能达到检查的目的,但效率较低。尤其是当对大量的DEM进行接边检查时,更是让人感到繁琐。为提高检查的作业效率,减少作业员的劳动强度,本人编写了这个对DEM进行自动批量检查的程序。
  1 软件的运行平台及开发语言的简介
  AutoCAD是美国Autodesk公司推出的通用计算机绘图软件,它以其强大的绘图功能和良好的开发环境,广泛应用于机械、电子、化工、建筑、测量与勘察等行业。对AutoCAD进行二次开发的手段很多,例如Auto LISP、ADS、ARX、VBA等,本程序使用的是Auto LISP编程语言,它已被嵌入CAD中。Auto LISP具有语法简单、功能强大、易学易用的特点,它的数据类型相当随意,可以组织处理不同长度和结构的数据类型,用户可以按要求和最佳结构设计使用自定义的结构类型数据,而不会感到组织数据结构上的困难。另外,Auto LISP擅长人机交互操作的过程,对用户输入的接受、错误识别、恢复操作等方面的优秀功能,是其它语言难以比及的。
  2 程序具体实现
  2.1 设计思路
  由于每幅DEM都由超过百万的栅格点组成,如果在检查时对每个栅格点的高程值进行比较检查,那程序将运行很慢,也做了很多无用功。我们在进行接边检查时,可以只比较每幅DEM边缘一定范围内的栅格点的高程值,就可以达到接边检查的效果。另外,在对每幅DEM进行接边检查时,如果对其周围的八幅都进行比较检查,在整个检查的过程中也将做很多重复的比较工作,我们可以选定其中连续的三幅进行比较检查,例如:“上幅、右上幅、右幅”或者“右幅、右下幅、下幅”,那么对于整个检查不但对每条边都进行了接边检查,还减少很多重复的比较。本程序选定的是上幅、右上幅和右幅这三幅进行比较检查的。
  为提高程序的运行速度,在存储数据时本程序还使用了分块存储的方式,即将每幅检查图的上边缘提取的接边数据存储到一个变量中,右上角的接边数据存储到一个变量中,右边的接边数据存储到一个变量中。这样有些情况,可以只比较其中的部分数据就可以完成比较工作。
  在了解了数据的提取和存储方式后,我们介绍一下程序的设计运行线路。运行程序首先提示用户选取要接边文件所在的文件夹中的任意一幅DEM文件,当用户选定后,程序将自动提取该文件夹下所有后缀为“.dem”的文件名称。程序将根据提取的文件名自动生成图幅结合表,并判断存储每幅图的接边情况。按照接边情况依次对每幅图进行接边检查,将检查的结果输出到“c:/DemCheckResult.txt”文件中。此文件是检查的中间成果,如果运行后发现此文件中有错误记录,那么根据图示,用户再运行“cdr”命令,程序将生产检查成果图和检查成果报告“c:/一万DEM分幅检查成果.txt”。在生成的DWG成果图中,将给出图幅结合表和错误点的点位,对于不接边的点我们将一目了然。在生成的检查报告中,将给出每幅图的所有临幅图的检查情况。
  2.2 程序原代码
  (defun c:jcdem()
  (setvar "CMDECHO" 0)
  (setq pf (getfiled "选择DEM文件夹下的任意一个文件" "" "dem" 8))
  (if pf (progn
  (setq FilesPath (vl-filename-directory pf))
  (setq filelp (vl-directory-files FilesPath "*.dem"));;文件夹下存储的dem文件名列表
  (princ "\n")
  (princ filelp)
  (setq write_fp1 (open "c:/DemCheckResult.txt" "w"))
  (setq write_fp2 (open "c:/JSTMPsystem.txt" "w"))
  ;;------------------------- 计算图幅相邻关系 -------------------------
  (setq files_long (length filelp))
  (setq YON_Y_BL nil YON_S_BL nil YON_D_BL nil)
  (setq LFTH_Y nil LFTH_S nil LFTH_D nil)
  (setq i 0)
  (repeat files_long
  (setq Tqbtmp (nth i filelp))
  (setq TqbtmpN (vl-filename-base Tqbtmp))
  (setq TFH_Name_Y (Get_right_tfname TqbtmpN))
  (setq TFH_Name_S (Get_upside_tfname TqbtmpN))
  (setq TFH_Name_D (Get_Rrelative_tfname TqbtmpN))
  (setq j_1 0)
  (setq flag_pdtfh_y 0)
  (while (and (= flag_pdtfh_y 0) (< j_1 files_long))
  (if (= (vl-filename-base (nth j_1 filelp)) TFH_Name_Y) (progn
  (setq flag_pdtfh_y 1)
  ))
  (setq j_1 (+ j_1 1))
  )
  (setq YON_Y_BL (cons flag_pdtfh_y YON_Y_BL))
  (if (= flag_pdtfh_y 1)
  (setq LFTH_Y (cons TFH_Name_Y LFTH_Y))
  (setq LFTH_Y (cons 'KONG LFTH_Y))
  )
  (setq j_2 0)
  (setq flag_pdtfh_s 0)
  (while (and (= flag_pdtfh_s 0) (< j_2 files_long))
  (if (= (vl-filename-base (nth j_2 filelp)) TFH_Name_S) (progn
  (setq flag_pdtfh_s 1)
  ))
  (setq j_2 (+ j_2 1))
  )
  (setq YON_S_BL (cons flag_pdtfh_s YON_S_BL))
  (if (= flag_pdtfh_s 1)
  (setq LFTH_S (cons TFH_Name_S LFTH_S))
  (setq LFTH_S (cons 'KONG LFTH_S))
  )
  (setq j_3 0)
  (setq flag_pdtfh_d 0)
  (while (and (= flag_pdtfh_d 0) (< j_3 files_long))
  (if (= (vl-filename-base (nth j_3 filelp)) TFH_Name_D) (progn
  (setq flag_pdtfh_d 1)
  ))
  (setq j_3 (+ j_3 1))
  )
  (setq YON_D_BL (cons flag_pdtfh_d YON_D_BL))
  (if (= flag_pdtfh_d 1)
  (setq LFTH_D (cons TFH_Name_D LFTH_D))
  (setq LFTH_D (cons 'KONG LFTH_D))
  )
  (setq i (+ i 1))
  )
  (setq YON_Y_BL (reverse YON_Y_BL));;与文件名列表顺序对应的临幅关系表
  (setq YON_S_BL (reverse YON_S_BL))
  (setq YON_D_BL (reverse YON_D_BL))
  (setq LFTH_Y (reverse LFTH_Y));;与文件名列表顺序对应的临幅图幅号表
  (setq LFTH_S (reverse LFTH_S))
  (setq LFTH_D (reverse LFTH_D))
  ;;------------------------- 计算图幅相邻关系 -------------------------
  
  ;;------------------------ 输出DEM结合表文件 ------------------------
  (setq OPUT_JHB_i 0)
  (repeat files_long
  (setq OPUT_TF_path_full (strcat FilesPath "\\" (nth OPUT_JHB_i filelp)))
  (setq OPUT_fp_B (open OPUT_TF_path_full "r"))
  (setq OPUT_reco_B (read-line OPUT_fp_B))
  (setq OPUT_sxb_B (flz OPUT_reco_B))
  (setq OPUT_B_jdy (nth 0 OPUT_sxb_B) OPUT_B_jdx (nth 1 OPUT_sxb_B) OPUT_B_gwd (nth 3 OPUT_sxb_B) OPUT_B_column (nth 5 OPUT_sxb_B) OPUT_B_row (nth 6 OPUT_sxb_B))
  (setq OPUT_TK_W (+ (atoi OPUT_B_jdy) (* (- (atoi OPUT_B_column) 1) (atoi OPUT_B_gwd))))
  (setq OPUT_TK_H (+ (atoi OPUT_B_jdx) (* (- (atoi OPUT_B_row) 1) (atoi OPUT_B_gwd))))
  (setq OPUT_TK_WB (+ OPUT_TK_W 2.5))
  (setq OPUT_TK_HB (+ OPUT_TK_H 2.5))
  (setq OPUT_B_jdyB (- (atof OPUT_B_jdy) 2.5))
  (setq OPUT_B_jdxB (- (atof OPUT_B_jdx) 2.5))
  (setq OPUT_TK_name (vl-filename-base (nth OPUT_JHB_i filelp)))
  (setq OPUT_WriteString2 (strcat OPUT_TK_name " " (rtos OPUT_B_jdyB) " " (rtos OPUT_B_jdxB) " " (rtos OPUT_TK_WB) " " (rtos OPUT_TK_HB)))
  (write-line OPUT_WriteString2 write_fp2)
  (setq OPUT_JHB_i (+ OPUT_JHB_i 1))
  )
  ;;------------------------ 输出DEM结合表文件 ------------------------
  
  ...
  
  ;;------------------------ 释放主内存区域 -----------------------------
  (setq YON_Y_BL nil YON_S_BL nil YON_D_BL nil)
  (setq LFTH_Y nil LFTH_S nil LFTH_D nil)
  (close write_fp1)
  (close write_fp2)
  ;;------------------------ 釋放主内存区域 ------------------------------
  (princ "\n程序运行完毕,请查看成果文件!")
  (princ "\n要生成检查成果图和分幅成果表,请运行< cdr >命令!")
  ))
  (princ)
  )
  3 结束语
  本程序是为格网间距为5米的1万DEM数据接边检查编写的,因为万图是梯形分幅,依照我省万图的具体情况边缘取值范围设为300米内的网格点为接边检查范围点。在检查其他格网间距值的DEM时,只需修改间距值变量和取值范围变量即可使用本程序。由于篇幅所限本文仅列出了主程序模块的部分原代码,有编写繁琐之处敬请批评指正。
  参考文献
  [1] 康博.中文版AutoCAD2000/2002 Visual LISP开发指南[M],北京:清华大学出版社,2001.8
  [2] 唐亮,等.AutoCAD2002开发教程[M],北京:北京希望电子出版社,2002.8
其他文献
摘要:本文结合ADS航空摄影技术在大连地区的实际生产案例,分析ADS航空摄影技术在无像控空三加密、航片落水、丘陵滨海区域制作大比例尺地形图的应用特点。  关键词:ADS数字航空摄影 大比例尺地形图 无像控空三加密 航片落水   中图分类号:V1 文献标识码:A 文章编号:     Abstract:In this paper,through the actual production cases
期刊
摘 要:在我国不断加快城市建设化的步伐中,道路建设是一个重要的项目,已经引起了相关部门的重视。我们针对目前存在的实际情况,对城市道路的一些设计方法及思路进行了一系列的探讨。  关键词:市政工程;道路设计;交通规划设计  中图分类号:TU948 文献标识码:A文章编号:  1 前言  在城市的建设中,道路建设已经成为了其中非常重要的一环,引起了人们的关注与重视,它是通过某种手段来达到城市与道路交通完
期刊
摘 要:本文向大家论述了地理信息系统即GIS的关键性的效能,以及在城市测绘空间中的有效的运用,进行了较为深层次的探讨。  关键词;论述;地理信息系统;效能;运用  中图分类号:P208文献标识码:A文章编号:   目前地理信息系统(GIS) 已然开始大范围的使用在城市规划、工程设计、天气预报、投资项目评估、社会统计、防灾减灾等各个领域当中。GIS 既是一门比较日益成熟的科学技术学科,而且也逐渐成为
期刊
摘要: 机电一体化是机械设计、计算机技术、自动化控制、信息处理、检测传感技术等等多门学科技术相互渗透、融合而产生的一门新兴边缘学科,在当前各国的工业生产中有着不可替代的重要地位。随着机电一体化技术的不断发展,机电一体化技术的应用范围与前景逐渐扩大,同时它也正在以更新的形式出現在人们的生产活动中。  关键词:机电一体化;发展趋势;应用  中图分类号: TH-39 文献标识码: A 文章编号:  前言
期刊
摘要:料仓在化工行业中是用来储藏固体(松散的颗粒或粉料)物料的重要设备。在化工生产中,料仓不仅用来储存物料,同时还起着促使物料平衡和性能均化的作用。固体料仓的设计标准由JB/T4735-97《钢制焊接常压容器》中的一个章节改版为NB/T47003.2-2009《固体料仓》一个独立标准,其设计理论有了重大变化,料仓的设计、制造、检验已成独立的体系。本文对NB/T47003.2-2009《固体料仓》的
期刊
摘要:本文作者结合实际工作经验,对市政桥梁结构设计进行了分析探讨,供大家参考借鉴。  关键词:市政桥梁;结构设计   中图分类号:U442.5+9 文献标识码:A文章编号:     一座安全、耐久、健康的市政桥梁充分体现了设计者的智慧和审美观,值得世人回味,经历时间的考验。总之,市政桥梁的结构设计,要在因地制宜的前提下,根据建设单位的市政桥梁设计任务书,认真学习国内外的先进技术,尽可能采用成熟的新
期刊
摘要:水利水电工程现场施工技术管理非常困难,不仅需要考虑诸多外界因素,同时还需要管理者踏实稳定的工作,不能忽视任何一个环节,不能抱有侥幸心态,需要以工程进度和施工现场情况为基础,及时调整施工战略,做好一切准备工作和施工问题应对策略。水利水电工程高质量高效率的完成需要全体工作人员的共同努力和相互协作。本文对现代化水利水电工程施工过程中的项目管理等方面的内容进行了浅要的分析和探讨。  关键词:水利水电
期刊
摘要:水利工程建筑物地基的水环境相对较为复杂,为了保证建筑物地基处理和基础施工的顺利进行,必须妥善处理水工建筑基坑内的排水问题, 基于此,本文将探讨水工建筑基坑排水的方法,以期能够提高工程排水能力,给水工建筑提供一个良好的地基环境。  关键词:水工 建筑 施工 排水  中图分类号: TU7 文献标识码: A 文章编号:  随着我国改革开放的不断深入,我国经济取得了飞跃的发展,综合国力得到极大的提高
期刊
摘要:本文阐述了我国市政桥梁抗震相关情况,分析了桥梁震害相关原因,基于设计因素,探讨了市政桥梁抗震可行性设计策略,提出了市政桥梁抗震设计的注意事项。  关键词:市政桥梁;抗震设计;分析  中图分类号:U442.5+9文献标识码:A文章编号:     随着我国某些地区地震频繁发生,对于市政桥梁而言,其抗震性能的好坏势必会对人民生命财产造成重大影响。首先必须从设计角度出发,充分考虑震害相关原因,在结构
期刊
摘要:水利水电工程测量是在水利水电工程施工过程中一项重要的工作,对工程项目的施工质量的保证有着不可言喻的作用。但是在测量过程中,即使再精密、再先进的测量仪器,都会出现一定误差。文章详细阐述了水利水电工程施工中可能对测量误差影响的因素,分析了出现误差的原因,并就如何控制测量误差提出了自己看法。  关键字:水利水电、工程测量、误差、控制  中图分类号:TV212文献标识码: A 文章编号:  0 引言
期刊