一种基于ArcEngine的土地报批出图方式
2018-01-05郭立超魏薇
郭立超 魏薇
【摘 要】 在土地报批发证业务中,需要向有关部门提供大量图幅资料,为加快工作效率,降低人为因素导致的错误,本文提出了一种基于ArcEngine的土地报批出图方式,设计了一种自动分幅的算法,并采用VB.NET进行编程。结果表明:与传统人工方式相比,采用该方式可将整图分幅出图效时间缩短80%以上,并将人为影响因素降至最低。本文的研究成果可正常应用于日常工作中,并为其它ArcGis项目提供了编程解决方式的程序参考。
【关键词】 土地报批;图幅绘制; ArcGis;ArcEngine;VB.NET
[Abstract] In order to speed up the work efficiency and reduce the errors caused by human factors, this paper puts forward a kind of plotting method based on ArcEngine for land approval, and designs an automatic plotting algorithm based on VB.NET programming. The results show that compared with the traditional manual method, this method can shorten the effect time of the whole map by 80%, and minimize the human influence factors. The results of this paper can be applied to daily work, and provide programming reference solution for other ArcGis projects.
[Keywords] land approval, drawing plotting, ArcGis,ArcEngine,VB.NET
我国是土地大国,但并不是人均耕地面积大国,因此国家制定了18亿亩耕地红线政策,但社会发展离不开建设,因此使用土地就必须要有严格的规范手续。土地报批就指通过一些手续,流程,让土地性质改变,主要有集体土地变为国有土地,农用地变为建设用地。在土地报批业务中,为了可以顺利通过政府有关部门审查,各类资料准备不能出现任何差错,对于大型用地项目、历史遗留土地性质改变问题等来说,文字、图幅资料数量庞大,而申报时间紧、任务急,一般需要抽调大量人手进行资料准备工作,为防止出现错误,还需设置检查机制,工作量巨大。
图幅资料的准备工作分为信息收集、范围圈定、属性修改、图幅分幅、出图打印几个部分,一般采用业界通用的地理信息系统ArcGis进行处理。其中出图打印这部分由于地块分散,大小不一,为了保证一幅图中的地块完整性,通常采用人工判别处理的方式。由于ArcGis程序基础基于可开发平台ArcEngine,可供有一定编程基础的人员进行二次开发。因此提出了一种基于ArcEngine的土地报批出土方式,本文将从设想、算法、存在问题三个方面进行系统论述。
1 技术背景
油气井用地报批业务由于其行业特点存在特殊性,不同于一般的铁路用地报批、工业建设用地报批、地籍调查等业务,其地块数量多、总量大,但单块地块面积小、地块之间距离大且存在跨村跨乡问题。通用的批量生成方法使用起来局限较大,仅能靠人工按照地块顺序依次处理,一名熟练员工一天仅能处理约不足100幅图。处理过程繁琐、耗时,但流程清晰,工作内容固定,工作方式简单,因此考虑采用编程的方法,以计算机程序替代人工完成的重复性劳动。
2 开发环境介绍
2.1 NET Framework与VS平台
而Microsoft .NET Framework是由美国微软公司开发的用于Windows的新托管代码编程模型。它包含强大的功能与新技术,用户可以自由构建多平台上引人注目的用戶体验的应用程序,实现跨技术边界的无缝通信,并且能支持各种业务流程。Microsoft Visual Studio(简称VS)是美国微软公司为.NET提供的通用集成开发平台(IDE),为.NET提供了良好的支持。VS2015于2014年11月发布,新增了代码指示器、内存转储分析、UML工具等先进功能。
2.2 ArcEngine
ArcGis是Esri公司的产品总称,是世界上市场占有率最高的地理信息系统平台(Gis)软件,土地工程行业内普遍使用的ArcGIS Desktop是ArcGis产品线中的一员。ArcObject是编程用的对象,由ArcGis提供,是编程开发接口;ArcEngine是地图引擎,是ArcGis的核心,将地图数据和地理信息数据渲染后输出为图像,程序通过ArcObject来操作ArcEngine。本文采用ArcEngine9.0版本进行开发,对于ArcGIs Desktop常用的shp文件均能形成良好的支持。
3 问题分析及算法设计
3.1 问题分析
在油气井用地报批业务中,时常存在地块数量多,总面积大,但单块地块面积小且地块之间距离大的情况,以某石油公司某批次进行的陕西省榆林市神木县用地报批项目中为例,在近1000平方公里的面积内散布着100余地块,传统处理方法需要人工依次出图处理,需要1至2个工作日才能完成。而拥有上万地块的大型项目,人工处理的成本就会变的极大。
人工处理包含如下几个步骤:
1) 载入处理完毕的包含地块地理信息的数据文件;
2) 设计图幅大小、标题、比例尺等参数用以显示地块;
3) 根据地块相对位置确定显示输出方式,并修改说明文字;
4) 生成格式符合要求的可打印图幅后。
上述流程中,主要耗时步骤在第3步、第4步,需要操作人员使用pan命令将地块置中,然后切换到布局视图,进行说明文字的修改,最后选择直接打印或打印到文件。可见,出图工作因量大而繁琐,但并不复杂且流程清晰,步骤明确,采用电脑编程,模拟人工操作方式来处理这一问题明显具有巨大优势。下面依次提出每一步骤的程序解决方案:
1) 测绘行业一般采用ArcGis系统储存地块的地理信息数据,本文程序基于ArcEngine,可实现完美支持,于程序内部开辟大小可变的储存空间,利用ArcEngine提供的数据接口来读取并储存地块的相对位置、大小、形状、地类等信息以备调用;
2) 根据相关规范与项目要求,在ArcGis Desktop中进行图幅设计,随后仍然利用ArcEngine提供的操作接口读取相关参数,并应用于程序之中;
3) 设计算法并编写为程序,为全部地块进行编号排序,确定其在图幅中的显示位置(3.2节将详述这部分内容);
4) 调用ArcEngine提供的输出接口,将图幅导出至程序中,随后利用vb.net中提供的函数进行图幅修正,添加诸如页码、标题等内容,随后输出jpg格式文件至指定文件夹。
3.2 算法设计
算法是本文的核心内容,设计的算法是否能够合适的将地块进行判断、区分将直接影像图幅输出的质量和效率。
在程序角度,地块是2D平面上的封闭图形,由若干首尾相接的直线段组成。根据国家相关规范,图幅采用正南正北方向,在此基础上,对地块生成最小外接矩形,同时计算该外接矩形的中心。
设构成该地块的直线段的集合为L,共包含n条线段两点坐标分别为(Lx1(i),Ly1(i)),(Lx2(i),Ly2(i)),该外接矩形左下角(西南)坐标为(x1(i),y1(i)),右上角(东北)坐标为(x2(i),y2(i)),中心点坐标为(x(i),y(i)),中心点距离左边线与上边线的距离分别为为w(i),h(i)。打印图幅长宽分别为W、H。如图所示,图中青色为地块,黑框范围为外接矩形。
为保证显示效果,地块图片必须置于图幅中央。但存在如下问题:
1)个体过大现象:
即地块大小超出了图幅大小,因此数据处理第一步需要对所有地块进行大小判定,超出图幅范围的根据项目要求或国家规范进行比例尺缩放或采用更大图幅进行输出;
2)重复输出与压盖现象:
当两块小型地块距离相近时产生,当输出地块a时,地块a处于图幅中央,地块b被同时显示,而输出地块b时地块a同样出现,则产生了重复输出,且两张图中地块位置略有差异,而当地块b距离地块a为某个特定距离或地块b过大时,会产生压盖现象,即地块b部分出现在输出地块a的图中,如下图所示:
为解决这两项问题,需要对地块进行压盖判断:
图幅右上侧的其他地块影响了整体的显示。
判别地块a的图幅外框是否与地块b的外接矩形存在重叠即可判定是否存在压盖现象,同时也可作为判定重复输出的依据。
在找出会两两产生压盖现象的地块后,计算该两地块的几何中心,据此判断是否产生地块部分显示不全问题,若不存在,则将两地块合并为一个集合,看作一块地块,两地块的几何中心为该集合的中心,两地块的外接矩形为该集合外接矩形,重新参加计算。
设地块a、地块b为待判别地块,图幅参数为W,H则判断过程为:
算法流程圖如下:
4 实例验证
陕西省榆林市神木县在某次报批中,122块地块分布在约1000平方公里的范围内,经程序处理,花费15分钟共将118块地块处理完毕,并生成jpg格式图片110张,110张图片均正确,批量打印耗时45分钟;4块地块中由于1块地块面积过大被标记,另3块地块合并集合处理失败。人工对其进行了处理并打印,耗时30分钟。
陕西省榆林市榆阳区在某次报批中,26块地块分布在约300平方公里的范围内,经程序处理,花费5分钟共将25块地块处理完毕,并生成jpg格式图片24张,24张图片均正确,批量打印耗时15分钟;1块地块中由于其面积过大被标记。人工对其进行了处理并打印,耗时5分钟。
5 结论
该算法在处理具有特殊性的油气井用地项目时有较好效果,可以正确、迅速的区分地块并根据设定的参数输出图幅文件,可较大降低人力成本。但当地块数量上升时处理速度会有不同程度的降低,无法处理超出图幅范围的地块;当多个小地块距离相近时算法会反复将合并后的集合加入计算,无法取舍导致计算量急剧增加,只能添加跳出判断,人工处理这些地块。这也将作为下个阶段的研究内容。
参考文献:
[1] 韩霁昌.土地工程概论[M].北京:科学出版社,2013:6-7.
[2] 地籍管理文件汇编,内部资料.
[3] Microsoft MSDN Library.
[4] ArcObjects For .Net.