APP下载

基于ArcEngine的城市空间扩展模拟系统开发

2017-01-04刘志晨徐惠民范环宇

国土与自然资源研究 2016年5期
关键词:城市用地自动机元胞

刘志晨,徐惠民,范环宇

(辽宁师范大学城市与环境学院,大连116029)

基于ArcEngine的城市空间扩展模拟系统开发

刘志晨,徐惠民*,范环宇

(辽宁师范大学城市与环境学院,大连116029)

目前国内外已有不少学者采用CA模型对城市用地扩展进行了研究,并取得了不少有意义的研究成果。基于上述现状,本次撰写的论文将在元胞自动机理论的支撑下,在Visual studio2013平台下利用C#语言结合ESRI公司的嵌入式开发平台ArcEngine组件开发包,编写一套可以实现模拟城市空间扩展的软件,将灰度局势决策运用到程序中,进行提取城市扩展时内在影响因素与规律,并将其作为元胞自动机的转换规律,再与地理信息系统结合来研究城市规划。结合了GIS系统使仿真结果得以展示,为将来研究区域土地利用规划提供决策依据。

元胞自动机;城市扩展;ArcEngine

城市化是一个复杂的时空转换过程,包括城市内部各类土地类型之间的相互转换以及城市不断对外扩展的过程。近年来,我国城市化速度不断加快,城市用地和人口规模迅速增大,为此不少学者采用CA模型对城市土地扩展进行了研究,CA已被越来越多的运用在城市模拟当中,并且取得了许多有意义的研究成果。如:1999年周成虎等人运用多年积累的研究经验提出了一个CA模型Geourban[1],2003年韩玲玲等人对四川德阳地区利用GIS与CA的集成进行了城市增长模拟和土地增值模拟[2],2005年吴晓军等人对陕西省10个地级市影响区利用CA求解加权Voronoi图进行了世纪的研究[3]。在2006年杨青生等人对深圳地区1988年至2010年的城市扩展进行了模拟预测,主要采用的CA非线性转换规则使用支持向量机确定的,试验结果显示采用SVM-CA模型比CEM模型的模拟结果更接近于显示,模拟精度更高[4]。国内一些学者提出分区特征的地理CA模型,并与城市规划相结合,均取得较好成果。但目前大部分的地理CA软件,很少是采用C#语言开发集成的,所以也很难使后续使用者加入新的算法继续使用。因此,本次研究是在传统CA模型的基础上,基于ArcGIS Engine函数库、C#编程语言、城市扩展的基本原理,开发设计一套元胞自动机城市扩展模型,实现了模拟城市的空间扩展。使用本次开发的GIS系统,仅需要安装Microsoft Visual studio2013、ArcGIS Engine Runtime以及相应的许可就能运行,不需要客户端再安装ArcGIS软件。

1 技术概要

美国ESRI公司的ArcEngine是一个用于建立自定义独立地理信息系统(GIS)应用程序的平台,支持多种应用程序接口(APIs),拥有许多高级GIS功能,而且还具有良好的跨平台、跨语言特点,利用这个特点,我们便可以快速方便地定制出用于模拟城市扩张的GIS应用系统。此次研究在Visual studio2013平台下,主要用到灰度局势决策去获取城市的转变规则,再利用C#语言结合ESRI公司的嵌入式开发平台ArcEngine组件开发包。具体内容如表1。

2 城市扩展模拟系统的基本操作

2.1 开发环境配置

在运行环境:Window7操作系统。

GIS环境:ArcEngine10.2(需要安装.netframework4. 0补丁)

开发平台环境:Microsoft Visual Studio2013

编程语言环境:C#

2.2 ArcEngine控件

Arcengine控件的功能包括:

ArcEngine〈--〉ArcMap

MapControl:数据视图

PageLayoutControl:布局视图

TOCControl:内容列表

ToolbarControl:工具条

表1 功能接口对照表

2.3 地图的基本操作功能

2.3.1 鹰眼功能

为了可以使用户方便地观察某个城市目标(或区域)在整个地图中的地理位置,屏幕的“鹰眼区”将出现地图全图。主图更新地图或改变显示范围,鸟瞰图随之发生变化;点击鸟瞰图,主图移动到相应的范围进行显示;鸟瞰图上面有一个红色的框。这样方便了用户从整体地图上控制地图的显示范围。

