劉志晨,徐惠民,范環(huán)宇
(遼寧師范大學(xué)城市與環(huán)境學(xué)院,大連116029)
基于ArcEngine的城市空間擴展模擬系統(tǒng)開發(fā)
劉志晨,徐惠民*,范環(huán)宇
(遼寧師范大學(xué)城市與環(huán)境學(xué)院,大連116029)
目前國內(nèi)外已有不少學(xué)者采用CA模型對城市用地擴展進行了研究,并取得了不少有意義的研究成果。基于上述現(xiàn)狀,本次撰寫的論文將在元胞自動機理論的支撐下,在Visual studio2013平臺下利用C#語言結(jié)合ESRI公司的嵌入式開發(fā)平臺ArcEngine組件開發(fā)包,編寫一套可以實現(xiàn)模擬城市空間擴展的軟件,將灰度局勢決策運用到程序中,進行提取城市擴展時內(nèi)在影響因素與規(guī)律,并將其作為元胞自動機的轉(zhuǎn)換規(guī)律,再與地理信息系統(tǒng)結(jié)合來研究城市規(guī)劃。結(jié)合了GIS系統(tǒng)使仿真結(jié)果得以展示,為將來研究區(qū)域土地利用規(guī)劃提供決策依據(jù)。
元胞自動機;城市擴展;ArcEngine
城市化是一個復(fù)雜的時空轉(zhuǎn)換過程,包括城市內(nèi)部各類土地類型之間的相互轉(zhuǎn)換以及城市不斷對外擴展的過程。近年來,我國城市化速度不斷加快,城市用地和人口規(guī)模迅速增大,為此不少學(xué)者采用CA模型對城市土地擴展進行了研究,CA已被越來越多的運用在城市模擬當中,并且取得了許多有意義的研究成果。如:1999年周成虎等人運用多年積累的研究經(jīng)驗提出了一個CA模型Geourban[1],2003年韓玲玲等人對四川德陽地區(qū)利用GIS與CA的集成進行了城市增長模擬和土地增值模擬[2],2005年吳曉軍等人對陜西省10個地級市影響區(qū)利用CA求解加權(quán)Voronoi圖進行了世紀的研究[3]。在2006年楊青生等人對深圳地區(qū)1988年至2010年的城市擴展進行了模擬預(yù)測,主要采用的CA非線性轉(zhuǎn)換規(guī)則使用支持向量機確定的,試驗結(jié)果顯示采用SVM-CA模型比CEM模型的模擬結(jié)果更接近于顯示,模擬精度更高[4]。國內(nèi)一些學(xué)者提出分區(qū)特征的地理CA模型,并與城市規(guī)劃相結(jié)合,均取得較好成果。但目前大部分的地理CA軟件,很少是采用C#語言開發(fā)集成的,所以也很難使后續(xù)使用者加入新的算法繼續(xù)使用。因此,本次研究是在傳統(tǒng)CA模型的基礎(chǔ)上,基于ArcGIS Engine函數(shù)庫、C#編程語言、城市擴展的基本原理,開發(fā)設(shè)計一套元胞自動機城市擴展模型,實現(xiàn)了模擬城市的空間擴展。使用本次開發(fā)的GIS系統(tǒng),僅需要安裝Microsoft Visual studio2013、ArcGIS Engine Runtime以及相應(yīng)的許可就能運行,不需要客戶端再安裝ArcGIS軟件。
美國ESRI公司的ArcEngine是一個用于建立自定義獨立地理信息系統(tǒng)(GIS)應(yīng)用程序的平臺,支持多種應(yīng)用程序接口(APIs),擁有許多高級GIS功能,而且還具有良好的跨平臺、跨語言特點,利用這個特點,我們便可以快速方便地定制出用于模擬城市擴張的GIS應(yīng)用系統(tǒng)。此次研究在Visual studio2013平臺下,主要用到灰度局勢決策去獲取城市的轉(zhuǎn)變規(guī)則,再利用C#語言結(jié)合ESRI公司的嵌入式開發(fā)平臺ArcEngine組件開發(fā)包。具體內(nèi)容如表1。
2.1 開發(fā)環(huán)境配置
在運行環(huán)境:Window7操作系統(tǒng)。
GIS環(huán)境:ArcEngine10.2(需要安裝.netframework4. 0補?。?/p>
開發(fā)平臺環(huán)境:Microsoft Visual Studio2013
編程語言環(huán)境:C#
2.2 ArcEngine控件
Arcengine控件的功能包括:
ArcEngine〈--〉A(chǔ)rcMap
MapControl:數(shù)據(jù)視圖
PageLayoutControl:布局視圖
TOCControl:內(nèi)容列表
ToolbarControl:工具條
表1 功能接口對照表
2.3 地圖的基本操作功能
2.3.1 鷹眼功能
為了可以使用戶方便地觀察某個城市目標(或區(qū)域)在整個地圖中的地理位置,屏幕的“鷹眼區(qū)”將出現(xiàn)地圖全圖。主圖更新地圖或改變顯示范圍,鳥瞰圖隨之發(fā)生變化;點擊鳥瞰圖,主圖移動到相應(yīng)的范圍進行顯示;鳥瞰圖上面有一個紅色的框。這樣方便了用戶從整體地圖上控制地圖的顯示范圍。
其主要編程思路是在AxMapControl1控件下OnExtentUpdated事件和OnMapReplaced事件下使用到IEnvelopeIGraphicsContainerIActiveViewIRectangle ElementIElement等主要接口,然后在可視化控件AxMapControl2中的OnMouseMove和OnMouseDown事件下寫代碼達到鼠標在axMapControl2鳥瞰圖上移動,主視圖便會顯示點擊的對應(yīng)區(qū)域。
2.3.2 地圖的縮放
放大或者縮小地圖。該功能可以通過鼠標拉框來縮放框內(nèi)的地圖。該功能主要用的是ICommand接口里的ControlsMapZoomInToolClass()來控制地圖的放大,ControlsMapZoomOutToolClass()來進行縮小地圖。
2.3.3 地圖平移
選中此功能后,在地圖上點著不放拖動鼠標,地圖會隨著鼠標而移動,拖到地圖最遠邊界后,漫游會自動停止。
2.3.4 地圖全圖
該功能可讓地圖全圖顯示在當前地圖窗口當中。
2.3.5 其他輔助功能
系統(tǒng)可以顯示圖上任意一點的坐標(二維坐標),并顯示地圖的當前比例尺,還可以量測圖上任意兩點之間的直線距離。本系統(tǒng)可在圖上提供點選擇、線選擇、多邊形選擇,可以提供地圖標注??梢詫x擇后的標記進行刪除。
2.4 城市空間擴展預(yù)測功能
本功能是用灰色局勢決策、層次分析法提取城市內(nèi)部的影響因素和規(guī)則,然后結(jié)合ArcEngine組件開發(fā)包里的IMap、IRasterLayerIPnt、IRasterProps、IRasterEdit IPixelBlock3等接口去建立擴展之后的柵格圖層,從而實現(xiàn)了模擬城市空間擴展的效果,再與地理信息系統(tǒng)結(jié)合來研究城市的未來規(guī)劃。結(jié)合GIS系統(tǒng)使仿真結(jié)果得以展示。
該模型可以預(yù)測柵格地圖里的耕地、林地、水域和城市用地這四類城市用地未來擴展狀況,點擊button按鈕便可模擬柵格圖層里的這四類用地的未來土地利用擴展情況。城市空間擴展模擬系統(tǒng)的開發(fā)過程如下。
2.4.1 加載圖層
使用IRasterLayer接口的CreateFromFilePath方法,調(diào)入柵格圖片,并將其通過AddLayer方法加載到axMapControl1中。
2.4.2 讀取柵格圖層的像素
在Microsoft Visual Studio2013的開發(fā)平臺下,將C#結(jié)合ArcEngine10.2組件集成開發(fā)一套城市空間擴展模擬系統(tǒng),主要先用IMap接口的get_Layer方法獲取圖層信息,將圖層信息用IRasterLayer接口轉(zhuǎn)化為可修改狀態(tài)的柵格。再將一個個柵格放到柵格數(shù)據(jù)集中用IRasterDataset接口去接收,通過該柵格數(shù)據(jù)集的CreateDefaultRaster()方法獲得該數(shù)據(jù)集中的一個柵格用接口IRaster2接收,用IRaster2中的CreateCursorEx()方法實現(xiàn)一個IRasterCursor接口。根據(jù)傳入的參數(shù),系統(tǒng)將為這個RasterCursor設(shè)置相應(yīng)的PixelBlock。最終返回IPixelBlock3接口定義的PPB。,這就相當于將柵格圖層分成了幾個方塊。接下來,只要應(yīng)用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;//將讀取的坡
度圖層強轉(zhuǎn)為IRasterLayer類型
}
“胸懷大局、敢于擔(dān)當”。蘇州的園林很小,但蘇州人的胸懷很大,顧炎武“天下興亡,匹夫有責(zé)”的思想深深鐫刻在蘇州人的骨子里。2014年12月習(xí)近平總書記親臨江蘇視察并發(fā)表重要講話后,蘇州開啟了爭做“強富美高”新江蘇建設(shè)先行軍排頭兵的探索實踐,一步一個腳印讓習(xí)近平總書記為江蘇擘畫的宏偉藍圖在蘇州率先化為現(xiàn)實。按照省委要求,蘇州已然咬定“兩個標桿”發(fā)展定位,即不僅要成為高水平全面建成小康社會的標桿,而且要成為探索具有時代特征、江蘇特點的中國特色社會主義現(xiàn)代化道路的標桿。切實在全省全國工作大局中謀劃蘇州發(fā)展,這是勇于奮斗的蘇州人的“位置感”。
}
IRaster PRASTER1;
PRASTER1=IRL1.Raster;
IRasterBandCollection PRASTERBAND1;
IRasterDataset PRASTERDS1;
PRASTERBAND1=PRASTER1
as IRasterBandCollection;//將IRaster的變量強轉(zhuǎn)為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 使用灰度局勢決策算法運用到程序中
元胞自動機的關(guān)鍵是轉(zhuǎn)變規(guī)則,本系統(tǒng)用到的是灰度局勢決策,然后通過層次分析法確定各目標之間的相對權(quán)重,構(gòu)建具有可靠依據(jù)的轉(zhuǎn)變規(guī)則。局勢決策是指在事件、對策、效果三者統(tǒng)一的前提下,先對事件和對策進行量化處理,然后按事件拓撲與對策拓撲構(gòu)成的偶對進行決策,或者說是由事件與對策所構(gòu)成的全部局勢中選取最佳效果的一種決策[5]。
不同問題有不同的轉(zhuǎn)換規(guī)則[5]。對城市用地的擴展來說,由于其具有很大的不確定性,即灰色性,因此引入多目標灰色局勢決策用于元胞演變規(guī)則的制定。同一個決策,往往要考慮多種目標,在不同目標權(quán)重下,決策的效果是不同的,而采用層次分析法確定各目標之間的相對權(quán)重。綜合運用灰色局勢決策、層次分析法與CA模型轉(zhuǎn)變規(guī)則的過程如下:
(a)確定事件集、對策集、局勢集
事件集={x1,x2,…,xn},xi為耕地、林地,建筑用地元胞。N是滿足這樣條件的元胞的個數(shù)[5]。
對策集={城市用地、耕地和林地},該集合是可能由其他用地轉(zhuǎn)化而來的地類集合[5]。
于是便有了局勢集,對元胞xi的局勢為:S(xi,A)= {xi,城市用地},{xi,林地},{xi,耕地}。
(b)確定目標集
本次研究是通過城市擴展基本理論來確定目標集,預(yù)測的城市用地變化一定會緊密結(jié)合經(jīng)濟、生態(tài)、社會這是三個因素。共有3種目標,并使用3種不同的決策矩陣來表示這3個決策目標。3個不同的目標分別是表達元胞周圍的聚集度,表達元胞本身所表示的土地適宜性程度,表達元胞的交通通達性[6],對應(yīng)的公式如下:
(c)計算各個目標的效果測度
在計算不同目標的效果測度,由于采用的3個目標均為上限效果測度,所以使用公式:
//’聚集程度最大效果測試矩陣的計算
int s;
for(s=0;s<=8;s++)
{
r_1[s]=COUNT[s]/max11;//COUNT[s]是效果樣本值,max11效果樣本值的最大值
}
return r_1;
(d)計算目標權(quán)重并得出元胞的最優(yōu)局勢
通過層次分析法獲得每個目標的權(quán)重[6]。先結(jié)合研究區(qū)的實際情況,由專家打分來確定不同目標的權(quán)重,得到了判斷矩陣[6]。再用加權(quán)法獲得多目標綜合效果測度,組成一個多決策目標矩陣。如下:
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]
}
然后,對最終計算出的綜合矩陣進行局勢決策,各自將每一行最大值作為元胞的最優(yōu)局勢,記錄為元胞下一時刻的狀態(tài),然后寫入到新的圖層中即預(yù)測后的圖像。
寫入的關(guān)鍵代碼如下:
IRasterProps pRsprops;
pRsprops=raster as IRasterProps;//獲取柵格
IPnt pt=new Pnt();//創(chuàng)建一個像素點
pt.SetCoords(pRsprops.Height,pRsprops.Width);//設(shè)置該像素點的高度和寬度
IPixelBlock3 ipb;
ipb=raster.CreatePixelBlock(pt)as IPixelBlock3;//通過該像素點創(chuàng)建一個一樣大小的像素塊PixelBlock
raster.Read(targetPnt,ipb as IPixelBlock);//讀取該柵格int i,j;
System.Array SafeArray=ipb.get_PixelData(0)as System. Array;//獲取圖層的像素值放入集合SafeArray中
//自上而下遍歷柵格數(shù)據(jù)賦值給空白圖層
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();//刷新當前的柵格數(shù)據(jù)
圖1 模擬前(左)和模擬后(右)研究區(qū)土地利用現(xiàn)狀圖
最后以IRasterCursor接口的Next()方法判斷柵格圖層是否讀取完畢,讀取完則會跳出循環(huán),輸出模擬研究地區(qū)棗強縣最終城市空間擴展的結(jié)果如下圖1。
研究通過灰色局勢決策、層次分析法和CA模型相結(jié)合,建立元胞轉(zhuǎn)換規(guī)則,方法簡捷,易于理解和實施。選擇Visualstudio2013平臺、C#語言基于ArcgisEngine組件開發(fā)了GIS-CA城市擴展模型,很好地模擬了城市空間的擴展,它不僅可以指導(dǎo)研究區(qū)域的土地合理利用及相關(guān)規(guī)劃,而且為城市的發(fā)展提供科學(xué)的借鑒與參考意見。
本次開發(fā)的系統(tǒng)在預(yù)測城市的發(fā)展趨勢是可行的,但由于城市化本身的演化存在諸多不確定性和突發(fā)狀況,所以用本系統(tǒng)也存在一定的局限性。系統(tǒng)只能按照預(yù)先設(shè)定好的參數(shù)狀態(tài)來運行,而城市的發(fā)展條件(如政策等)又是實時變化的,如何讓預(yù)測的模型對外部環(huán)境的時時變化做出及時反饋,需要有待進一步解決。
[1]周成虎,孫戰(zhàn)利,謝一春.地理元胞自動機研究[M].北京:科學(xué)出版社,1999.
[2]韓玲玲,何政偉,唐菊興,等.基于CA的城市增長與土地增值動態(tài)模擬方法探討[J].地理與地理信息科學(xué),2003,19(2):32-35.
[3]吳曉軍,薛惠鋒,雒雪芳,等.元胞自動機生成城市空間影響區(qū)的方法[J].計算機工程與應(yīng)用,2005(27):230-232.
[4]楊青生,黎夏.基于支持向量機的元胞自動機及土地利用變化模擬[J].遙感學(xué)報,2006,10(6):836-846.
[5]劉耀林,劉艷芳,明冬萍.基于灰色局勢決策規(guī)則的元胞自動機城市擴展模型[J].武漢大學(xué)學(xué)報,2004,29(1).
[6]崔利.基于元胞自動機的城市擴展研究[J].長春工程學(xué)院學(xué)報,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-),男,江西瑞金人,碩士,研究方向為地理信息系統(tǒng)開發(fā)。
徐惠民(1971-),男,遼寧建平人,副教授,研究方向為地理信息系統(tǒng)應(yīng)用、人海關(guān)系調(diào)控。
(2016-10-09收稿S編輯)
1003-7853(2016)05-0055-04
中國工程院咨詢研究項目(2014-06-XY-003)