基于ArcEngine的海域集约利用系统的设计与开发

2020-06-26 02:45柯丽娜梁婷婷宫国伟王姝婷李云昊
关键词:集约海域利用

柯丽娜, 梁婷婷, 宫国伟, 王姝婷, 李云昊

(1.辽宁师范大学 地理科学学院,辽宁 大连 116029; 2.大连勘察测绘研究院有限公司,辽宁 大连 116021)

近年来,陆地资源减少、人口膨胀,导致沿海地区承受了人类高强度的开发利用[1].海洋资源的不合理开发利用导致沿海地区环境污染严重、海域资源短缺滥用、海域生态环境破坏等一系列问题,沿海地区海域资源的可持续利用受到了巨大挑战[2-3].因此,研究如何优化配置海域利用结构,提高海域资源使用效率成为促进社会、经济、生态可持续发展,保障人海协调发展的一种重要的海域利用方式,探讨海域集约利用状况具有现实意义.

现有的集约利用理论和评价方法研究主要针对陆地区域,纪陈飞[4]和倪超[5]等人探讨不同土地类型的集约利用状况;姚成胜[6]、王秀圆[7]和王鹏飞[8]等人研究土地集约利用情况与其他影响因子之间的关系;李武龙[9]和陆晓蕙[10]等从指标体系和评价方法等角度探讨土地集约利用状况.当前,相对于陆域,关于海域集约利用的研究较少,仅侧重于对海域集约利用的概念和内涵的探讨以及对集约用海造成的海洋资源、生态影响进行评价.柯丽娜等[11]将生态系统管理理论和海域集约利用相结合,从多方面出发建立海域集约利用评价的指标体系,对河北省沿海地级市的海域集约利用状况进行定量评价和分析;Rollo等人[12]利用SAWT模型研究导致海岸带水环境变化的影响因子;李志伟等[13]首先研究了集约用海工程给海洋资源所带来的影响,在此基础上建立集约用海对海洋资源影响的综合评价指标体系;邢文秀等人[14]提出养殖用海集约利用的含义,并从多方面出发构建养殖用海集约利用评价指标体系,并以我国9个沿海省、市、自治区为例进行实证研究.综上所述,现有的海域集约利用评价方法大多数基于土地集约利用评价,基于简单的数学模型,为了实现海域集约利用评价过程和评价信息的可视化表达和自动化输出更为便捷.本文基于Visual Studio 2010开发平台,结合嵌入式ArcEngine组件库,引入可变模糊数学模型并与GIS空间分析方法相结合,设计开发出基于ArcEngine的海域集约利用系统,实现海域集约利用状况的实时动态显示.并将该系统应用到辽宁沿海城市海域集约利用评价中,实现了辽宁沿海城市海域集约利用评价结果的直观、可视化显示,为海域集约利用评价和海域资源的合理利用和规划提供理论依据和技术支撑.

1 关键技术简介

随着地理信息系统(GIS)技术在各个应用领域的不断发展和推广使用,应用型地理信息系统主要有独立开发、单纯的二次开发和集成二次开发3种开发方式[15].其中,集成二次开发最为常用,其以面向对象的可视化开发工具为平台,如Visual Studio、Visual Basic、JAVA、Eclipse等,并结合专用的GIS工具软件或对应的组件进行特定功能的二次开发.目前有多种方法可实现集成二次开发,但是组件式二次开发不仅可以利用工具软件实现数据库的管理、分析等功能,而且可以利用其他可视化开发语言,既能大大提高应用系统开发效率,又方便、程序移植性好,便于推广和维护[16].

ArcGIS Engine是美国ESRI在ArcGIS9版本才开始推出的新产品,一套完整的基于COM技术的嵌入式GIS组件库和工具库.它支持COM、JAVA、NET和 C++等多种开发语言,并且能够在Windows和Unix等平台上运行.开发者利用ArcEngine既可以开发出完整的 GIS 工具软件独立使用,还可以将GIS的功能嵌入已有的应用程序集成配合使用,为广大用户提供专门完善的定制应用[17].而且使用ArcGIS Engine开发的应用程序可以脱离ArcGIS Desktop而独立运行.因此,本文利用独立的嵌入式 ArcEngine组件,并与C#语言相结合,在当前最广泛应用的Visual Studio 2010平台下设计和开发基于GIS技术的海域集约利用系统.它包含了一套建设完整GIS系统的应用软件,这些软件可以互相独立或集成配合使用,为不同需求的用户提供完善的解决之道.

