APP下载

基于ArcGIS Engine与C#.net的地块合并功能的实现

2018-11-17孙毓蔓左小清苏文豪

软件 2018年10期
关键词:界面设计控件组件

孙毓蔓,左小清,苏文豪



基于ArcGIS Engine与C#.net的地块合并功能的实现

孙毓蔓,左小清,苏文豪

(昆明理工大学 国土资源工程学院,云南 昆明 650500)

近几年来,随着我国计算机技术不断的发展,ArcGIS是出现在了人们的视野当中,它是ESRI全面整合的GIS数据库、人工智能、软件工程、网络技术等其他多方面的计算机技术后,成功推出的能够代表GIS最高技术水平的GIS平台。我国的GIS技术是基于ArcGIS Engine技术而发展起来的,它的理论基础也大都是源于ArcGIS Engine开发的理论,因此本文主要是结合近年来关于ArcGIS Engine在GIS发展的技术领域取得的理论和实践相结合的经验,将GIS基础框架重要数据源的地图要素,这里采用C#语言和COM组件技术,将实现属性表的查询,将小于等于给定值的地块合并到周围最大的地块中的功能实现,节约手动所耗费的时间,并且其在土地利用,地籍整改等方面有着很重要的实际意义。

地理信息系统(GIS);ArcGIS Engine;地块合并

0 引言

近年来,随着我国有关GIS技术的不断发展进步,有关其技术的二次开发功能也有了相当多的研究。在GIS软件开发领域中,组件技术的日趋成熟成为计算机开发的主流[1]。组件式GIS的开发平台具有一定功能性,能够使GIS功能嵌入在非GIS软件中,成为一体化的应用。或者将其他软件功能也引入GIS软件平台,从而使GIS技术与其他应用相结合,成为一体化的应用。组件式GIS可以合理选择和运用现有ActiveX的控件[2]。其方法实现具体的应用不仅仅减少了开发者的编程工作量,使开发者避开某些应用的具体代码,可以直接去调用控件,这样不仅仅可以缩短程序开发周期,使编程过程更简洁,用户界面更友好,而且可以使程序更加灵活、简便。ArcGIS Engine的技术的研究和探讨,就是组件式GIS的产物[3]。

ArcGIS Engine无论是在理论上还是在实践上,都有了突飞猛进的发展。以前我国大多数的地图制图的系统是以AutoCAD为开发平台的,很多地理数据都以CAD格式存储[4]。但是其从地理信息系统的角度来看,CAD平台缺乏对空间数据的分析功能,而ArcGIS Engine可以进行桌面端的应用,并且能对已存在的空间数据进行建模、管理和分析,使表达GIS地理空间要素能够在一个统一的模型框架下。而在发展的今天,利用其开发特点,对各行各业上都有了一定的发展[5-9]。例如不管是已开发的土地利用系统或土地管理系统采用的处理方法已经远远不能满足土地管理的需要。随着地块数据的增加和信息更新速度的加快,可以利用 ArcGIS Engine开发出自己想要实现的功能。在本文中实现了可以将许多地块可以根据设定的条件(例如面积等),将值小的地块批量合并。本程序可以利用ArcGIS Engine的C#实现的地块管理系统的功能有条件查询功能、缓冲区功能、图形要素合并功能等。

1 相关技术的研究介绍

1.1 关于ArcGIS Engine研究介绍

ArcGIS Engine是ESRI公司在ArcGIS 8X基础上推出的具有COM组件式功能的ArcGIS 9家族中的新成员之一,它具有可以跨越所有ArcGIS控件来进行开发的特点,一经问世便备受人们关注。ArcGIS Engine是基于COM的集合,可以被任何支持COM的编程语言所调用,如C#与VB[10]。ArcGIS Engine是与ArcGIS 9.0同时推出的用于建立自定义独立地理信息系统(GIS)应用程序的平台。它是基于ArcObjects构建的,通过它可以脱离相关工作环境进行独立的运用和操作。借助它进行GIS应用开发可以脱离ArcGIS Desktop环境提高了开发效率。ArcGIS Engine支持四种界面模式,可以同时与多个界面进行互动操作,它是目前我国比较前沿的技术成果,它具有安全性和多功能性,能够比较好的完成相关工作,它的开发也将是该项技术史上的一大进步。这GIS组件是主要以ArcGIS Engine和Visual Studio.NET为开发平台的[11-12]。开发者使用 ArcGIS Engine 开发包构建应用程序,并通过 ArcGIS Engine Runtime 的软件许可将这些程序分发给最终用户。ArcGIS Engine开发包包括三个关键部分[13-14]:(1)控件:它是 ArcGIS用户界面的组成部分,开发人员可以直接嵌入并在应用程序中使用。关于ArcGIS Engine的控件包括PageLayoutControl、MapControl、ReaderC-ontrol、ToolbarControl、TocControl、SceneControl、GlobeControl等可以用来展示交互式地图。(2)工具:它主要包括各种选择工具如点击查询、缩放、旋转、平移和与地图交互等功能。工具在应用界面上以工具条的方式展现。并且进行调用一些常规工具、工具条和容器等来进行实现一些应用开发,并且开发者可以定制应用中或创建自己定制的工具来实现与地图的交互通过将选择的工具拖放操作。(3)类库;它是ArcObjects组件的集合,其有从几何图形到制图,加载GIS数据源等一系列功能[15]。并可以通过大多数开发的应用环境来进行访问。其开发包的组成如图1所示:

