APP下载

基于ArcGIS Engine征占用林地制图排号系统的设计与实现

2023-02-20丛喜东魏军冯亚男梁志强

林业科技 2023年1期
关键词:图幅图斑号码

丛喜东 魏军 冯亚男 梁志强

(1 黑龙江省生态研究所,黑龙江 哈尔滨 1500810;2 自然资源部第三地形测量队,黑龙江 哈尔滨 150025;3 黑龙江省自然资源权益调查监测院,黑龙江 哈尔滨 150080)

建设项目征占用林地的制图工作是一项操作繁杂的过程,其中地块排号是制图的一个重要的基础步骤。在传统GIS在排号的过程中,需要加载编辑图层,对选中的地块进行逐图斑进行添加或修改其属性信息,在地块较多的情况下,效率较低,且无法实现走向一致的斑块的批量排号,也无法实现号码的自动增加,在排号的过程很容易出现错漏,需要对错误的编号进行重新梳理,重新进行排号操作,极大地影响工作效率。本文通过综合分析和梳理建设项目征占用林地的业务流程,研究地块排号功能实现,旨在达到满足快速实现排号的目的,有效提高地块排号的效率。

1 关键技术

1.1 ArcGIS Engine技术

ArcGIS Engine是美国ESRI公司推出的一套功能完备的嵌入式GIS组件库和工具库,用户可以基于ArcGIS Engine和业务工作实际开发出满足业务需求的GIS软件系统,并可以脱离ArcGIS桌面端而独立运行[1]。ArcGIS Engine支持多种开发语言,如C#、JAVA等[2]。包括控件、工具条和对象库3个关键部分,控件是通过嵌入方式成为GIS程序的用户界面组成部分;工具条是进行地理信息交互的GIS工具集合;对象库是ArcObject的几何图形、GIS数据源和Geodatabase的集合[3]。

1.2 C#技术

本系统使用C#作为程序设计的语言。C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。可以快速地编写基于Microsoft.NET平台的应用程序[4]。.NET框架(.NET Framework)是由微软开发,致力于敏捷软件开发、快速应用开发、平台无关性和网络透明化的软件开发平台。

1.3 空间数据库(GeoDataBase)技术

空间数据库(Geodatabase)是一种采用标准关系数据库技术来表现地理信息的数据模型,它支持在标准的数据库管理系统(DBMS)表中存储和管理地理信息。Geodatabase是地理数据的顶层部分,它是数据集、要素类、对象类和关联类的集合[5]。在数据库中,通过要素数据集、栅格数据集和TIN数据集三种地理数据集来实现,其中要素集是具有相同坐标系统的要素类的集合。对象类、要素类和要素数据集是数据库中的基本组成部分。数据库中创建上述内容,可以向数据库中加载数据,并进一步定义数据库的索引、拓扑关系,创建子类、几何网络、注释类、关系类等。

本文采用个人地理数据库(MDB),便于采用ADO.NET技术实现数据的统计分析。

2 数据库设计及功能设计

2.1 数据库设计

数据库设计采用个人地理空间数据库(.mdb),可以通过Microsoft Access软件进行打开,并通过SQL语句进行数据统计分析。

关键字段包括ID_L(数值型)、PX_L(数值型),x_coord(数值型)、 y_coord(数值型),分别用于存储要素唯一值,斑块排序号码、要素中心点横坐标、要素中心点纵坐标。

2.2 系统功能设计

系统功能设计方面,充分考虑到排号功能的完整性和实用性,结合传统GIS的功能进行功能设计(图1)。

图1 软件功能结构图

(1)常规功能。满足地理信息系统的数据视图空间要素的显示操作,实现图层的放大、缩小、移屏、全屏、上一视图、下一视图、选择、取消选择等功能。

(2)系统建库。创建个人地理数据库,用于存储矢量数据。

(3)矢量入库。将具有空间参考的建设项目征占用林地图斑矢量导入到个人地理数据库中。

(4)添加图层。将数据库中的占地图层添加到该系统中。

(5)坐标核算。自动计算占地图层的每个要素的中心横坐标X和纵坐标Y。

(6)排号操作。通过选择在走向一致的多个要素(或单个),按照所选要素的中心点的横纵坐标的升降序,进行顺延排号,并对错漏的斑块进行号码修改等。

1) X升序Y升序,按要素从左向右、从上向下的方向进行排号;

2) X升序Y降序,按要素从左向右、从下向上的方向进行排号;

3) X降序Y升序,按要素从右向左,从上向下的方向进行排号;

4) X降序Y降序,按要素从右向左,从下向上的方向进行排号;

5) 号码清除。清除选中要素的号码,针对排号不符合要求的图斑,在选择后进行排号清除;

