梁志強(qiáng)(黑龍江省林業(yè)監(jiān)測規(guī)劃院,黑龍江 哈爾濱 150080)
1.1 天地圖
“天地圖”是國家測繪地理信息局建設(shè)的地理信息綜合服務(wù)網(wǎng)站。是“數(shù)字中國”的重要組成部分,是國家地理信息公共服務(wù)平臺(tái)的公眾版?!疤斓貓D”的目的在于促進(jìn)地理信息資源共享和高效利用,提高測繪地理信息公共服務(wù)能力和水平,改進(jìn)測繪地理信息成果的服務(wù)方式,更好地滿足國家信息化建設(shè)的需要,為社會(huì)公眾的工作和生活提供方便[1]。
天地圖所公布的在線遙感影像資料,我們可以通過在線的方式進(jìn)行數(shù)據(jù)訪問,并可以結(jié)合其提供的訪問接口實(shí)現(xiàn)與在線地圖的互動(dòng)操作。在營造林工程管理過程中,為了查清以往林地的保存情況,部分單位可能經(jīng)過幾年的人事調(diào)整或者檔案管理不善等情況,尤其是電子檔案沒有建檔的營造林小班,如果將其進(jìn)行地理信息化處理,只能通過當(dāng)時(shí)的紙質(zhì)檔案,進(jìn)行數(shù)據(jù)內(nèi)容分析,在沒有具體坐標(biāo)拐點(diǎn)的情況下,工作人員只能通過現(xiàn)地進(jìn)行GPS坐標(biāo)取點(diǎn),浪費(fèi)人力、物力、財(cái)力,且效率不高。而采用基于遙感影像的數(shù)據(jù)獲取方式,基層林業(yè)業(yè)務(wù)人員,在對本地區(qū)的空間情況十分了解的情況下,能夠通過遙感影像資料進(jìn)行分析并獲取一下基礎(chǔ)數(shù)據(jù),將極大地節(jié)省工作時(shí)間和提高工作效率。
1.2 GMap.NET
GMap.NET是一個(gè)強(qiáng)大、免費(fèi)、跨平臺(tái)、開源的.NET控件,它在Windows Forms 和WPF環(huán)境中能夠通過天地圖、谷歌地圖、Yahoo、Bing、OpenStreetMap等實(shí)現(xiàn)尋找路徑、地理編碼以及地圖展示功能,并支持緩存和運(yùn)行在Mobile環(huán)境中。
GMap.NET是一個(gè)開源的GEO地圖定位和跟蹤程序[3]。GMAP由Map Control(地圖控件)、Overlay(圖層)、Markers(標(biāo)記點(diǎn))組成,可實(shí)現(xiàn)點(diǎn)狀、線狀、面狀空間要素的繪制操作。可以定位經(jīng)緯度,可以對地圖放大、縮小、標(biāo)記等。
GMap.NET核心動(dòng)態(tài)鏈接庫:GMap.NET.Core.dll、GMap.Net.dll、GMap.NET.WindowsForms.dll、GMap.NET.WindowsForms。在開發(fā)過程中可以將這些DLL文件進(jìn)行引用。
圖1 GMap.NET圖層結(jié)構(gòu)
本文基于C#與GMap.NET開源組件進(jìn)行系統(tǒng)研發(fā),實(shí)現(xiàn)對天地圖及谷歌地圖的數(shù)據(jù)訪問功能,基層工作人員可通過在線的遙感影像和現(xiàn)有的數(shù)據(jù)資料,通過數(shù)據(jù)交互方式完善營造林圖斑的空間位置信息。
通過Microsoft Studio集成開發(fā)工具的C#開發(fā)語言環(huán)境[2],加載GMap.NET動(dòng)態(tài)鏈接庫,將GMapControl控件加載至Form窗體中,根據(jù)GMap.NET的開發(fā)原理及方法,進(jìn)行軟件功能的編制。
主要實(shí)現(xiàn)功能包括:加載天地圖或谷歌地圖遙感影像、XY方向坐標(biāo)修正、取點(diǎn)或插入點(diǎn)及移除點(diǎn)、顯示標(biāo)記、調(diào)整坐標(biāo)順序、繪制拐點(diǎn)、坐標(biāo)入庫及導(dǎo)出Excel等。
圖2 Visual Studio加載Gmap.NET軟件開發(fā)界面
窗體加載GMap.NET代碼實(shí)現(xiàn):
privatevoidfrmMain_Load(object sender,EventArgs e)
{
mapControl.MapProvider =TdtImageMapProvider.Instance; //訪問天地圖遙感地圖
mapShow_Lzq();
}
publicvoidmapShow_Lzq()
{
mapControl.Manager.Mode =AccessMode.ServerAndCache;
mapControl.Zoom = 18;
mapControl.ShowCenter =false; //不顯示中心十字點(diǎn)
mapControl.DragButton = System.Windows.Forms.MouseButtons.Right; //右鍵拖拽地圖
//默認(rèn)設(shè)置位置
mapControl.Position = new PointLatLng(39.9078927749492,116.398086547852);mapControl.Overlays.Add(gMapOverlayPolygons);
mapControl.Overlays.Add(gMapOverlayMarkers);
mapControl.MouseDown += newMouseEventHandler(mapControl_MouseDown);
}
圖3 軟件功能實(shí)現(xiàn)
遙感影像的加載:可以加載常用的天地圖、谷歌地圖的在線遙感影像或者是帶標(biāo)注的遙感影像信息,通過菜單的方式進(jìn)行切換。
高斯換算:在線遙感地圖的定位坐標(biāo)均采用經(jīng)緯度方式,而林業(yè)部門常用的是投影坐標(biāo)系即公里網(wǎng)坐標(biāo),通過高斯坐標(biāo)換算實(shí)現(xiàn)公里網(wǎng)與經(jīng)緯度坐標(biāo)的相互換算,該方法在網(wǎng)絡(luò)上就可以搜索到。
偏移量:谷歌或者天地圖在線的影像坐標(biāo)與我們在現(xiàn)地獲取的實(shí)際坐標(biāo)均有一定的偏差,為了能夠使實(shí)地獲取的坐標(biāo)與影像位置基本上一致,可以通過將已知點(diǎn)坐標(biāo)落到影像圖上,通過X、Y方向修正的方式求得偏移量,通過實(shí)驗(yàn)的方法,獲取局部區(qū)域的平均偏移量,并將該偏移量保存,以供其他圖斑使用。
坐標(biāo)定位:通過輸入公里網(wǎng)坐標(biāo)點(diǎn)實(shí)現(xiàn)該坐標(biāo)點(diǎn)的定位。
取點(diǎn)功能:通過鼠標(biāo)移動(dòng)或者單擊,可以獲取當(dāng)前鼠標(biāo)位置的經(jīng)緯度坐標(biāo),通過高斯換算將其轉(zhuǎn)換為公里網(wǎng)坐標(biāo),并通過偏移量的糾偏,就可以計(jì)算出該點(diǎn)的實(shí)際經(jīng)緯度及公里網(wǎng)坐標(biāo),將其存儲(chǔ)在數(shù)據(jù)列表中或者存儲(chǔ)在數(shù)據(jù)庫中。
顯示拐點(diǎn):通過GMAP的GMapMarker對象實(shí)現(xiàn)圖斑要素的標(biāo)注,可以實(shí)現(xiàn)地塊的信息顯示及拐點(diǎn)順序的顯示。
GMapMarkergMapMarker = new GMarkerGoogle(new PointLatLng(lng0,lat0),
GMarkerGoogleType.green); //綠色點(diǎn)
gMapMarker.ToolTipText = l_key;
gMapOverlayRoutes.Markers.Add(gMapMarker);
坐標(biāo)信息導(dǎo)出:采用C#+NPOI技術(shù),實(shí)現(xiàn)電子表格的操作,即使該計(jì)算機(jī)中沒有安裝Office軟件,也可以實(shí)現(xiàn)表格的導(dǎo)出功能。
存儲(chǔ)為圖片:實(shí)現(xiàn)當(dāng)前屏幕的遙感影像區(qū)域存儲(chǔ)為擴(kuò)展名PNG格式圖片。
通過C#+GMap.NET開源組件研發(fā)營造林圖斑的獲取功能,可通過在線遙感影像的訪問及空間位置信息交互的方式,針對營造林工作,將圖斑的位置、坐標(biāo)、影像等資料進(jìn)行存儲(chǔ),豐富了以往資料的獲取方式和內(nèi)容,對提高營造林?jǐn)?shù)據(jù)質(zhì)量,提高工作人員技術(shù)水平及林業(yè)信息化建設(shè)等方面提供了一個(gè)新的途徑。
參考文獻(xiàn):
[1] 黃蔚.國家地理信息公共服務(wù)平臺(tái)天地圖[J].技術(shù)進(jìn)展,2014(1):41-44
[2] (美)沃森,(美)內(nèi)格爾.C#入門經(jīng)典[M].喬麗波,譯.北京:清華大學(xué)出版社,2006
[3] 余朋.Gmap地理信息技術(shù)在空管系統(tǒng)中的應(yīng)用[J].電腦編程技巧與維護(hù),2014(12):102-104