其主要编程思路是在AxMapControl1控件下OnExtentUpdated事件和OnMapReplaced事件下使用到IEnvelopeIGraphicsContainerIActiveViewIRectangle ElementIElement等主要接口,然后在可视化控件AxMapControl2中的OnMouseMove和OnMouseDown事件下写代码达到鼠标在axMapControl2鸟瞰图上移动,主视图便会显示点击的对应区域。

2.3.2 地图的缩放

放大或者缩小地图。该功能可以通过鼠标拉框来缩放框内的地图。该功能主要用的是ICommand接口里的ControlsMapZoomInToolClass()来控制地图的放大,ControlsMapZoomOutToolClass()来进行缩小地图。

2.3.3 地图平移

选中此功能后,在地图上点着不放拖动鼠标,地图会随着鼠标而移动,拖到地图最远边界后,漫游会自动停止。

2.3.4 地图全图

该功能可让地图全图显示在当前地图窗口当中。

2.3.5 其他辅助功能

系统可以显示图上任意一点的坐标(二维坐标),并显示地图的当前比例尺,还可以量测图上任意两点之间的直线距离。本系统可在图上提供点选择、线选择、多边形选择,可以提供地图标注。可以对选择后的标记进行删除。

2.4 城市空间扩展预测功能

本功能是用灰色局势决策、层次分析法提取城市内部的影响因素和规则,然后结合ArcEngine组件开发包里的IMap、IRasterLayerIPnt、IRasterProps、IRasterEdit IPixelBlock3等接口去建立扩展之后的栅格图层,从而实现了模拟城市空间扩展的效果,再与地理信息系统结合来研究城市的未来规划。结合GIS系统使仿真结果得以展示。

该模型可以预测栅格地图里的耕地、林地、水域和城市用地这四类城市用地未来扩展状况,点击button按钮便可模拟栅格图层里的这四类用地的未来土地利用扩展情况。城市空间扩展模拟系统的开发过程如下。

2.4.1 加载图层

使用IRasterLayer接口的CreateFromFilePath方法,调入栅格图片,并将其通过AddLayer方法加载到axMapControl1中。

2.4.2 读取栅格图层的像素

在Microsoft Visual Studio2013的开发平台下,将C#结合ArcEngine10.2组件集成开发一套城市空间扩展模拟系统,主要先用IMap接口的get_Layer方法获取图层信息,将图层信息用IRasterLayer接口转化为可修改状态的栅格。再将一个个栅格放到栅格数据集中用IRasterDataset接口去接收,通过该栅格数据集的CreateDefaultRaster()方法获得该数据集中的一个栅格用接口IRaster2接收,用IRaster2中的CreateCursorEx()方法实现一个IRasterCursor接口。根据传入的参数,系统将为这个RasterCursor设置相应的PixelBlock。最终返回IPixelBlock3接口定义的PPB。,这就相当于将栅格图层分成了几个方块。接下来,只要应用IRasterCursor的next方法,便可以快速的让这些方块自上而下的移动,最后将整个图层遍历。这就是获取像素的过程了。具体代码如下(以slope图层为例):

IMap PMAP;

PMAP=axMapControl1.Map;//获取图层要素

inti;

IRasterLayer IRL1=null;

for(i=0;i<PMAP.LayerCount;i++)

{

if(PMAP.get_Layer(i).Name==“slope.tif”)

{

IRL1=PMAP.get_Layer(i)as IRasterLayer;//将读取的坡

度图层强转为IRasterLayer类型

}

“胸怀大局、敢于担当”。苏州的园林很小,但苏州人的胸怀很大,顾炎武“天下兴亡,匹夫有责”的思想深深镌刻在苏州人的骨子里。2014年12月习近平总书记亲临江苏视察并发表重要讲话后,苏州开启了争做“强富美高”新江苏建设先行军排头兵的探索实践,一步一个脚印让习近平总书记为江苏擘画的宏伟蓝图在苏州率先化为现实。按照省委要求,苏州已然咬定“两个标杆”发展定位,即不仅要成为高水平全面建成小康社会的标杆,而且要成为探索具有时代特征、江苏特点的中国特色社会主义现代化道路的标杆。切实在全省全国工作大局中谋划苏州发展,这是勇于奋斗的苏州人的“位置感”。

}

IRaster PRASTER1;

PRASTER1=IRL1.Raster;

IRasterBandCollection PRASTERBAND1;

IRasterDataset PRASTERDS1;

PRASTERBAND1=PRASTER1