6) 号码修改。选中需要修改排号的斑块,按目标号进行修改操作。

7) 号码为零。筛选号码为空或者为零的数据,并实现选中后定位到相应图斑。

8) 号码重排。按照已排序的斑块顺序,重新将号码从1开始累加排号,保证号码按整数1进行累加排序。

9) 图层标注。按相应标注字段进行图层标注显示。

10)图幅生成。根据占地制图标准生成图幅。

11)图层输出。将数据库中的图层输出矢量。

软件系统的功能结构图如下:

3 系统功能实现及应用

本系统数据库以个人地理数据库(MDB)进行数据存储,采用C#+ArcGIS Engine组件二次开发等技术进行系统研发,并实现系统的相应功能模块。

图2 系统主界面

3.1 系统功能实现

(1)系统建库。创建Base.MDB数据库,该数据库为ArcGIS的个人地理数据库,其格式为Microsoft Access的MDB数据库,可以实现空间数据和非空间数据共同管理,可通过结构化查询语言(SQL)对数据库中各类数据表的查询、分析、统计、管理等问题。

(2)要素入库。通过选择入库的矢量文件,自动将该矢量文件导入到Base.MDB库中,入库后的名称为“占地面”,便于后续软件功能进行识别使用。

(3)图层添加。通过选择个人地理数据库,将该数据库中的图层添加到软件系统中,用于排号操作。

(4)坐标核算。在占地面图层添加字段ID_L、PX_L、X_Coord、Y_Coord四个字段,均为双精度类型,其中ID_L用于存储要素ID值,PX_L用于存储图斑排号;对图层中的每个要素进行遍历,计算每个要素的中心点坐标,存储在X_Coord和Y_Coord字段中,用于坐标排序。

(5)图层标注,选择对应图层,根据PX_L字段的值实现标注。

(6)要素选择,通过选择按钮,选择图面中的欲排号要素,通过其他常规功能工具缩放或者移动到斑块位置。

(7)斑块排号。根据图斑走向选择图斑,并采用相应功能进行排序等操作

图3 排号功能

具体实现方法:

1)选择加入到软件系统中的排号图层;

2)获取图层被选中要素,并记录被选中要素ID_L字段的唯一值,放到临时列表(List)中;

3)求得被选中要素之外,最大的PX_L字段的值,以此为选中要素进行累加1的起始值;

4)被选中要素根据其走向,选择的对应的“排号”功能,按选中要素的横纵坐标(x_coord,y_coord)进行排序,根据排序结果,将相应要素的PX_L字段的值进行累加更新。实现代码如下:

5)排号清除。对于排号过程中存在的错误,通过选中排序存在错误的图斑,可将PX_L的值,统一修改为零,以便于重新进行选择排号;

6)排号修改。重新检查排号是否正确,当某图斑在排序的过程中,如果对于排号有错的斑块,可通过选择该斑块,单独修改该斑块序号为新序号;

7)排号为零。对存在漏排号的情况进行检查,可显示漏排号(PX_L为零)的斑块,单击列表记录,可定位到斑块位置,通过选择,修改排号功能,修改该地块编号,当编号无法整数值进行修改时,编号可带小数;

8)重新排序。在保证所有斑块均有没有漏排号的情况下,通过“编号重排”功能,按照已经排号的顺序,从小到大,进行从1开始累加排号。

9)图层标注。采用PX_L作为标注字段,用于在系统中显示排号结果,方便与检查和修改。

10)图幅生成。通过设置图幅比例尺和制图页面宽度,计算图幅实际地理位置的宽和高,通过占地范围包络线的左下角坐标开始,根据宽和高的值进行格网生成,并通过占地范围筛选生成的格网,形成最后的占地图幅。

图4 图幅参数设置

图5 图幅生成结果

11)图层输出。对Base.mdb数据中的占地面和图幅面以矢量方式输出,便于与其他地理信息软件衔接。

4 结 论

本文根据建设项目征占用林地业务中的制图生产实际需要,基于C#、ArcGIS Engine等技术,设计和实现了制图排号软件系统,该系统通过对排号业务进行流程规范化,简化操作步骤,解决常规GIS应用过程中的低效操作等难题,实现规范、便捷、高效图斑排号功能,为建设项目征占用林地制图工作提供了一个快速高效的软件系统。

猜你喜欢

图幅图斑号码
地理国情监测中异形图斑的处理方法
基于C#编程的按位置及属性值自动合并图斑方法探究
说号码 知颜色
土地利用图斑自动检测算法研究
一个号码,一个故事
猜出新号码
基于EXCEL的地形图图幅号转换查询方法
基于ArcMap的图幅接合表快速生成方法研究
地形图图幅编号规则及实现
这个号码很吉祥