郭夢熾*
(1.哈爾濱市勘察測繪研究院,黑龍江哈爾濱 150010; 2.哈爾濱數字城市科技有限公司,黑龍江哈爾濱 150010)
EPS地理信息工作站是北京清華山維新技術開發有限公司研發的面向測繪、基礎地理信息生產的軟件系統。它以地理信息系統應用的角度構建數據模型,綜合CAD技術與GIS技術,以數據庫為核心,將圖形和屬性關聯為一體,從生產源頭支持測繪成果的信息轉換。同時,EPS平臺支持基于腳本語言的二次開發技術,用于用戶定制開發平臺不支持的功能以及處理重復性工作。本文以基礎測繪數據生產中道路注記到道路屬性的轉換為例,介紹EPS腳本技術在測繪生產中的應用。
EPS腳本技術與AutoCAD的ActiiveX技術類似,用戶能夠以VBScript或JScript語言標準為基礎,在EPS平臺內部以編程的方式來訪問EPS提供的對象和方法。與AutoCAD的ActiveX技術不同的是,EPS沒有多層次的對象模型體系,它僅提供了SSProcess這個系統缺省定義的對象,該對象是與EPS平臺交互的主要入口對象。SSProcess對象暴露了EPS平臺預留給用戶的所有功能函數,如選擇集操作、圖形編輯、數據整理等。與AutoCAD的ActiveX開發技術相比,這種面向過程的腳本技術,更加簡潔高效,適合于缺少面向對象編程背景知識的廣大測繪工作者,使得他們能夠將精力集中于具體的業務邏輯實現上。同時,通過EPS腳本提供的外部函數調用功能,能夠實現函數級別的代碼重用,便于構建具有良好邏輯層次的通用代碼庫和大型應用模塊。
在基礎地形圖中,圖形是地物的幾何抽象表達,是基礎地形圖的主要構成元素。同時,為了便于讀圖判圖,文字注記同樣是必不可少的,是地物語義級別的表達。以道路為例,道路中心線、道路邊線、道路面等幾何形體表達了道路的幾何位置、空間形態等屬性,道路名稱注記、材質注記表達了道路的標識、材料等屬性。注記的另一個重要作用是GIS屬性數據的重要來源和依據,將地形圖中的注記內容轉為GIS屬性數據是GIS屬性數據生產的一種快捷有效的方式。但是在EPS平臺中,僅提供了閉合地物內注記轉換為地物的屬性值的功能,對于線性地物,如道路中心線,則沒有提供相應的方法實現注記到屬性值的轉換。必須通過EPS腳本技術進行定制開發。
根據基礎地形圖成圖規范,一個完整的道路名稱作為一個道路注記對象存在。道路注記一般以道路中心線為定位基準,以單點注記、曲線注記的方式分布于道路中心線兩側附近。通過對數據源的分析,發現部分道路注記不規范,沒有將完整的道路名稱作為一個獨立的道路注記,而是將道路名稱的每個字作為一個道路注記對象。另一方面,道路注記與道路中心線沒有內在的邏輯維護其對應關系。解決這兩個問題,是將道路注記轉為道路中心線屬性值的關鍵,具體方法如下所述。
(1)道路名稱注記的預處理
道路名稱注記的預處理主要針對兩種道路注記問題。第一種,對于具有完整道路名稱的注記,為了地圖整飾效果,部分道路名稱字符之間使用了空格字符,便于注記能夠均勻分布在道路中心線上。這種情況的解決辦法只需要清除字符之間的空格即可。第二種,對于道路名稱每個字符作為一個注記的情況,需要對道路注記進行合并,合并的具體算法是:
①遍歷每一個道路名稱注記;
②對當前的道路名稱注記,如果該注記只有一個字符,轉到步驟③;如果該注記大于或等于3個字符,且最后一個字符以“路”、“街”、“道”結束轉到步驟④,否則轉到步驟①;
③將該字符追加到字符串變量roadName中,判斷該字符是否是“路”、“街”、“道”,如果是,則 road-Name即為完整的道路名稱注記,保存到對應的道路中心線的屬性值中;同時清空roadName內容,轉到步驟①,否則直接轉到步驟①;
④該注記是完整的道路注記,如果各字符間有空格,清除空格,然后保存到對應的道路中心線的屬性值中。
由于道路名稱的單個字符注記的字符順序與注記ID順序是一致的,因此,可以保證以上算法的正確性。
(2)道路注記與道路中心線的匹配
問題(1)中,“保存到對應的道路中心線的屬性值中”的前提是找到道路注記匹配的道路中心線。線狀地物與注記的一般匹配過程是:生成線狀地物的一定寬度的緩沖區,將線構成面,面內的注記即為與該線狀地物匹配的注記。然而,EPS平臺并沒有提供緩沖區生成算法,因此,無法采用這種方法進行匹配工作。在EPS平臺提供的幾個有限的空間查詢功能函數里,只有SearchNearObjIDs這個函數不需要閉合面的參與,該函數的作用是,將按給定的坐標點、搜索范圍、搜索對象類型和編碼搜索與坐標點相近的對象。因此,可以以道路注記的定位點作為坐標點,道路注記的定位點與道路中心線的最大距離作為搜索范圍,搜索給定注記范圍內的道路中心線對象,實現道路注記與道路中心線的匹配。
道路注記到道路屬性的轉換程序流程圖,如圖1所示。
利用EPS平臺的腳本技術,采用VBScript腳本語言,實現了本文提出的轉換算法,功能函數如下所示。其中,變量RoadLabelCodes是道路名稱標注編碼,變量RoadEntityCodes是道路中心線編碼,變量RoadField-Name是道路中心線屬性名,變量Range是搜索范圍。

圖1 道路注記到道路屬性的轉換程序流程圖


采用本文提出的轉換方法,以edb格式的哈爾濱市1∶1000基礎地形圖為測試數據進行道路注記到道路屬性的轉換工作,總的轉換正確率可達到95%以上。該方法同樣適用于鐵路、地下管線等其他線狀地物的注記到屬性的轉換。
[1]北京清華山維新技術開發有限公司.EPS2008地理信息工作站使用說明書[R].2010.
[2]北京清華山維新技術開發有限公司.EPS腳本語言幫助[R].2010.
[3]哈爾濱市勘察測繪研究院.哈爾濱市1∶500 1∶1000 1∶2000基礎地理數據分類與代碼標準[S].2011.
[4]徐中華,劉萬華,余成江.清華山維一體化軟件EPS腳本語言的應用[J].城市勘測,2007(6).
[5]沈偉,瞿曉彤.EPS平臺數據庫在生產實踐中的體會[J].現代測繪,2007,30(3).