as IRasterBandCollection;//将IRaster的变量强转为IRasterBandCollection类型

IRasterCursor PRASTERCURSOR1;//使用栅格游标来

快速读取整个栅格图层

IRaster2 PRST1;

PRST1=PRASTERDS1.CreateDefaultRaster()

as IRaster2;

PRASTERCURSOR1=PRST1.CreateCursorEx(null)

asIRasterCursor;

IRasterEdit PRASTEREDIT1;

PRASTEREDIT1=PRST1 as IRasterEdit;

IPixelBlock3 PPB1;

PPB1=PRASTERCURSOR1.PixelBlock as IPixelBlock3;

//将读取的像素块用PPB1来接收

for(K=0;K<PPB1.Width-3;K+=3)

{

for(L=0;L<PPB1.Height;L++)

{

V=Convert.ToInt32(PPB1.GetVal(0,K,L));//获取了该栅格图层的的像元值V

}

}

2.4.3 使用灰度局势决策算法运用到程序中

元胞自动机的关键是转变规则,本系统用到的是灰度局势决策,然后通过层次分析法确定各目标之间的相对权重,构建具有可靠依据的转变规则。局势决策是指在事件、对策、效果三者统一的前提下,先对事件和对策进行量化处理,然后按事件拓扑与对策拓扑构成的偶对进行决策,或者说是由事件与对策所构成的全部局势中选取最佳效果的一种决策[5]。

不同问题有不同的转换规则[5]。对城市用地的扩展来说,由于其具有很大的不确定性,即灰色性,因此引入多目标灰色局势决策用于元胞演变规则的制定。同一个决策,往往要考虑多种目标,在不同目标权重下,决策的效果是不同的,而采用层次分析法确定各目标之间的相对权重。综合运用灰色局势决策、层次分析法与CA模型转变规则的过程如下:

(a)确定事件集、对策集、局势集

事件集={x1,x2,…,xn},xi为耕地、林地,建筑用地元胞。N是满足这样条件的元胞的个数[5]。

对策集={城市用地、耕地和林地},该集合是可能由其他用地转化而来的地类集合[5]。

于是便有了局势集,对元胞xi的局势为:S(xi,A)= {xi,城市用地},{xi,林地},{xi,耕地}。

(b)确定目标集

本次研究是通过城市扩展基本理论来确定目标集,预测的城市用地变化一定会紧密结合经济、生态、社会这是三个因素。共有3种目标,并使用3种不同的决策矩阵来表示这3个决策目标。3个不同的目标分别是表达元胞周围的聚集度,表达元胞本身所表示的土地适宜性程度,表达元胞的交通通达性[6],对应的公式如下:

(c)计算各个目标的效果测度

在计算不同目标的效果测度,由于采用的3个目标均为上限效果测度,所以使用公式:

//’聚集程度最大效果测试矩阵的计算

int s;

for(s=0;s<=8;s++)

{

r_1[s]=COUNT[s]/max11;//COUNT[s]是效果样本值,max11效果样本值的最大值

}

return r_1;

(d)计算目标权重并得出元胞的最优局势

通过层次分析法获得每个目标的权重[6]。先结合研究区的实际情况,由专家打分来确定不同目标的权重,得到了判断矩阵[6]。再用加权法获得多目标综合效果测度,组成一个多决策目标矩阵。如下:

for(f=0;f<=8;f++)

{

weight[f]=r_1[f]*num_1+r_2[f]*num_2+r_3[f] *num_3;

//获得了多目标综合效果测度矩阵weight[f]

}

然后,对最终计算出的综合矩阵进行局势决策,各自将每一行最大值作为元胞的最优局势,记录为元胞下一时刻的状态,然后写入到新的图层中即预测后的图像。

写入的关键代码如下:

IRasterProps pRsprops;

pRsprops=raster as IRasterProps;//获取栅格

IPnt pt=new Pnt();//创建一个像素点

pt.SetCoords(pRsprops.Height,pRsprops.Width);//设置该像素点的高度和宽度

IPixelBlock3 ipb;

ipb=raster.CreatePixelBlock(pt)as IPixelBlock3;//通过该像素点创建一个一样大小的像素块PixelBlock

raster.Read(targetPnt,ipb as IPixelBlock);//读取该栅格int i,j;

System.Array SafeArray=ipb.get_PixelData(0)as System. Array;//获取图层的像素值放入集合SafeArray中