1.2 有关要素合并的研究介绍

地理信息系统中有许多图形要素的信息,而空间地理数据大多数都来源于地形图,纸质地形图又是一种最基本的空间数据源。其中分幅的图幅设计的方法人为地将连续的地表空间划分成若干个子空间[16]。为了能够增大要素的范围,就可以将一个或多个要素进行合并,尤其在地籍系统中,将要素合并是其中的重中之重,此功能是为了更加方便的将大量要素进行合并,这里不仅可以减少数字化制图人员工作量还使处理效率大幅度提高,并且具有一定的逻辑性[17]。其表现出来的结果能够更符合用户的需求,更满足用户提出需要某区域的基础数据愿望。而在ArcGIS中的ArcToolbox工具箱中有4种常用的将多个要素类合并成一个要素有Union、Merge、Dissolve、Append等。

2 地块合并功能的实现的结构设计

该功能是基于ArcGIS Engine C#语言实现是将实现小于等于给定值的地块合并到周围最大的地块中的功能实现,手动所耗费的时间。其在土地利用,地籍整改等方面有着很重要的实际意义。

2.1 地块合并功能设计

由ArcGIS Engine开发包.NET开发环境C#调用ArcGIS Engine中组件。使用ArcGIS Engine的开发包可以实现如下功能:分层显示专题图;浏览、缩放地图;在地图上检索、查找特征要素;通过SQL语句来查找要素;要素合并;产生缓冲区距离。这里构建地块信息管理系统的处理模块[18]如图2所示:

图1 ArcGIS Engine开发工具包组成

图2 地块合并总体功能实现

2.2 地块合并功能的实现界面设置

程序功能采用Visual Studio.NET 2012中的C#.Net为开发平台。运用组件式ArcGIS Engine中的MapControl、TOCControl、ToolbarControl开发控件来执行用户需要的图形交互操作[19]。以及自定义的功能按钮与属性的设置,其功能界面设计如图3与表1所示:

图3 总界面设计

表1 总界面设计属性

Tab.1 Total interface design properties

SQL属性查询主要是用来根据此功能是通过点击主窗体上的SQL查询按钮,触发其点击事件,然后将所选择的显示在图层中为其合并要素打下基础。其SQL属性查询界面设计如图4与表2所示:

图4 SQL属性查询界面设计

表2 SQL属性查询界面设计属性

Tab.2 SQL attribute query interface design properties

在合并要素的过程中,将实现小于等于给定值的地块合并到周围最大的地块中的功能实现其合并要素界面设计如图5所示。

图5 合并要素界面设置

3 地块合并功能的实现原理

3.1 地块合并的基本原理与实现

该程序实现的功能为合并查出面积小于给定值的要素,并合并到相邻地块中最大地块中,该程序有一定的逻辑性,需要根据选择语句进行嵌套来对该功能实现,其关键步骤如下:

第一步:判断所有地块是否小于等于输入的面积,遍历所有小于等于输入的面积的地块pFeature。①

第二步:判断并遍历所有大于输入的面积的地块pFeature2。②

第三步:判断面积大于设定值的要素是否与面积小于设定值的要素相临。

第四步:分别遍历与面积小于设定值的要素相临大于设定值的要素并比较,将面积最大的赋给将被合并较大的地块pBaseFeature。③

第五步:显示将被合并的面积较大的地块pBaseFeature。