2 系统设计

2.1 系统结构设计

目前,3层结构框架已经成为软件开发领域的基础结构[18].其基本思想是在表层与底层之间增加一个业务逻辑层,其作为表现层与数据层之间沟通的桥梁.其中,系统的数据层包含属性数据库和空间数据库;位于表现层与数据层中间的是业务逻辑层,封装了对数据进行的逻辑运算,通过组件式设计实现海域集约利用系统的各模块功能;表现层位于最外层,通过DoTNeTCharting和DoTNeTBar控件接收用户输入的数据和显示数据,实现对海域集约利用程度的统计、分析和结果的输出等需求,是用户与软件系统进行人机交互的界面.利用此框架可大大减少各功能模块和数据之间的依赖性,更好地增强系统的复用性,缩短和降低了用于系统开发和维护的时间和成本(图1).

图1 海域集约利用系统结构设计框架

2.2 系统功能设计

本系统利用海域使用现状调查数据和动态监测数据,结合海域集约利用评价指标和可变模糊数学模型,分析辽宁沿海城市海域空间集约利用程度.本系统的主要模块包括基础数据模块、GIS视图模块、海域集约评价模块及空间分析模块4个模块.各模块具体功能如图2所示.

图2 海域集约利用系统功能

2.2.1 基础数据模块 数据模块主要实现对地图文件的管理,包括shp、mxd、coverage等常见格式数据的加载、保存和关闭、修改后的各种地图空间数据格式的另存、输出海域集约利用评价结果以及导出制图成果等、海域利用空间数据的点、线、面的编辑等以及对空间要素进行查询,并将满足制定指定的海域空间要素在地图上高亮显示.海域利用空间要素的查询包括按属性条件查询、按位置条件查询、按图形属性查询等.

2.2.2 GIS视图模块 利用PageLayoutControl、axMapControl等控件在系统中实现图层显示、页面布局和地图鹰眼窗口界面显示等功能,支持矢量、栅格数据图层的加载.数据视图支持用户对地图放大、缩小、移动、缩放至图层等操作.版面视图下可以实现对海域集约评价结果地图进行编辑、打印、保存等功能.鹰眼视图可以做到与主窗口的实时联动,宏观把握当前窗口在全图的位置信息.

2.2.3 海域集约评价模块 海域集约评价模块是本程序的核心模块.该模块主要通过人机交互,根据海域使用现状数据,结合海域集约利用评价指标与可变模糊模型,实现对沿海地区海域集约利用情况进行综合评价和研究.该模块主要实现评价指标体系管理、指标标准的确定、可变模糊法评价3个功能.图3为本文海域集约利用的指标体系框架.

图3 指标体系框架

2.2.4 空间分析模块 具有较强的空间分析能力是GIS的主要特征,主要用于实现将同一地区和同一比例尺的海域集约利用评价结果进行叠加分析、缓冲区分析、栅格插值以及栅格计算等功能.

3 系统功能实现

3.1 系统基本功能实现

3.1.1 空间要素查询功能的设计与实现 本模块提供3种空间要素查询方式,即空间数据的属性、位置和图形信息查询,符合条件的海域区块会高亮显示.点选海域利用区块后,该海域区块的属性数据可通过窗口查看.按数据属性查询主要通过调用 GetIdentifyResult (IMap tMap, IGeometry tGeometry, IScreenDisplay tScreen Display)方法实现.此方法包含IMap、IGeometry和IScreenDisplay 3个参数,分别用于获取查询的地图对象、查询的地理要素,最后将符合条件的空间要素在屏幕上高亮显示.主要使用代码如下:

Private IArray GetIdentifyResult (IMap tMap,IGeometry tGeometry,IScreenDisplay tScreen Display)