//自上而下遍历栅格数据赋值给空白图层

for(int i=0;i<=ipb.Height-1;i++)

{

for(int j=0;j<=ipb.Width;j++)

{

if(i==y&&j==x)

{

SafeArray.SetValue(Convert.ToByte(data),i,j);//将data的值赋给SafeArray集合

}

}

}

ipb.set_PixelData(0,SafeArray);//将获取的像素值写入像素块ipb

IRasterEdit pRasterEdit;

pRasterEdit=raster as IRasterEdit;

pRasterEdit.Write(targetPnt,ipb as IPixelBlock);

pRasterEdit.Refresh();//刷新当前的栅格数据

图1 模拟前(左)和模拟后(右)研究区土地利用现状图

最后以IRasterCursor接口的Next()方法判断栅格图层是否读取完毕,读取完则会跳出循环,输出模拟研究地区枣强县最终城市空间扩展的结果如下图1。

3 结语

研究通过灰色局势决策、层次分析法和CA模型相结合,建立元胞转换规则,方法简捷,易于理解和实施。选择Visualstudio2013平台、C#语言基于ArcgisEngine组件开发了GIS-CA城市扩展模型,很好地模拟了城市空间的扩展,它不仅可以指导研究区域的土地合理利用及相关规划,而且为城市的发展提供科学的借鉴与参考意见。

本次开发的系统在预测城市的发展趋势是可行的,但由于城市化本身的演化存在诸多不确定性和突发状况,所以用本系统也存在一定的局限性。系统只能按照预先设定好的参数状态来运行,而城市的发展条件(如政策等)又是实时变化的,如何让预测的模型对外部环境的时时变化做出及时反馈,需要有待进一步解决。

[1]周成虎,孙战利,谢一春.地理元胞自动机研究[M].北京:科学出版社,1999.

[2]韩玲玲,何政伟,唐菊兴,等.基于CA的城市增长与土地增值动态模拟方法探讨[J].地理与地理信息科学,2003,19(2):32-35.

[3]吴晓军,薛惠锋,雒雪芳,等.元胞自动机生成城市空间影响区的方法[J].计算机工程与应用,2005(27):230-232.

[4]杨青生,黎夏.基于支持向量机的元胞自动机及土地利用变化模拟[J].遥感学报,2006,10(6):836-846.

[5]刘耀林,刘艳芳,明冬萍.基于灰色局势决策规则的元胞自动机城市扩展模型[J].武汉大学学报,2004,29(1).

[6]崔利.基于元胞自动机的城市扩展研究[J].长春工程学院学报,2014,15(2).

Develop urban space expansion simulation system based on ArcEngine

LIU Zhi-chen et al
(College of Urban and Environmental,Liaoning Normal University,Dalian 116029,China)

Nowly,A few scholars were studied in the world by using the CA model of urban land expansion,and made a lot of meaningful research.Written based on the above situation,this paper will be supported by the cellular automata theory,in Visual studio2013 platform using c#language combined with ESRI ArcEnginecomponentofembeddeddevelopmentplatform development kit,it can write a set of implementation of urban spatialextensionsimulationsoftware,toapplygreysituation decision-makingprogram,duringtheextractionofurban expansion internal influence factors and rules,and use it as a conversion rule of cellular automata,and then combine with geographic information system to study the urban planning.To show the results of simulation combined with the GIS system,it can provide decision-making basis for future research of regional land use planning.

Cellular Automaton;urban expansion;ArcEngine

P208

A

刘志晨(1994-),男,江西瑞金人,硕士,研究方向为地理信息系统开发。

徐惠民(1971-),男,辽宁建平人,副教授,研究方向为地理信息系统应用、人海关系调控。

(2016-10-09收稿S编辑)

1003-7853(2016)05-0055-04

中国工程院咨询研究项目(2014-06-XY-003)

猜你喜欢

城市用地自动机元胞
基于元胞机技术的碎冰模型构建优化方法
SOFM网络下的深圳市城市用地功能识别分析
几类带空转移的n元伪加权自动机的关系*
{1,3,5}-{1,4,5}问题与邻居自动机
环滇池地区城市用地扩张与经济发展脱钩分析
一种基于模糊细胞自动机的新型疏散模型
一种基于模糊细胞自动机的新型疏散模型
基于元胞自动机下的交通事故路段仿真
基于元胞自动机下的交通事故路段仿真
广义标准自动机及其商自动机