第六步:将所有的小于并等于的输入值的面积实现合并到相邻的最大面积中。

其中①pFeature是所有小于等于输入面积的地块、②pFeature2是所有大于输入面积的地块、③pBaseFeature是所有将被合并到的地块。其关键部分的流程图如图6所示:

3.2 关于地块合并实现的结果图

程序进行了小于等于给定值的地块合并到周围最大的地块中的功能实现,并显示了要合并的地块的面积中,例如输入面积10068330.3,会同时将面积7772770.8合并到37423900.6和将面积10068330.3合并到48648905.6的面积中如图7所示,原始图与合并后的对比图8所示:

3.3 与现已有的ArcGIS软件合并功能的比较

在ArcGIS中的工具箱有4种较常用的将多个要素类进行合并,但是其分别有一定异同之处。例如Union、Merge Dissolve、Append不同处如下。

(1)Union的功能:其合并时图形只能合并类型为polygon(面)要素类。两个要素类合并时会进行处理相交部分,使之单独形成要素,新产生的要素在目标图层中产生。其合并到新的要素类中。

(2)Merge的功能:其合并后原来的要素消失。merge不处理要素,所以输出的要素类可能会有重叠或缝隙。

图6 地块合并关键部分的流程图

图7 显示要被合并的地块的面积

(3)Append的功能:主要是将多个要素进行合并。比如将两个省的数据合并到一个要素类中。但必须是相同类型的。

(4)Dissolve的功能:可以把多个要素,通过指定的属性(属性值相同),溶解成一个要素,例如:可以将县溶解成市。但会丢失没有指定的不同的属性。

而本功能的合并可以将所有小于给定值的面积进行合并,这里在对比Union、Merge、Dissolve、Append的方法中进步之处是它可以大量的按照一定法则进行地块的合并可以去除所有小块的面积,节约手动所耗费的时间,并且其在土地利用,地籍整改等方面有着很重要的实际意义,其只能合并类型为polygon(面)要素类使之单独形成要素,新产生的要素直接在目标图层中产生。

图8 原始图与合并后对比图

4 结论与展望

4.1 结论

地理信息系统技术的应用大大地提高了处理地理数据的工作效率。而采用组件式COM结构的地理信息系统,不仅仅可以降低开发难度,缩短程序开发周期提高开发效率,使编程过程更简洁,用户界面更友好,增强了系统的灵活性,而且可以使程序更加灵活、简便。利用ArcGIS Engine在系统中实现地图的操作,并结合。NET平台开发的地理信息系统是具有一定应用前景的[20]。当然,系统开发是一个复杂的过程,随着相关技术的不断发展,而一个功能的实现也有在系统应用开发中有着举足轻重的意义。

4.2 展望与不足

本功能主要是将实现小于等于给定值的地块合并到周围最大的地块中的功能实现,节约手动所耗费的时间,并且其在土地利用,地籍整改等方面有着很重要的意义。不过在要素合并中,可以根据各种条件,例如根据距离,将所有产生的缓冲距离所包含的地块进行合并,或者根据OID即当前要素OID为主关键字。将小于比较要素的OID放在最外层,就是说按照取出递增次序严格按照OID值递增的规则进行比较。例如该程序只会比较1-2、2-4要素而不会再比较2-1、2-2 要素。这样减少了许多不必要的要素进行合并条件判断,将大部分不满足合并条件的地块要素比较早的排除。或者根据地物所有的不同的属性进行相关的逻辑合并。而本功能只进行了小于等于给定值的地块合并到周围最大的地块中的功能实现,合并功能并没有完整的实现。同时基于ArcGIS Engine最终是为了实现系统化展示,该功能只能在ArcGIS Engine中作为add—in插件进行整合,而对其它系统中不能进行整合。

[1] 牟乃夏, 王海银, 李丹等. ArcGIS Engine地理信息系统开发教程-基于C#. NET[M](2015年版). 北京: 测绘出版社, 2015. 11-12.

[2] 肖庆. 组件GIS二次开发技术研究[J]. 软件导刊, 2008, 7(11): 148-150.

[3] 张正祥, 张洪岩. ArcObjects组件在地理信息系统二次开发中的应用[J]. 遥感信息, 2004, 10(2): 66-68.

[4] 刘文利. CAD与GIS数据的可视化转换方法研究[J]. 软件导航, 2011, 10(2): 16-17.