{

IArray thArray=null;

IIdentify2 tIdentify;

ILayer sLayer;

int sLayerCount=t MapLayerCount;

for(int m=0;m

IArraytTempArray=null;

sLayer=tMap.getLayer(m);

if(sLayer.Visible==true) {

tldentify==(ldentify2)sLayer;

tTempArray=tIdentifty.Identify(tGeometry,tScreenDisplay.CancelTracker);

if(tTempArray!=null){

if(thArry!=null){

int sCount=tTempArray.Count;

for(int n=0;n

thArray.Add(tTempArray.getElement(n)); } }

else{thArray= tTempArray;} } }

} return thArray;

3.1.2 鹰眼功能的设计与实现 利用鹰眼窗口,用户可以很直观地看到主视图中的要查看的区域在整个地图范围内的位置.鹰眼功能实现代码如下:

t Map = ax Map Control1.Map;

ax Map Control2.Clear Layers();

for (int m=0; m < tMap.Layer Count; m++) {

ax Map Control2. Map. AddLayer (tMap.getLayer(m));}

ax Map Control1.Extent = ax Map Control2.Full Extent;

3.2 系统关键功能实现

3.2.1 海域集约评价功能的设计与实现 海域集约利用评价模块是本系统的核心,主要包括3个子模块,分别为“评价指标因子的管理”“评价指标标准区间的建立与管理”与“可变模糊评价”.

(1)评价指标因子的管理

评价指标因子的选择和建立最为重要,是进行海域集约利用评价的关键.本系统对收集到的各种表征集约利用水平的属性数据进行遴选后,建立不同的属性表:海洋资本投入强度数据表、海洋开发利用结构程度数据表、海洋经济效益数据表和海洋生态环境数据表等.在设计每一个属性表时,注意要将每个字段的名称定义的通俗易懂,字段类型要统一,并为每一个数据表建立主键,使之仅代表一条数据.为了降低数据的冗余度,需要定义外键,使相关的数据表之间通过外键相互联系.然后向建立好的海域集约利用评价数据库中录入与海域集约利用有关的属性数据.最后经过仔细检查形成属性数据库.

(2)评价指标标准区间的建立与管理

首先利用系统的ComboBox控件选择某一指标与该海域集约开发利用评级的相关性.再通过人机交互的方式确定海域集约利用各评价指标标准,将各海域集约利用评价的指标取值范围进一步划分为不同等级区间.如海岸线利用率指标可以反映海岸线的合理开发利用程度,因此,在此窗口中运算符应选择正相关性,并将利用率值范围分为5类.

(3)可变模糊评价

可变模糊评价分析[19]是本系统的关键.首先利用海域集约利用评价指标数据、构建的样本特征值和指标标准值矩阵,并结合集约利用评价对象的标准值区间计算相对隶属度,确定每个评价指标因子的影响权重大小.然后计算不同参数的4种组合结果,并计算其模糊级别特征值,再计算4种组合的平均值,从而得到海域集约利用分级结果.再于表中添加列名和分级结果两个字段,通过for循环完成海域集约利用数据的模糊评价及表的更新,得到各海域开发利用斑块的分级级别值.通过ArcEngine中的setValue方法将评价结果添加到相应图层数据的属性表中,并将 “评价结果”字段进行内插,最终在该海域集约利用系统中呈现出不同城市区域的集约利用情况.主要代码如下:

public void()

l= new float[point, 5];

t= new float[point, 5];

floatsi= (float)1.0/ (stand - 1);

for (int m=0;m < point; m++){

for (int n= 1;n < stand; n++){

for (int q=0;q<= 4; q++){

b[m, q] += (float)(p[m,n,q] * si); }}}

for (int m=0;m< point; m++) {

for (int n=0;n<= 4;n++){

g1[m,n]=t[m,n]} };

for (int m= 0;m< point; m++){+

gr1[m]=g1[m,0]*1 +g1[m,1]*2+g1[m,2]*3+g1[m,3]*4+g1[m,4]*5}};

