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