梁志強(qiáng)
(黑龍江省自然資源權(quán)益調(diào)查監(jiān)測院,黑龍江 哈爾濱 150080)
林地保護(hù)利用規(guī)劃(以下簡稱林保)從2010—2017年均采用Xian1980坐標(biāo)系,從2018年度開始國家林業(yè)局要求數(shù)據(jù)采用CGCS2000坐標(biāo)系,并統(tǒng)一將省級層面的2017年度林保成果數(shù)據(jù)依據(jù)測繪部門轉(zhuǎn)換軟件(參數(shù))轉(zhuǎn)換為CGCS2000坐標(biāo)系,以此作為省級林地年度更新工作的基礎(chǔ)資料,地方林業(yè)主管部門獲取省局下發(fā)的林保數(shù)據(jù)就會有同一個(gè)年度的Xian1980和CGCS2000坐標(biāo)系,即為轉(zhuǎn)換前和轉(zhuǎn)換后的數(shù)據(jù),可根據(jù)該數(shù)據(jù)進(jìn)行同名點(diǎn)獲取。
地方林業(yè)部門除林保之外的其他業(yè)務(wù)工作(如營造林、森林經(jīng)營管理等資料)數(shù)據(jù)多且雜,基本都是Xian1980坐標(biāo)系,根據(jù)業(yè)務(wù)要求也統(tǒng)一采用CGCS2000坐標(biāo)系,都需要實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換。傳統(tǒng)的坐標(biāo)轉(zhuǎn)換方法是依靠轉(zhuǎn)換參數(shù)完成坐標(biāo)轉(zhuǎn)換,而根據(jù)《中華人民共和國測繪法》,坐標(biāo)轉(zhuǎn)換參數(shù)為保密數(shù)據(jù),對地方林業(yè)部門來說很難獲得轉(zhuǎn)換參數(shù),對以往數(shù)據(jù)的轉(zhuǎn)換存在著一定的轉(zhuǎn)換難度[1]。對此,借助現(xiàn)有資料可通過同名點(diǎn)獲取的方法,運(yùn)用GIS軟件實(shí)現(xiàn)局部范圍內(nèi)的其他業(yè)務(wù)數(shù)據(jù)的坐標(biāo)轉(zhuǎn)換。
GDAL(Geospatial Data Abstraction Library,地理空間數(shù)據(jù)抽象庫)是一個(gè)在X/MIT許可協(xié)議下的開源空間數(shù)據(jù)(柵格數(shù)據(jù)和矢量數(shù)據(jù))轉(zhuǎn)換庫,包括讀取、寫入、轉(zhuǎn)換、處理各種柵格和矢量數(shù)據(jù)格式[2]。
OGR(OGR Simple Features Library)是GDAL的項(xiàng)目的一個(gè)分支,提供對矢量數(shù)據(jù)的讀/寫操作。其體系結(jié)構(gòu)包括Drivers(驅(qū)動)、Data Source(數(shù)據(jù)源)、Spatial Reference(空間參考)、Layer(圖層)、Geometry(幾何圖形)、Feature(要素)、Feature Definition(要素定義)等。
可通過GDAL讀取兩期矢量圖斑要素屬性及幾何圖形坐標(biāo)節(jié)點(diǎn)等空間及屬性信息。
SQLite是一款開放源代碼的基于C語言開發(fā)的輕量型嵌入式關(guān)系數(shù)據(jù)庫引擎,是目前使用較廣泛的嵌入式數(shù)據(jù)庫[3]。相對于傳統(tǒng)數(shù)據(jù)庫,SQLite具有更好的實(shí)時(shí)性、系統(tǒng)開銷小、底層控制能力強(qiáng)等優(yōu)點(diǎn),且能高效地利用有限資源,提高數(shù)據(jù)的存取速度,增強(qiáng)系統(tǒng)安全性。SQLite在使用前無須安裝數(shù)據(jù)庫引擎,數(shù)據(jù)庫是一個(gè)單獨(dú)的支持2TB的數(shù)據(jù)存儲普通磁盤文件,支持多種開發(fā)語言,可移植性好。
可通過SQLite數(shù)據(jù)庫,實(shí)現(xiàn)矢量圖斑的空間及屬性信息的存儲。
采用分別讀取同一區(qū)域林保2017年度兩個(gè)坐標(biāo)系的矢量數(shù)據(jù),獲取滿足相同圖斑且點(diǎn)序一致的坐標(biāo)點(diǎn),作為同名點(diǎn),形成原始坐標(biāo)與目標(biāo)坐標(biāo)對照表;獲取同名點(diǎn)盡量分布均勻,滿足GIS軟件空間校正及地理配準(zhǔn)的需要,以達(dá)到轉(zhuǎn)換誤差滿足數(shù)據(jù)轉(zhuǎn)換精度要求。
在Visual Studio開發(fā)環(huán)境中調(diào)用GDAL開源類庫Gdal_csharp.dll、Org_csharp.dll,使用C#代碼實(shí)現(xiàn)對GDAL注冊和相應(yīng)函數(shù)的使用。GDAL可以遍歷矢量的所有圖斑,讀取每個(gè)圖斑的屬性信息,求算投影圖形面積及各節(jié)點(diǎn)的X、Y坐標(biāo)(圖1)。
圖1 C#+GDAL讀取SHAPE文件
分別讀取Xian1980、CGCS2000投影坐標(biāo)系的矢量數(shù)據(jù),以每個(gè)林保圖斑的林業(yè)局、林場、林班、小班(即lin_ye_ju、Lin_Chang、Lin_Ban、Xiao_Ban)作為唯一關(guān)鍵值信息;遍歷林保圖層中的所有圖斑要素,將圖斑關(guān)鍵值信息、圖斑面積、節(jié)點(diǎn)坐標(biāo)進(jìn)行讀取和計(jì)算,并進(jìn)行入庫操作。為了減少數(shù)據(jù)量,僅對圖斑的第一個(gè)節(jié)點(diǎn)的橫縱坐標(biāo)進(jìn)行獲取。
在Visual Studio開發(fā)環(huán)境中調(diào)用System.Data.SQLite.DLL,采用C#實(shí)現(xiàn)對SQLite數(shù)據(jù)庫的使用(圖2)。
圖2 C#+SQLite數(shù)據(jù)入庫
3.2.1 創(chuàng)建“坐標(biāo)對照表”,用于存儲兩套數(shù)據(jù)讀取的信息,字段為關(guān)鍵字 Text(50)、面積1980 numeric(30,10)、橫坐標(biāo) 1980 numeric(30,10)、縱坐標(biāo)1980numeric(30,10)、面積2000 numeric(30,10)、橫坐標(biāo)2000 numeric(30,10)、縱坐標(biāo)2000 numeric(30,10)。
3.2.2 分別將讀取兩套林保矢量的圖斑信息及節(jié)點(diǎn)坐標(biāo)寫入到“坐標(biāo)對照表”的相應(yīng)字段內(nèi)。
3.2.3 計(jì)算兩組坐標(biāo)點(diǎn)直線距離,并將計(jì)算結(jié)果取整。
3.3.1 為了避免同名點(diǎn)坐標(biāo)點(diǎn)對出現(xiàn)異常的情況,通過“坐標(biāo)對照表”計(jì)算出的取整后的坐標(biāo)直線距離,分類統(tǒng)計(jì)計(jì)算,求算出直線距離個(gè)數(shù)最多的值,并記錄該整數(shù)直線距離值,作為同名點(diǎn)對的一個(gè)篩選條件。
3.3.2 為了減少同名點(diǎn)對的數(shù)據(jù)量,將兩組面積誤差較大的也進(jìn)行排除,控制面積誤差為0.02 m2,作為同名點(diǎn)對的一個(gè)篩選條件。
3.3.3 將滿足上述篩選條件的同名點(diǎn)對的坐標(biāo)點(diǎn)進(jìn)行讀取并輸出為GIS軟件識別的文本文件,編碼格式為ANSI,否則不會被識別。
3.3.4 同名點(diǎn)的選取必須覆蓋整個(gè)縣域范圍,盡量均勻分布。
同名點(diǎn)對對應(yīng)的是Xian1980和CGCS2000坐標(biāo)系下的源坐標(biāo)與目標(biāo)坐標(biāo)的對應(yīng)值,林業(yè)技術(shù)人員可以將業(yè)務(wù)數(shù)據(jù)源矢量文件,導(dǎo)入GIS軟件,并加載計(jì)算獲得同名點(diǎn)對,實(shí)現(xiàn)相關(guān)業(yè)務(wù)數(shù)據(jù)的轉(zhuǎn)換,其轉(zhuǎn)換結(jié)果可以通過CGCS2000坐標(biāo)系的林保數(shù)據(jù)或者已知其他類型數(shù)據(jù)進(jìn)行核對,確保精度可以達(dá)到轉(zhuǎn)換要求。
本文通過對2種坐標(biāo)系的林地保護(hù)利用規(guī)劃數(shù)據(jù)進(jìn)行分析,通過GDAL技術(shù)、SQLite數(shù)據(jù)技術(shù)實(shí)現(xiàn)兩套數(shù)據(jù)的同名點(diǎn)對的獲取,該同名點(diǎn)對的值可以作為其他林業(yè)及其他相關(guān)業(yè)務(wù)的數(shù)據(jù)轉(zhuǎn)換參數(shù),達(dá)到Xian1980坐標(biāo)系向CGCS2000坐標(biāo)系轉(zhuǎn)換的目的和精度,使林業(yè)部門在無法獲取涉密轉(zhuǎn)換參數(shù)的情況下,依靠現(xiàn)有數(shù)據(jù)資料實(shí)現(xiàn)本部門局部區(qū)域其他類型數(shù)據(jù)的坐標(biāo)轉(zhuǎn)換。