張 標(biāo),陳 楠
(1.自然資源部陜西基礎(chǔ)地理信息中心,陜西 西安 710054;2.長(zhǎng)安大學(xué) 地質(zhì)工程與測(cè)繪學(xué)院,陜西 西安 710054)
地理信息資源是國(guó)民經(jīng)濟(jì)和社會(huì)信息化的重要內(nèi)容,隨著各級(jí)基礎(chǔ)測(cè)繪和地理國(guó)情普查等重大項(xiàng)目的開(kāi)展,各級(jí)測(cè)繪部門積累了大量矢量數(shù)據(jù)成果,并在經(jīng)濟(jì)建設(shè)中發(fā)揮了重要作用[1-2]。但受到歷史原因、技術(shù)條件、數(shù)據(jù)標(biāo)準(zhǔn)等因素的影響,這些矢量數(shù)據(jù)在數(shù)據(jù)格式、坐標(biāo)系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)內(nèi)容等方面存在不同程度的差異[3-4],這些差異導(dǎo)致矢量數(shù)據(jù)在整合處理和共享應(yīng)用時(shí)需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換處理。針對(duì)異構(gòu)矢量數(shù)據(jù)間相互轉(zhuǎn)換的問(wèn)題,許多學(xué)者做了大量的研究工作,文獻(xiàn)[5]基于地理要素編碼實(shí)現(xiàn)了將CAD數(shù)據(jù)入庫(kù)到GeoDatabase數(shù)據(jù)庫(kù),但該方法沒(méi)有實(shí)現(xiàn)數(shù)據(jù)過(guò)濾功能,造成轉(zhuǎn)換后數(shù)據(jù)冗余。文獻(xiàn)[6]利用組件技術(shù),研究了GIS數(shù)據(jù)與SuperMap數(shù)據(jù)之間的轉(zhuǎn)換問(wèn)題,但該方法沒(méi)有對(duì)屬性字段進(jìn)行處理。文獻(xiàn)[7]通過(guò)對(duì)數(shù)據(jù)層的拆分與合并,提出了基于屬性字段的方法實(shí)現(xiàn)了Coverage格式與MDB格式的轉(zhuǎn)換,但該方法沒(méi)有實(shí)現(xiàn)屬性內(nèi)容的映射。文獻(xiàn)[8]研究了MapGIS數(shù)據(jù)與GIS數(shù)據(jù)之間的轉(zhuǎn)換問(wèn)題。上述學(xué)者的研究工作在不同程度上解決了異構(gòu)矢量數(shù)據(jù)相互轉(zhuǎn)換的問(wèn)題,但在通用性、全面性、靈活性方面還存在一定問(wèn)題。
因此,本文設(shè)計(jì)和實(shí)現(xiàn)一種異構(gòu)矢量數(shù)據(jù)映射工具,在充分分析異構(gòu)矢量數(shù)據(jù)間數(shù)據(jù)格式、坐標(biāo)系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)內(nèi)容等各種差異的基礎(chǔ)上,進(jìn)行數(shù)據(jù)映射工具關(guān)鍵環(huán)節(jié)的設(shè)計(jì),包括數(shù)據(jù)結(jié)構(gòu)獲取、數(shù)據(jù)映射關(guān)系建立、數(shù)據(jù)映射關(guān)系存儲(chǔ)、數(shù)據(jù)內(nèi)容轉(zhuǎn)換等內(nèi)容。并利用ArcGIS Engine相關(guān)組件,在Visual Studio開(kāi)發(fā)環(huán)境下進(jìn)行了工具實(shí)現(xiàn),將所開(kāi)發(fā)的工具應(yīng)用于陜西省基礎(chǔ)地理信息數(shù)據(jù)與天地圖框架數(shù)據(jù)之間的數(shù)據(jù)相互轉(zhuǎn)換。實(shí)踐結(jié)果表明,本文設(shè)計(jì)與實(shí)現(xiàn)的異構(gòu)矢量數(shù)據(jù)映射工具,能夠減少數(shù)據(jù)轉(zhuǎn)換中的人工重復(fù)作業(yè),轉(zhuǎn)換后的數(shù)據(jù)結(jié)構(gòu)正確、內(nèi)容完整,在保證數(shù)據(jù)轉(zhuǎn)換質(zhì)量的同時(shí),有效提升了數(shù)據(jù)轉(zhuǎn)換效率。
受到歷史原因、技術(shù)條件、數(shù)據(jù)標(biāo)準(zhǔn)等因素的影響,不同矢量數(shù)據(jù)存在不同程度的差異,主要表現(xiàn)在數(shù)據(jù)格式、坐標(biāo)系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)內(nèi)容等方面。
由于歷史技術(shù)條件、數(shù)據(jù)生產(chǎn)方式等原因影響,不同矢量數(shù)據(jù)的成果格式不盡相同,常見(jiàn)的矢量數(shù)據(jù)格式主要包括ESRI的Coverage、Shapefile、Geodatabase、AutoCAD以及各類GIS平臺(tái)軟件數(shù)據(jù)格式,Coverage格式(*.E00)是早期的數(shù)據(jù)存儲(chǔ)格式,要素的空間信息和屬性信息記錄較為完整,并具有嚴(yán)格的要素拓?fù)潢P(guān)系。Shapefile格式(*.shp)是簡(jiǎn)單的面向GIS的數(shù)據(jù)存儲(chǔ)格式,要素的空間信息和屬性信息分離存儲(chǔ),不存儲(chǔ)拓?fù)潢P(guān)系。Geodatabase格式(*.mdb、*.gdb)是面向GIS實(shí)體對(duì)象的數(shù)據(jù)存儲(chǔ)格式,可利用關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行管理,是當(dāng)前的主流數(shù)據(jù)存儲(chǔ)格式。AutoCAD格式(*.dwg、*.dxf)是非面向GIS對(duì)象的數(shù)據(jù)存儲(chǔ)格式,偏向于制圖表達(dá),僅存儲(chǔ)要素的空間定位信息,缺少拓?fù)浜蛯傩躁P(guān)聯(lián)。目前主流GIS平臺(tái)軟件數(shù)據(jù)格式基本上是面向GIS實(shí)體對(duì)象的數(shù)據(jù)存儲(chǔ)格式,如Geoway軟件的gwp格式、MapGIS軟件的mpj格式[9-10]。
同樣由于歷史原因,不同矢量數(shù)據(jù)采用的坐標(biāo)系統(tǒng)也不盡相同,主要包括1954年北京坐標(biāo)系、1980年西安坐標(biāo)系、2000國(guó)家大地坐標(biāo)系、地方獨(dú)立坐標(biāo)系。1954年北京坐標(biāo)系和1980年西安坐標(biāo)系是我國(guó)早期基礎(chǔ)地理信息數(shù)據(jù)通常采用的大地坐標(biāo)系統(tǒng),是二維的非地心坐標(biāo)系,制約了地理信息數(shù)據(jù)的精確表達(dá)和各種先進(jìn)空間技術(shù)的廣泛應(yīng)用。地方獨(dú)立坐標(biāo)系是各個(gè)地方根據(jù)自己的實(shí)際需求建立的坐標(biāo)系,適用于局部特定區(qū)域,地理信息數(shù)據(jù)的精度較高但不利于數(shù)據(jù)交換和共享。2000國(guó)家大地坐標(biāo)系是我國(guó)當(dāng)前最新的國(guó)家大地坐標(biāo)系,是一個(gè)高精度的、以地球質(zhì)量中心為原點(diǎn)、動(dòng)態(tài)、實(shí)用、統(tǒng)一的大地坐標(biāo)系[11-12]。
由于數(shù)據(jù)生產(chǎn)時(shí)所采用的數(shù)據(jù)標(biāo)準(zhǔn)不同,不同矢量數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)存在著較大差異,主要表現(xiàn)在圖層劃分和圖層屬性結(jié)構(gòu)兩個(gè)方面。矢量數(shù)據(jù)中的圖層是相似的地理要素的分組,并按照要素類別特征與幾何形態(tài)進(jìn)行分層與命名,由于不同數(shù)據(jù)標(biāo)準(zhǔn)對(duì)地理要素分類分級(jí)的方法不同,導(dǎo)致不同矢量數(shù)據(jù)中的圖層分層與命名方式不同。以道路類地理要素為例,其在1:5萬(wàn)DLG、1:1萬(wàn)DLG、地理國(guó)情普查、天地圖框架數(shù)據(jù)中的圖層劃分如表1所示。
表1 道路類地理要素圖層劃分
屬性是用于描述地理要素的質(zhì)量、數(shù)量、分類、性質(zhì)等特征的描述性信息,受矢量數(shù)據(jù)建設(shè)目標(biāo)、應(yīng)用需求等原因影響,不同數(shù)據(jù)標(biāo)準(zhǔn)對(duì)地理要素特征屬性的選取也不相同,從而導(dǎo)致了不同矢量數(shù)據(jù)相同圖層的屬性結(jié)構(gòu)也存在著差異,以道路線圖層為例,其在不同數(shù)據(jù)中的圖層屬性結(jié)構(gòu)如表2所示。
表2 道路線狀圖層屬性結(jié)構(gòu)
同樣由于數(shù)據(jù)標(biāo)準(zhǔn)的原因,不同矢量數(shù)據(jù)在數(shù)據(jù)內(nèi)容方面也存在著較大差異,主要表現(xiàn)在要素差異和要素屬性差異兩個(gè)方面。
要素差異包括要素幾何特征差異和要素選取差異。要素幾何特征差異是指同一地理要素在不同矢量數(shù)據(jù)中使用不同幾何形態(tài)的幾何對(duì)象進(jìn)行表達(dá)。如“河流流向、溝渠流向”要素在一些矢量數(shù)據(jù)中以有向點(diǎn)的方式進(jìn)行表達(dá),而在另一些矢量數(shù)據(jù)中則通過(guò)定長(zhǎng)的有向線進(jìn)行表達(dá)。要素選取差異是指由于選取指標(biāo)、采集要求等不同導(dǎo)致不同矢量數(shù)據(jù)中的要素個(gè)數(shù)和內(nèi)容的差異。如一些沿海地區(qū)的矢量數(shù)據(jù)中會(huì)有海洋要素,而內(nèi)陸地區(qū)則沒(méi)有海洋要素。
要素屬性差異包括屬性概念差異和屬性內(nèi)容差異。屬性概念差異是指同一個(gè)屬性概念在不同矢量數(shù)據(jù)中采用不同的表示語(yǔ)言或數(shù)據(jù)格式而導(dǎo)致的差異,如要素分類代碼字段在不同矢量數(shù)據(jù)中采用“GB”、“CC”、“CODE”、“CLASID”等名稱,字段格式有“長(zhǎng)整型”或“文本型”。屬性內(nèi)容差異是指同一個(gè)屬性概念在不同矢量數(shù)據(jù)中采用不同的內(nèi)容值域而導(dǎo)致的差異。如等級(jí)字段在一些矢量數(shù)據(jù)中的值域?yàn)椤耙坏取薄ⅰ岸取?、“三等”,在另一些矢量?shù)據(jù)中則使用“1”、“2”、“3”進(jìn)行表示。
數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)內(nèi)容差異是異構(gòu)矢量數(shù)據(jù)差異中的主要差異,同時(shí)也是數(shù)據(jù)轉(zhuǎn)換中需要重點(diǎn)處理的內(nèi)容。
在異構(gòu)矢量數(shù)據(jù)差異分析的基礎(chǔ)上,進(jìn)行異構(gòu)矢量數(shù)據(jù)映射工具關(guān)鍵環(huán)節(jié)的設(shè)計(jì),主要包括數(shù)據(jù)結(jié)構(gòu)獲取、數(shù)據(jù)映射關(guān)系建立、數(shù)據(jù)映射關(guān)系存儲(chǔ)、數(shù)據(jù)內(nèi)容轉(zhuǎn)換等內(nèi)容。
數(shù)據(jù)結(jié)構(gòu)獲取是建立數(shù)據(jù)映射關(guān)系的前提。數(shù)據(jù)結(jié)構(gòu)獲取的方式設(shè)計(jì)有兩種:讀取數(shù)據(jù)模板文件和用戶自定義。讀取數(shù)據(jù)模板文件是通過(guò)讀取實(shí)際矢量數(shù)據(jù),從中獲取其結(jié)構(gòu)信息。用戶自定義是用戶根據(jù)數(shù)據(jù)標(biāo)準(zhǔn)創(chuàng)建矢量數(shù)據(jù)的結(jié)構(gòu)信息,包括圖層名稱、圖層幾何類型、圖層屬性結(jié)構(gòu)(屬性字段的名稱、類型、長(zhǎng)度、是否允許為空)等內(nèi)容。
數(shù)據(jù)映射關(guān)系本質(zhì)上是數(shù)據(jù)對(duì)象的數(shù)據(jù)模式間的映射關(guān)系,它是數(shù)據(jù)映射中最為核心和復(fù)雜的部分[13]。數(shù)據(jù)映射關(guān)系的內(nèi)容包括圖層關(guān)系、屬性字段關(guān)系、屬性內(nèi)容關(guān)系,數(shù)據(jù)映射關(guān)系的類型包括無(wú)對(duì)應(yīng)關(guān)系、一對(duì)一關(guān)系、一對(duì)多關(guān)系、多對(duì)一關(guān)系、多對(duì)多關(guān)系[14]??紤]到數(shù)據(jù)映射關(guān)系內(nèi)容較多,類型又較為復(fù)雜,如果采用傳統(tǒng)的Excel或文本對(duì)照表的方式,一則不形象直觀,二則有可能會(huì)產(chǎn)生遺漏和錯(cuò)誤。因此為了使用戶能夠簡(jiǎn)便、準(zhǔn)確的建立起映射關(guān)系,需要設(shè)計(jì)一種形象直觀的方法,為此進(jìn)行如下設(shè)計(jì):將兩種異構(gòu)矢量數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)中的圖層、屬性字段以類似目錄樹(shù)的方式進(jìn)行顯示,用戶只需在節(jié)點(diǎn)之間進(jìn)行連線,便可建立起映射關(guān)系。對(duì)于屬性內(nèi)容關(guān)系的建立則繼續(xù)沿用對(duì)照表的方式。
圖1 映射關(guān)系示例
數(shù)據(jù)映射關(guān)系建立后(見(jiàn)圖1),需要將其轉(zhuǎn)化為計(jì)算機(jī)可讀取、人工能編輯維護(hù)的文件,以便能夠進(jìn)行應(yīng)用。XML是一種用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語(yǔ)言,具有異構(gòu)性、可擴(kuò)展性、靈活性、平臺(tái)無(wú)關(guān)性的特點(diǎn),能夠更準(zhǔn)確地搜索內(nèi)容,更方便地傳輸內(nèi)容,更好地描述事物[15]。因此選擇將數(shù)據(jù)映射關(guān)系保存為XML文件,并設(shè)計(jì)如下的數(shù)據(jù)結(jié)構(gòu)。
圖層1,幾何類型
映射圖層1,幾何類型
屬性字段1,字段類型1,字段長(zhǎng)度1,映射屬性字段1,映射字段類型1,映射字段長(zhǎng)度1
屬性字段2,字段類型2,字段長(zhǎng)度2,映射屬性字段2,映射字段類型2,映射字段長(zhǎng)度2
……
屬性字段,字段值1,映射字段值1
屬性字段,字段值2,映射字段值2
……
圖層2,幾何類型
映射圖層2,幾何類型
屬性字段1,字段類型1,字段長(zhǎng)度1,映射屬性字段1,映射字段類型1,映射字段長(zhǎng)度1
……
在兩種異構(gòu)矢量數(shù)據(jù)間建立數(shù)據(jù)映射關(guān)系,形成數(shù)據(jù)映射關(guān)系XML文件,如圖2所示。
圖2 XML文件示例
數(shù)據(jù)內(nèi)容轉(zhuǎn)換是在數(shù)據(jù)映射關(guān)系文件的基礎(chǔ)上對(duì)實(shí)際矢量數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理。由于數(shù)據(jù)映射關(guān)系文件包含了兩種異構(gòu)矢量數(shù)據(jù)間的完整對(duì)照關(guān)系,為了方便用戶對(duì)數(shù)據(jù)內(nèi)容進(jìn)行選擇和過(guò)濾,數(shù)據(jù)映射工具需要支持?jǐn)?shù)據(jù)文件、圖層、屬性字段、地理要素等4個(gè)層次的選擇和過(guò)濾,為此做如下設(shè)計(jì):將需要處理的數(shù)據(jù)文件、圖層、屬性字段以列表的方式進(jìn)行顯示,用戶通過(guò)勾選的方式實(shí)現(xiàn)選擇和過(guò)濾,對(duì)于地理要素的選擇和過(guò)濾,則通過(guò)屬性選擇的方式進(jìn)行實(shí)現(xiàn)。
按照上述關(guān)鍵環(huán)節(jié)的設(shè)計(jì),利用ArcGIS Engine相關(guān)組件,在Visual Studio開(kāi)發(fā)環(huán)境下進(jìn)行異構(gòu)矢量數(shù)據(jù)映射工具的實(shí)現(xiàn)。
異構(gòu)矢量數(shù)據(jù)映射工具的主要功能模塊由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)關(guān)系、數(shù)據(jù)映射3部分組成,數(shù)據(jù)結(jié)構(gòu)用于獲取兩種異構(gòu)矢量數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),包含“讀取模板文件”、“用戶自定義模板”兩個(gè)命令。數(shù)據(jù)關(guān)系用于建立兩種異構(gòu)矢量數(shù)據(jù)間的關(guān)系,包含“建立映射關(guān)系”、“讀取映射關(guān)系文件”、“保存映射關(guān)系文件”3個(gè)命令。數(shù)據(jù)映射用于實(shí)際矢量數(shù)據(jù)的轉(zhuǎn)換,包含“數(shù)據(jù)轉(zhuǎn)換”和“系統(tǒng)配置”兩個(gè)命令。工具的功能模塊及邏輯流程如圖3—圖4所示。
圖3 工具的功能模塊
圖4 工具的邏輯流程
ArcEngine是ESRI公司推出的可用于構(gòu)建定制應(yīng)用的一個(gè)完整的嵌入式的GIS組件庫(kù)。其中有3000多個(gè)對(duì)象可供開(kāi)發(fā)人員調(diào)用,為開(kāi)發(fā)人員集成了大量的GIS功能,可以針對(duì)GIS解決方案快速地搭建應(yīng)用平臺(tái)[16]。異構(gòu)矢量數(shù)據(jù)映射工具采用基于ArcEngine二次開(kāi)發(fā)的方式,在Visual Studio開(kāi)發(fā)環(huán)境下建立工程,利用MapControl、TocControl、ToolbarControl等控件,IWorkspaceFactory、IFeature、IGeometry、IField等相關(guān)接口,按照?qǐng)D3所示的功能模塊與圖4所示的邏輯流程編寫相關(guān)代碼,編譯形成可執(zhí)行文件,完成工具的開(kāi)發(fā)實(shí)現(xiàn)。工具的部分界面如圖5所示。
將按照本文設(shè)計(jì)與實(shí)現(xiàn)的異構(gòu)矢量數(shù)據(jù)映射工具應(yīng)用于陜西省基礎(chǔ)地理信息數(shù)據(jù)與天地圖框架數(shù)據(jù)之間的數(shù)據(jù)轉(zhuǎn)換工作,其效果如圖6所示。實(shí)踐結(jié)果表明,映射工具能夠依據(jù)制定的映射關(guān)系進(jìn)行圖層、屬性字段、屬性內(nèi)容的轉(zhuǎn)換,在減少人工作業(yè)的同時(shí)能夠保證數(shù)據(jù)轉(zhuǎn)換的準(zhǔn)確性,提升了數(shù)據(jù)轉(zhuǎn)換效率。
圖5 工具的部分界面
圖6 數(shù)據(jù)轉(zhuǎn)換結(jié)果
完善的工具是提高作業(yè)效率和質(zhì)量的關(guān)鍵。本文針對(duì)異構(gòu)矢量數(shù)據(jù)間相互轉(zhuǎn)換的問(wèn)題,設(shè)計(jì)和實(shí)現(xiàn)一種異構(gòu)矢量數(shù)據(jù)映射工具,并將其應(yīng)用于陜西省基礎(chǔ)地理信息數(shù)據(jù)與天地圖框架數(shù)據(jù)之間的數(shù)據(jù)相互轉(zhuǎn)換,實(shí)踐結(jié)果表明,本文設(shè)計(jì)和實(shí)現(xiàn)的工具能夠減少數(shù)據(jù)轉(zhuǎn)換中的人工重復(fù)作業(yè),轉(zhuǎn)換后的數(shù)據(jù)結(jié)構(gòu)正確、內(nèi)容完整,數(shù)據(jù)關(guān)系映射文件也具有一定的靈活性,同時(shí)保證異構(gòu)矢量數(shù)據(jù)相互轉(zhuǎn)換的準(zhǔn)確性,有效的解決了異構(gòu)矢量數(shù)據(jù)相互轉(zhuǎn)換的問(wèn)題,具有一定的參考價(jià)值。