石全悅,朱迎九
(1安徽省第一測(cè)繪院,安徽合肥 230031;2安徽省地質(zhì)礦產(chǎn)勘查局327地質(zhì)隊(duì),安徽合肥 230011)
在計(jì)算機(jī)輔助繪圖中,如AutoCAD,由于屬性信息的處理難度大,無(wú)法適應(yīng)對(duì)空間數(shù)據(jù)的分析研究;進(jìn)入GIS時(shí)代以來,對(duì)空間數(shù)據(jù)處理的方法越來越多,依據(jù)空間關(guān)系解決實(shí)際問題的工具大量出現(xiàn),但從頂層設(shè)計(jì)上去把握空間關(guān)系的使用,做的很不夠,操作上主動(dòng)使用空間關(guān)系解決問題的為數(shù)甚少;有必要研究空間關(guān)系在處理地理數(shù)據(jù)上的應(yīng)用。
地理處理(geoprocessing),就是對(duì)地理信息數(shù)據(jù)的操作。地理信息系統(tǒng)(GIS)在地學(xué)領(lǐng)域的應(yīng)用已經(jīng)比較廣泛,MAPGIS、ArcGIS軟件的使用成為業(yè)界的主流。處理地理數(shù)據(jù)手段用的比較多,卻并不規(guī)范,在技術(shù)文件中幾乎看不到準(zhǔn)確描述,比如關(guān)于空間關(guān)系的約定和具體使用。要素之間、要素與要素類之間、要素類之間存在一定的空間關(guān)系,這些關(guān)系包括:相交(含3D)、在一定的距離內(nèi)(含3D)相鄰、包含、完全包含、在其內(nèi)、接觸、共線、交叉等等,還有些空間關(guān)系是自定義的。把握這些空間關(guān)系的內(nèi)涵,將有助于提高操作地理信息數(shù)據(jù)效率。
利用空間關(guān)系操作地理信息數(shù)據(jù)的主動(dòng)性、針對(duì)性不強(qiáng),表現(xiàn)在:
圖1 河流中注記點(diǎn)、中心線、面空間關(guān)系Figure 1.Spatial relationship among the annotation points,center line and surface for a river
如圖1所示,在河流中,水面、河流中心線、河流名注記三者,均有NAME值,往往作業(yè)員會(huì)逐個(gè)賦值;道路名稱注記、道路的中心線、道路面存在相似的問題。這樣效率不高,而且容易出現(xiàn)錯(cuò)誤。
它們?nèi)唛g存在著一定的約束關(guān)系,點(diǎn)在線上,點(diǎn)在面內(nèi)、線在面內(nèi),某些屬性具有一致性。沒有利用好這種約束關(guān)系,就會(huì)造成抓不住重點(diǎn)或處理問題不全面的后果。
某一級(jí)別行政區(qū)域的下一級(jí)行政地名不能重名,但在實(shí)際成果中時(shí)卻出現(xiàn)了這種情況。大比例尺地形圖中居民地,建筑材料和樓層在點(diǎn)文件已經(jīng)表示,還需要將它們記錄到居民地的面文件中,未利用空間關(guān)系處理,導(dǎo)致實(shí)際中出現(xiàn)較多錯(cuò)誤。
橋在路的中心線上,水系的結(jié)構(gòu)線、流向線在水面內(nèi),高程注記點(diǎn)應(yīng)與高程點(diǎn)距離適中、注記值與高程點(diǎn)的屬性值相符。在質(zhì)檢工作中發(fā)現(xiàn)一些這方面的問題,是未運(yùn)用空間關(guān)系分析處理實(shí)例。
河流面包含河流中心線、河流注記點(diǎn)流向線,縣級(jí)政區(qū)面包含鄉(xiāng)鎮(zhèn)級(jí)單位點(diǎn)、鄉(xiāng)鎮(zhèn)級(jí)區(qū)域包含行政村點(diǎn),居民地的面文件包含注記點(diǎn)文件(含建筑材料和層高屬性):
以下代碼以居民地為例,GB**為表達(dá)式,選取符合條件數(shù)據(jù);這種方法適合一類問題:選取包含的對(duì)象,提取屬性,進(jìn)一步使用。
創(chuàng)建居民地注記點(diǎn)圖層:
MakeFeatureLayer("ZJZR","lyr1","GB**")
創(chuàng)建居民地面圖層:
MakeFeatureLayer("BPOLY","lyr2","GB**")
遍歷其中的每一要素(geometry),通過包含關(guān)系找到待分析的要素,構(gòu)成要素集:
SelectLayerByLocation('lyr1','WITHIN',geometry)[1]
再次遍歷該要素集,分析之后,決定后續(xù)的操作。
高程的注記點(diǎn)是高程點(diǎn)一定范圍內(nèi)的點(diǎn),距離適中,下面代碼就是用點(diǎn)選點(diǎn):
SelectLayerByLocation("pt0"," DISTANCE",geometry,"11 Meters")
使用臨近關(guān)系在批量接邊時(shí)也很有用:用接邊線選出待接邊數(shù)據(jù),提取待接邊數(shù)據(jù)的端點(diǎn),得到偽結(jié)點(diǎn)、懸掛點(diǎn)數(shù)據(jù)集,先處理懸掛點(diǎn),消除懸掛點(diǎn),到最后只存在偽結(jié)點(diǎn),遍歷偽結(jié)點(diǎn),用每個(gè)偽結(jié)點(diǎn)來選線,讀取屬性,進(jìn)行比對(duì)。這樣就解決了屬性不接邊的難題。
在某些條件下錯(cuò)誤的空間關(guān)系,在另一條件下又是合理的,定義常見空間關(guān)系表,編寫查詢表達(dá)式,關(guān)鍵時(shí)使用它們。
路網(wǎng)中高級(jí)別的道路中心線在作業(yè)區(qū)內(nèi)懸掛,一般來說是錯(cuò)誤,需要認(rèn)真核實(shí)確認(rèn),但低級(jí)別的道路的懸掛點(diǎn)落在高級(jí)道路上屬于正常。又如等高線懸掛在坎上,屬于正常。
在拓?fù)錂z查中,查懸掛會(huì)報(bào)出大量問題,讓人無(wú)從下手,這時(shí)可以用空間關(guān)系剔除那些合理的懸掛,剩下來是確實(shí)需要要處理的問題。
標(biāo)準(zhǔn)圖層的范圍,可以作為其他圖層范圍正確與否的依據(jù),這種方法高效,而使用標(biāo)準(zhǔn)圖層的范圍面通過CONTAIN、WITHIN 關(guān)系來判斷具體的幾何體是則更準(zhǔn)確。
遍歷要素,根據(jù)空間關(guān)系選擇要素,這種方法很精準(zhǔn),也很耗時(shí);如果使用空間索引[2],在更小的區(qū)域內(nèi)找到待分析要素,也是空間關(guān)系的具體應(yīng)用。
在縣級(jí)區(qū)域內(nèi)[3],鄉(xiāng)鎮(zhèn)級(jí)行政地名不應(yīng)相同;在鄉(xiāng)鎮(zhèn)級(jí)區(qū)域內(nèi)村級(jí)行政地名不應(yīng)相同。原因是單位遷址,增了新的,沒刪老的;也與分區(qū)塊作業(yè)有關(guān)系。當(dāng)數(shù)據(jù)匯總到地市一級(jí)、省級(jí),錯(cuò)誤量具很大,人工檢查是通過高級(jí)排序?yàn)g覽屬性表,工作量大,難免出錯(cuò)。正確做法是利用高一級(jí)的行政區(qū)域,選擇下一級(jí)行政單位,對(duì)選中的數(shù)據(jù)集執(zhí)行查重查錯(cuò)操作,從宏觀到微觀處理問題層次清楚,也無(wú)錯(cuò)漏之憂。
逐級(jí)分析。
基于空間關(guān)系提取數(shù)據(jù)、分析數(shù)據(jù)、讀寫數(shù)據(jù)、刪除數(shù)據(jù),比起手工操作GIS,效率提高了很多。在地理國(guó)情、基礎(chǔ)地理信息數(shù)據(jù)更新工程、天地圖領(lǐng)域的地理數(shù)據(jù)處理中均得到一定的應(yīng)用。利用這種空間關(guān)系,可以有更多的作為:比如,利用最新的地形圖成果,制作遙感解譯樣本。