李仁路,萬書勤,康躍虎,李曉彬
(1. 中國科學(xué)院地理科學(xué)與資源研究所陸地水循環(huán)及地表過程重點(diǎn)實(shí)驗室,北京 100101; 2. 中國科學(xué)院大學(xué)資源與環(huán)境學(xué)院,北京 100049)
農(nóng)業(yè)信息技術(shù)的飛速發(fā)展正在改變著傳統(tǒng)農(nóng)業(yè),中國農(nóng)業(yè)正在向著精細(xì)化、智能化、集約化的方向轉(zhuǎn)變[1-2].繪制農(nóng)田電子地圖是實(shí)現(xiàn)精準(zhǔn)農(nóng)業(yè)的基礎(chǔ),長期以來其繪制基本都是由專業(yè)的技術(shù)人員使用專業(yè)的測繪設(shè)備和制圖軟件來完成.灌溉,尤其是現(xiàn)代灌溉,作為精準(zhǔn)農(nóng)業(yè)的重要組成部分,其工程建設(shè)主要包括基礎(chǔ)資料采集、規(guī)劃設(shè)計、施工安裝、維護(hù)管理等.由于微灌工程在安裝后農(nóng)田中所需要采集和繪制的要素信息數(shù)量較多,且每一季作物的種植都需要更新,采用傳統(tǒng)的農(nóng)田電子地圖制作方法已無法滿足需求.
微灌工程設(shè)計成果數(shù)據(jù)包含了構(gòu)建農(nóng)田電子地圖所需要的各種要素的信息,只要能夠充分地利用現(xiàn)有的設(shè)計成果數(shù)據(jù)就可以快速地構(gòu)建起初級農(nóng)田電子地圖.然而CAD是以供圖為目的的軟件,缺乏對空間數(shù)據(jù)信息的描述和分析能力,缺少地理空間位置信息,無法將其直接作為農(nóng)田電子地圖使用,因此需要將其轉(zhuǎn)換為地理信息系統(tǒng)(GIS)所支持的電子地圖格式,GIS不僅可以對空間數(shù)據(jù)和屬性數(shù)據(jù)進(jìn)行管理、分析和處理,還能夠?qū)崿F(xiàn)電子地圖的生產(chǎn)、編輯和顯示等操作.
由于CAD和GIS之間的數(shù)據(jù)模型存在差異性,許多學(xué)者就兩者之間轉(zhuǎn)換的問題進(jìn)行了相關(guān)研究,吳聰聰?shù)萚3]討論了ArcGIS工具模塊、FME軟件、C/S轉(zhuǎn)換平臺、編程這4種數(shù)據(jù)轉(zhuǎn)換方法的優(yōu)缺點(diǎn)和適用范圍;楊娜娜等[4]提出了一套較為完善的CAD規(guī)劃成果數(shù)據(jù)GIS建庫的方案和實(shí)現(xiàn)流程,并基于AutoCAD.NET開發(fā)組件和ArcGIS Engine二次開發(fā)組件有效地實(shí)現(xiàn)了CAD和GIS異構(gòu)數(shù)據(jù)的同化;盡管國內(nèi)外許多研究能實(shí)現(xiàn)CAD和GIS異構(gòu)數(shù)據(jù)的無損轉(zhuǎn)換,但由于缺乏對微灌工程系統(tǒng)深入的了解認(rèn)識,尚不能形成準(zhǔn)確表達(dá)微灌系統(tǒng)工程中的各種要素的電子地圖.無損轉(zhuǎn)換后生成的電子地圖要素與實(shí)際施工安裝的微灌工程設(shè)備要素之間存在著一定差異.
文中在對微灌工程進(jìn)行系統(tǒng)了解的基礎(chǔ)上,通過深入分析設(shè)計成果數(shù)據(jù)和農(nóng)田電子地圖2種數(shù)據(jù)之間數(shù)據(jù)模型和要素表達(dá)方式之間的差異性,提出基于微灌工程設(shè)計成果數(shù)據(jù)構(gòu)建農(nóng)田電子地圖的方法,一方面可以為施工方安裝微灌設(shè)備作業(yè)提供電子地圖參照,同時也可以為農(nóng)業(yè)機(jī)械在作業(yè)時提供微灌農(nóng)田電子地圖.
研究如何利用微灌工程設(shè)計成果數(shù)據(jù)構(gòu)建農(nóng)田電子地圖,首先要深入了解2種數(shù)據(jù)模型的不同特點(diǎn)以及差異性.對于微灌工程設(shè)計成果數(shù)據(jù)來說,由于AutoCAD強(qiáng)大的矢量繪圖功能和簡單易學(xué)的操作,設(shè)計單位常使用該軟件來進(jìn)行微灌工程的設(shè)計.還有一些學(xué)者基于AutoCAD的二次開發(fā)技術(shù)編寫程序,自動輸出生成微灌工程設(shè)計成果數(shù)據(jù)[5],AutoCAD的數(shù)據(jù)模型是為了設(shè)計與制圖而設(shè)計,只注重圖形要素圖形的表達(dá),不能將空間數(shù)據(jù)和屬性數(shù)據(jù)很好結(jié)合,缺少對要素地理空間位置信息的描述.
農(nóng)田電子地圖是精準(zhǔn)農(nóng)業(yè)的重要基礎(chǔ)數(shù)據(jù),存儲著農(nóng)田中每個要素的空間位置參考信息和要素的屬性信息.地理信息系統(tǒng)(GIS)是用于采集、存儲、查詢、分析和顯示地理空間數(shù)據(jù)的計算機(jī)系統(tǒng)[6],其提供了一種能夠管理復(fù)雜空間數(shù)據(jù)和屬性數(shù)據(jù)的手段,能將空間數(shù)據(jù)和屬性數(shù)據(jù)有機(jī)地結(jié)合起來,用以滿足用戶對微灌系統(tǒng)空間信息和屬性信息的綜合需求.文中主要使用的電子地圖存儲方式為GIS所支持的面向?qū)ο蟮臄?shù)據(jù)庫Geodatabase.
對于微灌工程設(shè)計成果數(shù)據(jù)文件, DWG格式文件是其常用的數(shù)據(jù)格式存儲文件,是由AutoCAD生成的一種二進(jìn)制文件,如圖1所示.1個CAD文件可以將其看成1個由5部分組成的DWG文件數(shù)據(jù)庫,分別為頭部、實(shí)體部、表部、塊實(shí)體部和應(yīng)急頭部.CAD文件中所有的圖形單元都會被存儲在這個數(shù)據(jù)庫的實(shí)體部之中,每一種實(shí)體都會被系統(tǒng)賦予唯一的類型名稱以供訪問[7],通過不斷循環(huán)訪問CAD實(shí)體,就可以得到CAD中的每一個圖形元素的信息.
圖1 DWG文件數(shù)據(jù)模型Fig.1 DWG file data model
Geodatabase是面向?qū)ο蟮目臻g數(shù)據(jù)存儲模型,具有面向?qū)ο蟮募夹g(shù)優(yōu)勢,不僅存儲包括這些要素的屬性數(shù)據(jù)以及其空間坐標(biāo)的簡單表格,還存儲著包括這些地理數(shù)據(jù)集的模式和規(guī)則[6].Geodatabase會將矢量數(shù)據(jù)集組織成為要素數(shù)據(jù)集和要素類2種,在要素類中存儲的是具有相同幾何類型的空間要素,在同一個要素數(shù)據(jù)集中存儲的則是具有相同的區(qū)域范圍和坐標(biāo)系的要素類的集合[8],Geodatabase的等級結(jié)構(gòu)對于不同微灌工程文件矢量數(shù)據(jù)的組織和管理十分有利.
一般來說,農(nóng)田電子地圖中空間要素主要內(nèi)容包括農(nóng)田中的管網(wǎng)設(shè)備和其他固有的要素,如井、電線桿、作物等要素.田間一個典型的完整微灌系統(tǒng)灌水管網(wǎng)主要包括了灌水器、毛管、支管、干管等要素,如圖2所示.對于CAD來說,要將這些要素表達(dá)出來時,需要將其抽象成為點(diǎn)、塊、線、文本等圖元結(jié)構(gòu),此時往往只注重圖面顯示的效果,在表達(dá)相關(guān)要素時會出現(xiàn)夸張放大、省略簡化等情況.而在GIS所生成的農(nóng)田電子地圖中,則用點(diǎn)、線、面和注記等類型來表示地理實(shí)體要素,在顯示時需要兼顧其圖面顯示效果和要素屬性信息的表達(dá),往往需要能夠準(zhǔn)確地表達(dá)農(nóng)田中微灌工程要素的各種信息,包括空間信息和屬性信息.
圖2 典型微灌系統(tǒng)組成Fig.2 Composition of typical micro-irrigation system
表1為田間微灌管網(wǎng)系統(tǒng)設(shè)計成果CAD文件與農(nóng)田電子地圖GIS文件之間要素表達(dá)類型的對照表,從表中可以看出,二者在表達(dá)同一要素之間存在差異,在設(shè)計文件中的干管、支管以及毛管都是用一條條的線來表達(dá),這和在GIS中的一致.然而實(shí)際上這些管道并不是一條線,其有著不同的管徑和不同的功能,甚至有著不同的材料,這些在CAD中表達(dá)是根據(jù)不同的線類型、顏色和線寬等信息來進(jìn)行區(qū)分,而在GIS中的這些信息可以根據(jù)其屬性數(shù)據(jù)來進(jìn)行區(qū)分并加以表達(dá).為了圖面內(nèi)容顯示的整潔性,往往毛管內(nèi)容會在設(shè)計文件中被省略或只繪出有代表性的毛管來簡化表達(dá),這些被簡化省略的信息都需要在農(nóng)田電子地圖中表達(dá)出來.
表1 微灌管網(wǎng)系統(tǒng)CAD與GIS圖形要素表達(dá)類型對照表Tab.1 Comparison of graphic element expressions of micro-irrigation network between CAD and GIS
對與灌水器來說,不同的微灌方式的灌水器在設(shè)計文件中的表現(xiàn)形式是不同的.如微噴灌工程中,在設(shè)計文件中為了圖面內(nèi)容的突出顯示效果,往往會對其進(jìn)行放大夸張的顯示,可能會用點(diǎn)、面、塊等類型來對其進(jìn)行描述;對于滴灌工程,由于灌水器是分布在毛管上,毛管信息被簡化省略的同時也會將灌水器的信息一同簡化和省略,并且由于每一條毛管上的灌水器數(shù)量眾多,設(shè)計文件中往往僅將其以文本備注的形式展現(xiàn)出來,然而在農(nóng)田電子地圖中,這些在設(shè)計文件中缺失的灌水器相關(guān)信息都需要以點(diǎn)要素的形式在電子地圖中展現(xiàn)出來.
方案主要采用ESRI公司ArcGIS Engine二次開發(fā)工具包,添加DWGDirect.NET函數(shù)庫來實(shí)現(xiàn)微灌工程CAD設(shè)計文件作為數(shù)據(jù)源構(gòu)建農(nóng)田電子地圖.DWGDirect.NET函數(shù)庫是開放者設(shè)計聯(lián)盟(Open Design Alliance)開發(fā)的用于免費(fèi)讀寫CAD文件的函數(shù)類庫,使用該函數(shù)庫可以實(shí)現(xiàn)脫離AutoCAD平臺對CAD文件進(jìn)行操作.如表1中所示,由于CAD中的實(shí)體圖形種類繁多,針對不同的要素構(gòu)建正確的轉(zhuǎn)換算法,避免出現(xiàn)信息的丟失.圖3為數(shù)據(jù)轉(zhuǎn)換的流程圖.
圖3 流程圖Fig.3 Flow chart
2.2.1 數(shù)據(jù)預(yù)處理
為了防止數(shù)據(jù)處理的過程中帶來不必要的錯誤,首先應(yīng)對本地的微灌工程設(shè)計CAD文件數(shù)據(jù)進(jìn)行數(shù)據(jù)預(yù)處理,數(shù)據(jù)預(yù)處理完成后再進(jìn)行數(shù)據(jù)轉(zhuǎn)換[9].預(yù)處理的操作主要包括:確保所有圖層處于打開狀態(tài);將鎖定和凍結(jié)的圖層進(jìn)行解鎖解凍操作;對圖層涉及的管道的名稱嚴(yán)格按照微灌管網(wǎng)系統(tǒng)的分級來進(jìn)行命名并確認(rèn)管道處在對應(yīng)的圖層中,分為干管(Mainline)、支管(Submain line)、毛管(Latearls)、灌水器(Emitters)等進(jìn)行命名處理,其余圖層除了0圖層外保持默認(rèn);刪除圖層中的重復(fù)的要素;刪除圖層中的無用的廢塊,如指北針、圖例、圖框等要素;檢查是否存在著拓?fù)潢P(guān)系明顯錯誤的圖形,比如地塊圖形是否封閉等,預(yù)處理過程在AutoCAD中進(jìn)行操作即可.
2.2.2 創(chuàng)建地理數(shù)據(jù)庫及屬性信息
數(shù)據(jù)預(yù)處理完成后應(yīng)創(chuàng)建一個用于存儲農(nóng)田電子地圖的數(shù)據(jù)庫,創(chuàng)建要素集和要素類.同時為了便于灌溉信息系統(tǒng)的后期管理和維護(hù),需要為要素類添加相對應(yīng)的屬性表.在微灌工程中存在著許多不同的要素,不同類型的要素需要創(chuàng)建不同的要素屬性,屬性值的添加有些可以在要素進(jìn)行轉(zhuǎn)換的時候添加,有些則需要在后期自行利用相關(guān)軟件添加和修改.
2.2.3 圖形數(shù)據(jù)轉(zhuǎn)換
圖形數(shù)據(jù)轉(zhuǎn)換的實(shí)質(zhì)與關(guān)鍵就是設(shè)計成果數(shù)據(jù)中圖形實(shí)體的遍歷以及其坐標(biāo)信息的提取和重新組合[7],如表1中所示,設(shè)計文件中要素實(shí)體(Entity)的形式多種多樣,有點(diǎn)(DbPoint)、塊(DbBlockReference)、直線(DbLine)、圓(DbCircle)、弧線(DbArc)、樣條曲線(DbSpline)、多段線(DbPolyline)、二維多段線(DbPolyline2d)和文字注記(DbText)等,坐標(biāo)提取需要針對這些實(shí)體類型來讀取相關(guān)的信息,用以提取或者換算坐標(biāo).常用的ArcGIS工具模塊、FME軟件等轉(zhuǎn)換方法由于轉(zhuǎn)換時未考慮設(shè)計文件要素表達(dá)時的簡化省略與夸張效果,造成轉(zhuǎn)換后的電子地圖不能如實(shí)反映農(nóng)田真實(shí)信息,與微灌工程施工效果不一致,考慮到差異性,文中基于微灌工程設(shè)計文件提取具體坐標(biāo)信息的對應(yīng)方案主要包括:① 對于點(diǎn)、塊實(shí)體,設(shè)計文件數(shù)據(jù)中主要包括灌水器或者其他點(diǎn)狀地物類型,直接提取其位置信息X,Y和高程Z(如果高程信息不存在就將其默認(rèn)為0并存入屬性表中,以下操作提取的高程信息同此一致),然后使用ArcGIS Engine的IPoint接口來記錄坐標(biāo)信息. ② 對于圓形實(shí)體、弧線實(shí)體,設(shè)計文件數(shù)據(jù)中主要包括灌水器類型和其他圓形地物的類型,根據(jù)具體的情況,首先統(tǒng)一獲取圓心的位置坐標(biāo)信息和高程值,如果為灌水器,則使用ArcGIS Engine的IPoint接口來記錄此灌水器坐標(biāo),圓形實(shí)體的其他信息寫入該灌水器的屬性表中;如果為其他地物信息,則使用ICircularArc接口來構(gòu)建圓,并將其封裝成為IPolygon類寫入Geodatabase中;如果其他地物類型為弧線實(shí)體類型,還需要獲取其圓心角信息,起點(diǎn)和終點(diǎn)信息,同樣使用ICircularArc接口構(gòu)建并封裝成IPoyline類寫入Geodatabase中. ③ 對于直線實(shí)體、多段線實(shí)體,設(shè)計文件數(shù)據(jù)中主要包括灌水管道類型或者未閉合的壟溝、道路等邊界信息,直線實(shí)體提取其起點(diǎn)和終點(diǎn)的坐標(biāo)及高程值,然后再使用ArcGIS Engine的IPolyline接口來記錄這2對坐標(biāo);多段線實(shí)體一般來說都由直線和弧線共同組成,根據(jù)其分段來獲取每一段的信息,直線使用直線實(shí)體的獲取寫入方法,弧線使用弧線實(shí)體的獲取寫入方法獲取坐標(biāo)信息,最后使用IPolyline類寫入Geodatabase中. ④ 對于樣條曲線實(shí)體,設(shè)計文件數(shù)據(jù)中主要包括灌水管道類型或者其他類型的信息,在獲取其起點(diǎn)、終點(diǎn)坐標(biāo)、高程信息和控制點(diǎn)數(shù)量后,結(jié)合樣條曲線的生成公式擬合得到一系列坐標(biāo),使用ArcGIS Engine的IPolyline接口將這些坐標(biāo)點(diǎn)對來寫入Geodatabase中. ⑤ 對于二維多段線實(shí)體,主要為邊界信息數(shù)據(jù),讀取其節(jié)點(diǎn)的坐標(biāo)并使用IPolygon寫入Geodatabase中. ⑥ 對于設(shè)計文件中的填充、注記,文字實(shí)體等信息,根據(jù)需要寫入對應(yīng)要素的屬性表中.
2.2.4 坐標(biāo)系轉(zhuǎn)換及配準(zhǔn)
對于設(shè)計成果數(shù)據(jù)來說,CAD一般采用的是幾何平面坐標(biāo)系,而GIS則采用地理坐標(biāo)系,由于應(yīng)用農(nóng)田電子地圖需要獲取要素精確的位置信息[10],可以利用在微灌工程建設(shè)初期信息收集時采用的高精度GPS采集的坐標(biāo)信息來對初步構(gòu)建的農(nóng)田電子地圖配準(zhǔn).
2.2.5 簡化要素的補(bǔ)充
在遍歷完微灌工程設(shè)計成果數(shù)據(jù)中的圖形要素后,發(fā)現(xiàn)仍然存在著一些被簡化省略的要素信息需要更新到電子地圖中,對這些缺失的要素進(jìn)行補(bǔ)全時,需要根據(jù)注記提供的信息寫入圖形要素信息,從而初步構(gòu)建起完整要素的農(nóng)田電子地圖.
為驗證該方案的可行性,利用DWGDirect.NET類庫和ArcGIS Engine二次開發(fā)編寫程序,基于微灌工程設(shè)計成果數(shù)據(jù),對農(nóng)田電子地圖進(jìn)行初步構(gòu)建,圖4為轉(zhuǎn)換前后數(shù)據(jù)截圖.
圖4 轉(zhuǎn)換前后數(shù)據(jù)截圖Fig.4 Data captured before and after transform
轉(zhuǎn)換前利用DWGDirect.NET類庫讀取的CAD設(shè)計成果數(shù)據(jù)的部分預(yù)覽圖(見圖4a),以及利用該設(shè)計成果數(shù)據(jù)初步構(gòu)建補(bǔ)充部分管道截圖(見圖4b).從圖中可以看到,圖4a中設(shè)計數(shù)據(jù)中缺失的數(shù)據(jù)在圖4b中得到補(bǔ)充完善,并可以對其分級進(jìn)行管理.
1) 文中研究了基于微灌工程設(shè)計成果數(shù)據(jù)文件初步構(gòu)建農(nóng)田電子地圖的方法,該方法利用DWGDirect.NET函數(shù)庫和ArcGIS Engine二次開發(fā)技術(shù)進(jìn)行程序編寫實(shí)現(xiàn).
2) 解決了微灌工程農(nóng)田電子地圖獲取成本高,更新頻率快的問題,為微灌工程的建設(shè)、管理和維護(hù)提供基礎(chǔ)地圖數(shù)據(jù)的支持與服務(wù).
考慮到由于初步構(gòu)建的農(nóng)田電子地圖屬性數(shù)據(jù)還需要補(bǔ)充和完善,部分管道在施工時還需要進(jìn)行位置修正處理,在以后的研究中還需要進(jìn)行更深入的探討.