結(jié)合MapGIS進行污染物擴散分析
地理信息系統(tǒng)(GIS)是用于存儲和處理與地理空間分布相關(guān)信息的集合。由于GIS具有獨特的混和數(shù)據(jù)結(jié)構(gòu)和地理分析功能,在各行業(yè)的應(yīng)用也越來越廣泛。GIS平臺包括商業(yè)化和開源兩種,常用的開源GIS平臺如ArcGis、SuperMap等功能強大,效率很不錯,但畢竟是商業(yè)化的。MapWinGis在開源GIS項目中的效率是相當不錯的,本文主要對其進行介紹。
MapWInGis的開發(fā)語言是VC,基于微軟的COM思想編寫,為開發(fā)人員提供了一個名為MapWInGis的ActiveX控件。開發(fā)人員可以利用這個控件在自己的系統(tǒng)中添加GIS的各種功能,包括:地圖的顯示,圖層上點、線以及圖像的繪制,測量長度面積,存取數(shù)據(jù)的一系列的工作。功能十分豐富,可以滿足絕大部分的用戶需求。

下面對基于MapWinGis開發(fā)的一般步驟進行介紹。
一、 確定map coordinate system和projection
無論將要編寫何種類型的GIS應(yīng)用,關(guān)于map coordinate system以及projection的選擇都是第一位的。MapWinGis提供了以下的一些選項。

手動設(shè)置時MapWinGis提供了多種導(dǎo)入形式,包括EPSG、proj4等,對于不同格式的projection的具體信息可以至www.spatialreference.org查詢;
選擇從數(shù)據(jù)中獲取時,MapWInGis提供了GrabProjectionFromData方法,此方法默認為true,若沒有為應(yīng)用指定projection,那么在導(dǎo)入第一個帶有prj信息的數(shù)據(jù)時會自動將其設(shè)定為此應(yīng)用的projection,此時導(dǎo)入不同的projection的數(shù)據(jù)時,MapWinGis會發(fā)出警告;
也可以選擇完全不使用projection,此時數(shù)據(jù)不存在地理位置信息,將只能按照像素坐標進行操作。

確定projection后還可以根據(jù)實際需求選擇不同的tiles以獲取自己需要的信息,如下:

二、 確定需要操作的數(shù)據(jù)類型
MapWinGis支持大量的數(shù)據(jù)類型,具體的信息參見下方的表格:

對不同的數(shù)據(jù)類型MapWinGis提供了不同的類進行管理,可以選擇各自的接口進行處理。另外,為了應(yīng)對大量數(shù)據(jù)的導(dǎo)入可能導(dǎo)致的混亂,MapWinGis提供了FileManager類,可以打開MapWinGis支持的所有格式的數(shù)據(jù),可以大量減少代碼量。下圖是一個生成了GridColorScheme的Grid在地圖上的顯示:

增加了網(wǎng)格之后效果如下:

三、確定交互的操作和具體的功能
管理數(shù)據(jù)和用戶交互的類是AxMap,其中有大量的事件和消息,用于對不同的操作進行響應(yīng),下圖詳細展示了AxMap提供的具體功能。

測量距離:

矩形區(qū)域內(nèi)的平均值,最大值以及最小值:

非規(guī)則區(qū)域內(nèi)的平均值,最大值以及最小值:

某點的具體信息以及調(diào)整:

等等。
四、 涉及到的方法
下面對以上的功能實現(xiàn)需要涉及到的方法進行介紹:
1.Grid的具體信息存儲在GridHeader類,所以想要修改存儲在grid中的數(shù)據(jù)需要使用GridHeader而不是Grid。

2.手動創(chuàng)建的Grid不帶有地理位置信息,需要手動進行設(shè)置,并且導(dǎo)入projection只能以string進行操作,如proj4、ESPG,所以根據(jù)不同的projection需要的信息至www.spatialreference.org進行查詢。
3.手動創(chuàng)建的Grid僅僅存儲了信息,在導(dǎo)入至圖層時,若不指定Render style會看不到實際的效果,Grid Rendering有兩種方式。

2.手動創(chuàng)建的Grid不帶有地理位置信息,需要手動進行設(shè)置,并且導(dǎo)入projection只能以string進行操作,如proj4、ESPG,所以根據(jù)不同的projection需要的信息至www.spatialreference.org進行查詢。
3.手動創(chuàng)建的Grid僅僅存儲了信息,在導(dǎo)入至圖層時,若不指定Render style會看不到實際的效果,Grid Rendering有兩種方式。
所以需要對GridColorScheme的類進行了解。
4.有時需要對Grid中的數(shù)據(jù)進行查詢,修改和統(tǒng)計,這里涉及到AxMap的事件和消息,像素坐標系、世界坐標系、投影坐標系的相互轉(zhuǎn)換,鼠標工具的選擇等一系列操作。需要對GeoProjection、AxMap和Util類進行了解。需要注意的是Util類是一個通用類,里面有很多使用的功能,當你在特定的類里找不到你需要的接口時,不妨到這里來試試,可能會有收獲。
五、 總結(jié)
以上對MapWinGis的開發(fā)過程進行了簡單的介紹,并以Grid為例說明了GIS應(yīng)用開發(fā)的過程中類本身復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和類之間復(fù)雜的交互性。這些因素都要求GIS的開發(fā)者不能管中窺豹,要對全局有足夠的了解才能使得開發(fā)順利的進行。
工程師必備
- 項目客服
- 培訓(xùn)客服
- 平臺客服
TOP




















