基于MapGIS开发批量修改图形属性探讨

来源 :城市建设理论研究 | 被引量 : 0次 | 上传用户:collinccs
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要: 本文阐述了基于MapGIS开发批量修改图形属性必要性与重要性;分析了MapGIS软件二次开发方法及VC++语言的优势;剖析了属性统改的数学算法;文章给出了程序实现的具体流程图,并列出了各模块部分典型代码;希望能给广大同僚起到抛砖引玉的作用。
  关键词: MapGIS,二叉树算法,属性统改,二次开发
  中图分类号:F124文献标识码: A
  
  根据国土资源部、农业部《关于划定基本农田实行永久保护的通知》(国土资发〔2009〕167号),《关于加强和完善永久基本农田划定有关工作的通知》(国土资发〔2010〕218 号)文件精神,严格落实自治区新一轮土地利用总体规划确定的基本农田保护目标,全区基本农田划定面积得少于《广西壮族自治区土
  地利用总体规划(2006-2020 年)》确定的基本农田保护任务,确保国家粮食安全,维护社会稳定。优化全区基本农田结构和布局,实现基本农田保护与建设并重、数量与质量并重、生产功能与生态功能并重。建立规范齐全的基本农田保护档案和基本农田数据库,实现基本农田信息化动态管理,全面提升基本农田保护水平[1]。
  然而在基本农田划定的工作中,广西大多数县份使用MapGIS软件制图与建立数据库,在数据的处理过程中,经常要批量修改各文件属性字段。笔者在实际的工作中发现,MapGIS软件不能很好的支持批量修改多文件属性,只能单一的修改单文件属性,如单一的WT、WL与WP文件,这给基本农田划定项目带来了沉重的工作量。基于此,笔者结合自身多年的制图经验,基于MapGIS开发批量修改图形属性程序,在现阶段具有一定的理论与实际意义。
  1 MapGIS二次开发
  MapGIS软件二次开发语言主要有VC++与VB两种方式,本文主要阐述VC++结合MapGIS类库的开发方式。
  1.1 VC++
  Microsoft Visual C++是Microsoft公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。它以拥有“语法高亮”,IntelliSense(自动完成功能)以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。这些特征明显缩短程式编辑、编译及连结花费的时间,在大型软件计划上尤其显著
  Microsoft Visual C++是一个功能全面的工具集,可为个人或团队简化应用程序开发过程,支持交付可扩展的高质量应用程序。无论是编写代码、构建数据库、测试还是调试,您都可以使用能够按照你的方式工作的强大工具来提高工作效率。Microsoft Visual C++是一个综合性的应用程序生命周期管理工具套件,可供团队用于确保从设计到部署的整个过程都能取得较高质量的结果。无论是创建新的解决方案,还是改进现有的应用程序,Visual Studio 2012 Ultimate 都能让您针对不断增加的平台和技术(包括云和并行计算)将梦想变成现实。
  1.2 MapGIS二次开发
  (1)MapGIS开发概述
  MAPGIS二次开发函数采用匈牙利命名法,即动宾结构命名法,并且所有函数都以下横线开始,以便和Windows函数以及其他语言函数明显区别开来,_GetLin表示取线实体;在Visual Basic环境下,由于Visual Basic语言不能识别以下横线开始的函数名,所以库函数都以字母b开始,如bGetLin表示取线实体[3]。
  上述动态函数库提供了从最基本数据单元的读取、保存、更新和维护到MAPGIS地图库的建立和漫游,以及空间分析,图象处理等一系列功能,MAPGIS应用程序可以根据需要在任何层次上进行开发。除了上述 API函数外,MAPGIS还为基于MFC(Microsoft Foundation Class)的开发者提供多个可重用基类,将应用程序所需的常见基本功能作了封装,使用便利,改动灵活。
  MAPGIS正在向组件化迈进,已推出一系列组件,这将使得二次开发更为快捷便利。但与此同时MAPGIS仍将不断完善其API函数库,以多种开发手段满足不同层次、不同应用的
  需求。
  (2)MapGIS数据组织
  MAPGIS数据管理的核心就是对工作区的操作。 工作区是MAPGIS提出的一个概念,简单地说,工作区就是一个数据池,存放实体的空间数据、拓扑数据、图形数据和属性数据,每个工作区都对应于一个MAPGIS数据文件。MAPGIS开发函数库提供对工作区实施操作的一系列函数,如将工作区中的内容存盘,从盘上将数据装入工作区,对工作区中内容进行添加、修改、删除、检索等等。对硬盘数据的存取及虚拟内存的管理等等复杂繁琐的工作无需应用程序的编写者去关心,而是由MAPGIS工作区管理模块自动完成。
  2 程序结构算法
  本文程序实现的数学算法为二叉树遍历算法,所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问 题。 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。
  (1)遍历方案
  从二叉树的递归定义可知,一棵非空的二叉树由根结点及左、右子树这三个基本部分组成[2]。因此,在任一给定结点上,可以按某种次序执行三个操作:
  ⑴访问结点本身(N),
  ⑵遍历该结点的左子树(L),
  ⑶遍历该结点的右子树(R)。
  以上三种操作有六种执行次序:NLR、LNR、LRN、NRL、RNL、RLN。
  二叉树根据访问结点操作发生位置命名:
  ① NLR:前序遍历(PreorderTraversal亦称(先序遍历))
  ——访问根结点的操作发生在遍历其左右子树之前。
  ② LNR:中序遍历(InorderTraversal)
  ——访问根结点的操作发生在遍历其左右子树之中(间)。
  ③ LRN:后序遍历(PostorderTraversal)
  ——访问根结点的操作发生在遍历其左右子树之后。
  (2)遍历算法
  ① 中序遍历的递归算法定义:若二叉树非空,则依次执行如下操作:
  ⑴遍历左子树;
  ⑵访问根结点;
  ⑶遍历右子树。
  ② 先序遍历的递归算法定义:若二叉树非空,则依次执行如下操作:
  ⑴ 访问根结点;
  ⑵ 遍历左子树;
  ⑶ 遍历右子树。
  ③ 后序遍历得递归算法定义:若二叉树非空,则依次执行如下操作:
  ⑴遍历左子树;
  ⑵遍历右子树;
  ⑶访问根结点。
  3 程序流程图
  基于MapGIS开发批量修改图形属性的流程图如图1所示:
  
  
  
  图1 基于MapGIS开发批量修改图形属性流程图
  4 程序实现
  程序部分模块的实现代码如下:
  4.1 属性读取模块
  属性读取模块的部分程序代码如下所示:
  struct PEN{short PenNo;
   double PenWidth;
   longColor;
   COLORREF PenColor;};
  typedef class MAPGISLib*MAPLIB;
  typedef class FillRegion* FILLREGION;
  typedef class FillPattern* FILLPATTERN;
  typedef class CoordChange COORDCHANGE;
  typedef class CNoteConflict* NOTECONFLICT;
  4.2 数据库处理模块
  数据库处理模块的部分程序代码如下所示:
   _StartClockCursor();
   _GetPntNum(LXDWAi,&j,&lxdwN); //***B点文件
   for(i=1;i   { if(_GetPntPos(LXDWAi,i,&Bxy)<=0) continue;
   a[tt]=Bxy.x;
   b[tt]=Bxy.y;
   tt++; }
  5 結束语
  本文通过Microsoft Visual C++结合MapGIS 类库函数实现了MapGIS多文件图形属性的修改。本文所提出的程序思路以及所开发的应用程序,在实际生产工作中得到较好的验证。
  参考文献
  [1] 王元波;张锋;雷伟伟;;3S技术在土地变更调查中的应用探析[J];现代农业科技;2008年07期.
  [2] 刘长星;;组件式GIS平台及其在行业应用开发中的研究[J];测绘技术装备;2002年03期.
  [3] 中地软件丛书编委会.MapGIS二次开发培训教程(c++版)[M].武汉:中地公司,2001.
其他文献
摘要:当前,在企业不断深化改革、职工思想多元化并存的新形势下,基层班组始终把加强职工思想政治教育摆在统一思想、提高认识、凝聚力量、鼓舞士气的首位,不断丰富教育内容,创新教育方式,改善教育方法,取得了良好效果。然而,基层职工思想政治教育在取得丰硕成果的同时,也同样存在一些不容忽视的问题,面临一些不可回避的挑战。本文探讨了基层职工思想政治教育存在的问题及对策。  关键词:基层职工;思想政治教育;问题;
期刊
摘要:机械设备的环保性是指其在作业时保护环境的性能。随着人们环保意识的增强,人们对身边的环境保护要求越来越高。环境保护直接约束着企业的经营和生产行为,每年我们的施工现场因粉尘、噪声、振动等不利于环保而赔款的例子不胜枚举。所以,改善机械设备的环保性,生产和使用环保性优良的机械设备十分重要。本文对机械设备性能环保性改善方法进行了一定程度的探究。  关键词:机械设备:性能;环保  中图分类号:U673文
期刊
摘要:智能楼宇的普及进一步突出了机械设备安装工程的重要性,本文从研究机械设备安装监理工作的重要意义出发,就如何加强机械设备安装监理工作的质量控制展开讨论。  关键词:机械设备;安装监理;不足;质量控制  中图分类号:O213.1文献标识码: A    1机械设备安装监理工作的重要性分析  近年来,用户对建筑功能的要求越来越高,智能楼宇的数量与日俱增,机械设备安装工程作为建筑工程的核心部分受到用户越
期刊
摘要:通过对高层建筑弯曲型侧移模型的建立及分析,得出了基础刚度对高层建筑弯曲型结构侧移刚度影响规律。  关键词:基础刚度 结构附加变形 侧移刚度  中图分类号:TU97文献标识码: A    0 前言  随着社会的进步,高层建筑越来越多,高度也越来越高了。对高层建筑的力学研究也更加深入。在对高层建筑的研究过程中,我们可以从力学的角度将高层建筑简化为固接在上地基的“悬臂梁”。基于材料力学的基本假设高
期刊
摘 要:随着火力发电厂装机容量的不断提高,越来越多的高合金管道得到应用,其中P91/P92钢广泛应用于火力发电厂高压管道,火力发电厂高压管道对接焊接接头均采用氩弧焊打底加手工电弧焊工艺,由于该类高合金材料具有一定的裂纹敏感性,特别是焊缝根部如果存在缺陷,不仅对焊缝质量有很大的影响,对机组的安全运行将照成极大的安全隐患,由于现场的超声波检测采用单面双测或单面单侧检测,对根部缺陷的检测和判别非常重要。
期刊
摘要:机电安装工程是建筑工程的重要组成部分,涵盖了工业、民用、公用工程中的各类设备、电气、给排水、采暖、通风、消防、通信及自动化控制系统的安装。机电安装工程在项目管理中,通常作为建筑工程中的一个子项目来管理,没有作为单独的一个项目管理。伴随机电技术的广泛应用,机电安装工程的系统规模越来越庞大,系统复杂,技术要求高。机电安装工程作为建筑工程的重要组成部分,涉及面很广,随着工业化的发展,机电安装工程项
期刊
摘要:随着当前社会国际化、市场化的不断加快,新时期水利统计工作势必要提高水利统计工作的主动性和适应能力。而统计队伍的加强、统计内容的转变和统计方式的改善是水利统计发展的必要前提。完善经济统计,健全社会统计,加强资源环境统计是统计发展的必经之路。只有创新了统计方法,规范了統计制度,我国水利统计才能健康的、稳定地发展,才能担负起国民经济的重大使命。  关键词:水利;统计;发展趋势;措施  中图分类号:
期刊
摘要:目前,随着经济的快速发展,我国的各项事业发展的速度都非常快,其中水利事业的发展尤为显著。在我国的水利项目的建设过程中广泛的使用基础灌注桩技术。它的使用为项目的发展贡献了非常积极的力量,接下来重点的分析介绍了此项工艺。  关键词:水利项目;基础灌注桩;工艺简介  中图分类号:TV5文献标识码: A     由于国家最近几年的发展速度非常迅猛,而作为重要设施的水利项目也取得了十分显著地成效。不过
期刊
摘要:随着科学技术的发展,CorelDraw其非凡的设计能力广泛应用于平面设计及印前处理,成为地理信息系统领域应用最为广泛的专题地图制作软件之一,该软件有很好的矢量符号库扩充功能,符号无级缩放功能。本文分析了CorelDraw的地图编绘技术研究的相关方面。  关键词:CorelDraw;地图编绘;GIS  中图分类号:P283文献标识码: A  1、GIS空间数据用于地图制图的特点以及优势   1
期刊
摘要:为了提高桩基方案评价的科学性并实现对预选方案的优劣排序,在遵循方案评价的基本原理及相关要求的基础上,提出基于价值工程理论的桩基方案评价方法,建立了桩基方案评价模型,并对某一工程进行实例分析。结果表明:PHC桩、钢管桩和预应力混凝土方桩3个预选方案中,PHC桩最优。基于价值工程理论的桩基方案评价方法较全面和具有可操作性,评价科学,为桩基方案选择提供了决策依据。  关键词:价值工程,方案评价,桩
期刊