for (int m= 0;m< point; m++){

float temp = (gr1[m] + gr2[m] + gr3[m] + gr4[m]) / 4; grsum[m] = Round(temp, 0) };

table1.Columns.Add("a=1,p=1");

table1.Columns.Add("a=1,p=2");

table1.Columns.Add("a=2,p=1");

table1.Columns.Add("a=2,p=2");

table1.Columns.Add("评价结果");

for (int m= 0; m< grsum.Length; m++){

DataRow row = table1.Rows[m];

row["l=1,w=1"]= gr1[m];

row["l=1,w=2"]= gr2[m];

row["l=2,w=1"]= gr3[m];

row["l= 2,w=2"]= gr4[m];

row["评价结果"] = grsum[m];}

dataGridView1.Refresh();

3.2.2 反距离权重插值功能的设计与实现 反距离权重是一种常见的全局插值方法,该算法将插值点与样本间的距离作为权重进行加权平均计算.距离插值点越近的样本受到的影响越大,赋予的权重越大[20].该方法简便易操作, 考虑了距离与方向因素, 结果较为合理且对于数据来说是有意义的.但是易受数据集的影响,对权重函数的选择特别敏感.反距离权重插值适用于表现出分布均匀而且足够密集以反映局部差异的样本点数据集的场景,关键代码如下:

static void GetDistance() {

for (int m=0; m< points.Length; m++) {

points[m].d = Math.Sqrt(Math.Pow

((point.x-points[m].x),

2) +Math.Pow((pointy-points[m].y), 2));}}

static void GetWeight(int n)

{double x = Getx(n);

for (int m= 0; m< points.Length; m++)

{points[m].w = Math.Pow((1/points[m].d),n)/

x;}

}

4 海域集约评价系统应用

应用本文中设计的海域集约利用系统对2014年辽宁沿海城市海域集约利用评价进行分级.将海域集约利用度分为Ⅰ、Ⅱ、Ⅲ、Ⅳ、Ⅴ5个等级,分别对应精细、高度、中度、低度和粗放集约利用.其中,利用度等级越高代表该海域集约利用程度就越好.辽宁沿海经济带中,只有营口市的集约利用等级达到精细利用,大连、锦州和盘锦达到高度集约利用,而丹东与葫芦岛的集约利用等级分别为中度和低度.将集约利用等级结果与辽宁沿海经济带经济发展政策相结合研究,发现辽宁沿海经济带自2009年进入国家战略之后,海域集约利用程度整体发展迅速,接着又提出“一核、一轴、两翼”的总体布局框架,使大连—营口—盘锦“一轴”的集约度相对较高,而“两翼”的布局也比较明显,葫芦岛、丹东的海域利用集约度水平明显低于其他市.区域协调有序发展对于各市也显得尤为重要,因此,政府在制定区域发展战略时要合理分配各市资源.

5 结束语

针对目前海域开发利用的现状和海域集约评价的需求,本系统利用海域调查数据、现场勘测数据和海域使用动态监测数据等,基于美国ESRI的ArcGIS系列产品中的ArcEngine嵌入式组件库,将可变模糊数学模型与GIS空间分析手段相结合,在.Net VS2010平台下进行二次开发设计实现了基于ArcEngine的海域集约利用系统,并实现了海域集约利用度空间分布状况的实时动态显示.将该系统应用到辽宁沿海经济带的海域集约利用评价中,实现了辽宁沿海城市海域集约利用综合评价结果的直观、可视化显示.本系统完整地实现了GIS编辑、数据处理、空间分析以及海域集约利用评价功能,对当前海域开发利用情况分析有较强的现实意义,并可为海域评价提供参考.

猜你喜欢
集约海域利用
利用min{a,b}的积分表示解决一类绝对值不等式
遗落海域
埕岛海域海上独立桩拆除方案探讨
利用一半进行移多补少
利用数的分解来思考
Roommate is necessary when far away from home
我国海域天然气水合物试采成功
牢筑节约集约“高压线” 严守国土资源“生命线”——玉环县成功创建全国国土资源节约集约模范县
集约转型 小城镇发展之路
海域评估技术指引