[5] 赵俊三, 尹鸿俞, 杨军等. 土地利用规划管理信息系统技术方法研究[J]. 矿山量测, 2003, 6(4): 7-10.

[6] 原方圆, 马书南, 雷伟, 等. 高安全性数字化档案管理系统的设计与实现[J]. 软件, 2018, 39(7): 98-102.

[7] 沈亮. 基于手机APPGISOLAP 的移动运营商网格集中管理中心系统的设计与实现[J]. 软件, 2016, 37(4): 74-83.

[8] 周洲, 侯开虎, 张慧等. 基于. NET平台的物料管理系统的设计与实现[J]. 软件, 2018, 39(7): 177-181.

[9] 谌迅. 大数据资产管理系统的设计与实现[J]. 软件, 2016, 37(02): 50-53.

[10] 吴玮, 李小帅, 张斌. 基于ArcGIS Engine 的GIS开发技术探讨[N]. 研究简报, 2006-5-8(2).

[11] 龚纯伟. 基于ArcObjects 的地理信息系统二次开发与实现[D]. 昆明: 昆明理工大学, 2005.

[12] 兰小机, 刘德儿, 魏瑞娟. 基于ArcObjects与C#. NET的GIS应用开发[M]. (2013年版). 北京: 冶金工业出版社, 2013, 61-81.

[13] 张斌. 基于ArcGIS Engine的GIS开发技术[N]. 武汉大学研究生学报, 2004-3-8(2).

[14] 丁黎, 王翠平, 马静等. ArcGIS Engine的GIS开发技术初探[J]. 山西建筑, 2007, 33(17): 22-26.

[15] Goodchild M. Geographical Information Science[J]. Journal of International Geographical Information System, 1992, 6(1): 31-45.

[16] 徐昌荣, 刘烜, 朱卫东. 基于ArcGIS Engine的地图要素合并方法研究与实现[J]. 测绘科学, 2009, 34(4): 206-207.

[17] 刘翔宇, 朱大明. Arcgis中基于Python的地理数据库批量合并方法研究[J]. 软件, 2018, 39(7): 161-165.

[18] 肖泽云. ArcGIS Engine开发实例教程[M](2006年版). 北京: 清华大学出版社, 2006, 1-60.

[19] 曾光清, 陶佩枫. 组件式GIS(地理信息系统)的研究[J]. 湖南有色金属, 2007, 32(2): 65-67.

[20] Michael F. The National Center for Geographical Information System and Anlysis[J]. Surveying and Land Information Systems, 1990, 50(2): 82-90.

Implementation of Block Merging Function Based on ArcGIS Engine and C#.net

SUN Yu-man, ZUO Xiao-qing, SU Wen-hao

(Kunming University of Science and Technology, College of Land and Resources Engineering, Kunming 650500)

In recent years, along with our computer technology unceasing development, ArcGIS is appeared in people's field of vision, it is many other aspects of the full integration of the ESRI GIS database, artificial intelligence, software engineering and network technology, computer technology, successfully introduced to the highest level of technology in the GIS platform. GIS technology of our country is developed based on ArcGIS Engine Technology, the theory foundation of mostly source in ArcGIS Engine development theory. Therefore, this paper is mainly combined in recent years ArcGIS Engine in the technical field of GIS development has to combine theory and practice experience, will be an important source of GIS basic frame data, map elements, here is the C# language and COM component technology, will achieve is less than or equal to the given value of land consolidation to maximum around the plots in the function realization, save manual consuming time and in the land use, cadastral rectification has a very important significance.

Geographic information system; ArcGIS engine; Parcel union

TP311.52

A

10.3969/j.issn.1003-6970.2018.10.029

孙毓蔓(1994-),女,研究生,主要研究方向:GIS数据处理与遥感应用;左小清(1972-),男,教授,主要研究方向:测量与 GIS 方向;苏文豪(1995-),男,研究生,主要研究方向:土地管理与遥感应用。

孙毓蔓,左小清,苏文豪. 基于ArcGIS Engine与C#.net的地块合并功能的实现[J]. 软件,2018,39(10):150-155

猜你喜欢

界面设计控件组件
《京燕儿》APP界面设计
中医养生APP界面设计
“共享员工”平台界面设计
无人机智能巡检在光伏电站组件诊断中的应用
面向智能手机的UI界面设计
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
风起新一代光伏组件膜层:SSG纳米自清洁膜层
ASP.NET服务器端验证控件的使用
Spreadsheet控件在Delphi数据库系统中的编程与应用