梁志強,張 冰
(黑龍江省自然資源權益調查監(jiān)測院,黑龍江 哈爾濱 150080)
山海易繪(EzMap)是由北京山海經(jīng)緯信息技術公司自主開發(fā),是專業(yè)地理數(shù)據(jù)采集和地圖制圖出版軟件[1]。在省級林業(yè)調查單位應用廣泛,其工程文件(擴展名為.EMP,其數(shù)據(jù)庫為.MDB)是矢量、數(shù)據(jù)及符號表達效果的集合。
在我省常規(guī)的林業(yè)制圖采用EzMap軟件進行制圖,以森林資源規(guī)劃設計調查的林相圖作為基礎制圖。林相圖以林場(或營林區(qū)、鄉(xiāng)、鎮(zhèn))級經(jīng)營單位為基礎制圖單位,多數(shù)采用比例尺1∶25000、高斯-克呂格投影、西安1980坐標系、6度分帶,中央經(jīng)線分別為123、129、135??h、市、省級匯總圖均基于林場級數(shù)據(jù)匯總所得,多數(shù)采用比例尺1∶10萬、1∶20萬。
現(xiàn)階段CGCS2000坐標系在全省范圍內(nèi)已被全面應用,西安1980坐標系制圖已不滿足業(yè)務生產(chǎn)要求,按CGCS2000坐標系重新制圖工作量很大,所以將現(xiàn)有的EzMap西安1980坐標系的工程文件轉換為CGCS2000是最好的選擇。
借助EzMap的矢量數(shù)據(jù)配準功能,通過讀取控制點文件(.lvp)實現(xiàn)坐標轉換,可以達到預期效果。
以西安1980坐標系的縣界(含鄉(xiāng)鎮(zhèn)界)為基礎,按等距布點生成布點圖,使用坐標轉換軟件將布點圖轉換成CGCS2000坐標,以鄉(xiāng)鎮(zhèn)為單位將西安1980坐標和CGCS2000進行選取,并生成EzMap識別的lvp文件。
讀取縣界(含鄉(xiāng)鎮(zhèn)界線要素)矢量包絡線(最小外側矩形區(qū)域)及空間投影信息,獲取該包絡線的四角坐標,并將左上角范圍橫縱坐標值按千位數(shù)進行取值,并將該矩形區(qū)域按一定距離外延,擴大矩形區(qū)域范圍。
以該外延區(qū)域的左上角作為起始點,以設置橫縱方向間隔值進行均勻布點,創(chuàng)建與外延區(qū)域相同空間投影的圖框范圍布點圖層。保證控制點完全涵蓋縣域范圍。創(chuàng)建屬性字段為XH(數(shù)值型)、X1980(浮點型)、Y1980(浮點型)、X1980SH(浮點型)、Y1980SH(浮點型)、X2000(浮點型)、Y2000(浮點型)、X2000SH(浮點型)、Y2000SH(浮點型)。用于存儲布點序號、兩期坐標值及EzMap的1∶25000比例尺的坐標值(相應坐標x0.04獲得)。在創(chuàng)建點的過程中將XH、X1980、Y1980、X1980SH、Y1980SH值寫到相應點信息中。
使用坐標轉換軟件將布點圖DIAN1980轉換為CGCS2000坐標系矢量圖DIAN2000。
讀取DIAN2000,獲取CGCS2000坐標系每個點的橫縱坐標,并將該橫縱坐標及換算坐標,按XH字段的值寫回到矢量DIAN1980相同XH的相應屬性字段中。
讀取縣界矢量,選擇相應鄉(xiāng)鎮(zhèn)要素,并按布點間隔進行外向緩沖,用于選取布點個數(shù)超過原鄉(xiāng)鎮(zhèn)界線。
以緩沖后的鄉(xiāng)鎮(zhèn)范圍選取布點。
lvp實質為文本文件,是EzMap識別的配準文件格式。將選取的布點的X1980SH、Y1980SH、X2000SH、Y2000SH字段的內(nèi)容,按lvp文件格式進行創(chuàng)建和寫入。
打開林業(yè)專題山海工程文件,使用“投影與配準”,選擇“矢量配準”,選擇配準方法,導入lvp文件,點“執(zhí)行”操作,即可將西安1980的坐標配準到CGCS2000位置,配準后進行“投影變換”,選擇“2000國家大地坐標系”確定投影。
坐標轉換后,重新制作CGCS2000坐標系的公里網(wǎng)圖框。
采用傳統(tǒng)GIS軟件實現(xiàn)控制點文件的制作效率很低,工作量大,通過對上述制作方法的研究,可以采用研發(fā)相應軟件,實現(xiàn)批量處理操作。
GDAL(Geospatial Data Abstraction Library,地理空間數(shù)據(jù)抽象庫)是一個在X/MIT許可協(xié)議下的開源空間數(shù)據(jù)(柵格數(shù)據(jù)和矢量數(shù)據(jù))轉換庫,可實現(xiàn)讀取、寫入、轉換、處理各種柵格和矢量數(shù)據(jù)格式[2]。
實現(xiàn)縣域包絡線讀取、生成縣域區(qū)域布點圖、計算布點圖坐標、兩期矢量坐標屬性數(shù)據(jù)關聯(lián)、逐鄉(xiāng)鎮(zhèn)要素選擇、鄉(xiāng)鎮(zhèn)區(qū)域緩沖、選取鄉(xiāng)鎮(zhèn)緩沖范圍布點、讀取屬性信息等功能(圖1、圖2)。
oLayerXiang = ds.ExecuteSQL("SELECT * FROM " + fileXiang + " WHERE XIANG_NAME='" + dic.Value + "'", null, null);//獲取鄉(xiāng)鎮(zhèn)要素oLayerDian = ds.GetLayerByName(file1980);//獲取布點圖層 oLayerDian.SetSpatialFilter(oLayerXiang.GetNextFeature(). GetGeometryRef().Buffer(Convert.ToDouble(heng), 0));//獲取點要素_按鄉(xiāng)鎮(zhèn)緩沖范圍設置空間過濾器。
圖1 控制點批量生成軟件Fig.1 Control Point Batch Generation Software
圖2 鄉(xiāng)鎮(zhèn)級控制點分布圖Fig.2 Distribution Map of Township Control Points
通過GDAL遍歷圖層要素,將EzMap需要的坐標寫到lvp文件中(圖3)。
圖3 EzMap識別的lvp文件Fig.3 Lvp File Recognized by EzMap
在EzMap中將變化圖層進行可編輯,導入對應單位的lvp文件,選擇適當?shù)呐錅誓P?,查看誤差滿足要求即可執(zhí)行配準操作。配準后可以導入已有的CGCS2000坐標系矢量進行校驗,經(jīng)過校驗配準效果滿足制圖要求(圖4)。
圖4 EzMap配準源點、目標點及誤差Fig.4 EzMap Registration Source Point, Target Point and Error
以上介紹了山海易繪林業(yè)制圖工程文件及控制點制作方法,并以C#+GDAL構建軟件的方式,批量按縣域內(nèi)各鄉(xiāng)鎮(zhèn)范圍生成矢量數(shù)據(jù)配準的控制點文件,通過EzMap軟件實現(xiàn)已有林業(yè)制圖文件從西安1980坐標系向CGCS200坐標系的轉換,可以精準、高效實現(xiàn)數(shù)據(jù)坐標轉換。