李愛民 兀澤坤 趙佳樂 張心怡 郭振強
(鄭州大學地球科學與技術學院,河南 鄭州 450001)
工程測量數(shù)據(jù)處理中的導線測量、水準測量、坐標轉換等內容,計算工作量很大。目前測繪行業(yè)內流行幾款數(shù)據(jù)處理軟件,如南方測繪的平差易軟件(Power Adjustment)[1]、 武大的“科傻”系統(tǒng)(COSA)[2]、清華山維的平差軟件(NASEW)[3]等。這些軟件都具有概算、平差、精度評定、控制網顯示等功能,在測繪單位的測量數(shù)據(jù)處理中發(fā)揮了重要作用。但是,調查發(fā)現(xiàn),這些軟件普遍沒有顯示測區(qū)地圖的功能,而工程測量一定是在一定區(qū)域進行的,測量數(shù)據(jù)都包含坐標位置信息,控制點點之記資料也需要周圍地物地貌信息的支持,因此,把測區(qū)地圖融合到測量數(shù)據(jù)處理軟件中,研究建立基于測區(qū)電子地圖的工程測量數(shù)據(jù)處理系統(tǒng)十分必要。
本文利用ArcGIS Engine 組件開發(fā)[4]、數(shù)據(jù)庫等技術研究構建基于測區(qū)地圖的測量數(shù)據(jù)計算處理系統(tǒng),實現(xiàn)地圖和測量數(shù)據(jù)計算處理功能的無縫集成,使測量數(shù)據(jù)處理地圖化,提高測繪人員處理測量數(shù)據(jù)的可視化和便捷性。
某本系統(tǒng)對應的用戶人群為有工程測量數(shù)據(jù)處理需求的測量人員,因此系統(tǒng)運行環(huán)境設置為PC 端,且無聯(lián)網要求,設計為單機版系統(tǒng),不考慮網絡問題,但系統(tǒng)涉及GIS 技術和測量理論,因此開發(fā)者需要具有這方面的知識。
數(shù)據(jù)流程包括:數(shù)據(jù)錄入,將測區(qū)地圖數(shù)據(jù)和測量數(shù)據(jù)輸入;根據(jù)測量數(shù)據(jù)進行平差計算,獲得測量點坐標和高程數(shù)據(jù);在地圖窗口根據(jù)坐標數(shù)據(jù)生成測量點圖層;基于地圖制作點之記,進行空間查詢和分析等;成果輸出,輸出所需的空間數(shù)據(jù)、測量數(shù)據(jù)處理結果等。系統(tǒng)應包括地圖編輯、測量數(shù)據(jù)平差處理、空間分析、數(shù)據(jù)、圖形的檢索、查詢及數(shù)據(jù)輸出等功能。
系統(tǒng)設計要遵循軟件工程建設的思想和簡潔、實用、可靠、可拓展的原則,充分利用計算機編程、GIS、空間數(shù)據(jù)可視化、數(shù)據(jù)庫查詢和分析等技術,構建以電子地圖為基礎平臺的測量數(shù)據(jù)處理系統(tǒng)。
從系統(tǒng)特點和應用角度出發(fā),立足于整體,采用軟件工程的結構化設計模式,把系統(tǒng)功能分解為不同的模塊,包括數(shù)據(jù)操作、查詢統(tǒng)計、報表操作、圖形操作、測繪功能五個方面,如圖1 所示。

圖1 系統(tǒng)總體框架
把GIS 技術和測量數(shù)據(jù)處理相結合,使得一些測量數(shù)據(jù)處理操作更加直觀地在地圖上展現(xiàn)。
(1)軟件支持mxd、Shapefile 等文件類型的導入,同時可以實時查看及更改屬性表。主菜單上有跳轉功能,通過輸入某點坐標而直接跳轉選中該點。此外,還具備打開文件、選中、平移、放大、縮小地圖、添加數(shù)據(jù)、移除圖層等地圖軟件所具有的基礎功能。
(2)主菜單上有創(chuàng)建地圖要素功能,可以進行點要素、線要素與面要素的創(chuàng)建,點擊開始編輯后,在其右側框體中選擇圖層,并使用繪圖工具進行要素的創(chuàng)建;點屬性配備有專門的要素庫,可以用于選擇點要素的樣式。
(3)鷹眼功能,用于全局顯示地圖的處理情況,便于查找所進行處理或當前展示的頁面位置。
(4)“生成測量點”功能,通過導入帶有點坐標的Excel 或TXT 文件,從而生成帶有相關點屬性的Shapefile 文件,并保存在指定路徑。
(5)“地圖注記”功能,選擇特定圖層以及該圖層內所想要顯示的字段,可以將字段內容顯示在底圖上。
(6)“地圖選擇集”和輸出功能,用于顯示和輸出所選要素的屬性表。
(7)導線平差計算。導線測量是將測點連成折線,得到折線邊的邊長和轉折角后,根據(jù)數(shù)據(jù)推算導線點的平面直角坐標的過程[9]。根據(jù)其導線布設方式,分為附合導線、閉合導線、支導線、導線網[10,11]。在選定精度等級并輸入源數(shù)據(jù)后,平差得出導線網型繪制結果、解算結果、精度核驗結果等內容。
(8)水準平差計算。水準測量是利用水平視線測定地面高差的方法,即由已知點高程推算未知點高程的過程[6-8],在選定精度等級和已知高程后,導入觀測數(shù)據(jù)的Excel 或Shapefile 文件,得出線路總長、閉合差、限差等信息,并計算閉合差是否符合要求,且設置相應的結果導出功能。
(9)坐標轉換功能。包括大地坐標、平面坐標、空間直角坐標等多種坐標系的坐標轉換。
測量數(shù)據(jù)一般包括空間數(shù)據(jù)和屬性數(shù)據(jù),空間數(shù)據(jù)是用來直觀表達位置關系的點狀、線狀、面狀要素信息,圖層的分類依據(jù)是根據(jù)其幾何形狀分為Point、Polyline、Polygon 等類型的要素圖層[12-14];屬性數(shù)據(jù)主要是測量數(shù)據(jù)以及對空間數(shù)據(jù)的說明。以控制點為例,空間數(shù)據(jù)類型為點狀要素,其屬性數(shù)據(jù)為控制點坐標、點名、點號、控制點高程等屬性信息;以導線測量為例,導入數(shù)據(jù)后生成的空間數(shù)據(jù)類型為線狀要素,其屬性數(shù)據(jù)為點號、坐標、方位角、轉折角、邊長等屬性信息。空間數(shù)據(jù)采用圖層模式管理,使用Esri 公司的ArcGIS Engine 軟件提供的各類控件進行輸入、顯示、存儲、輸出等功能,而對于使用測量功能得到的屬性數(shù)據(jù),則通過輕型關系型數(shù)據(jù)庫SQLite進行輸入、顯示、存儲、輸出等功能,基于ComGIS 技術實現(xiàn)兩種數(shù)據(jù)類型的無縫集成。
根據(jù)ArcGIS Engine 組件式開發(fā)技術提供的地理數(shù)據(jù)可視化及空間數(shù)據(jù)處理等特點,將多種測量數(shù)據(jù)處理功能與地理信息系統(tǒng)集成,綜合利用空間數(shù)據(jù)和屬性數(shù)據(jù),在Visual Studio.NET 開發(fā)環(huán)境中嵌入ArcGIS Engine 組件[15,16],利用COM 組件技術開發(fā)測量數(shù)據(jù)處理系統(tǒng),實現(xiàn)坐標值轉換、七參數(shù)解算、水準測量、導線測量等測繪數(shù)據(jù)處理的功能,并且添加相應的處理結果可視化界面,提供網型繪制、解算結果、精度核驗、起算及觀測數(shù)據(jù)顯示等功能。操作系統(tǒng)為WindowsXP/7/10,數(shù)據(jù)庫管理系統(tǒng)采用SQLite 數(shù)據(jù)庫。
主界面如圖2 所示:
①菜單欄,可實現(xiàn)文件操作、地圖注記、控制點生成、測量計算等功能。
②基礎工具條,可實現(xiàn)對電子地圖等基本操作,例如漫游、全圖顯示等。
③編輯工具條,可實現(xiàn)對地圖要素的創(chuàng)建、編輯、刪除等功能。
④圖層目錄,可實現(xiàn)對地圖圖層的管理、要素符號更改等操作。
⑤鷹眼,展示數(shù)據(jù)視圖中的地理范圍在全圖中的位置。
⑥地圖窗口,地圖交互操作的窗口。
⑦狀態(tài)欄,可顯示數(shù)據(jù)框內鼠標的位置,菜單欄功能的簡短說明。

圖2 系統(tǒng)主界面
坐標轉換模塊包括坐標值轉換和七參數(shù)解算,坐標值轉換即選定轉換前后的坐標系,輸入單個點得到轉換后的坐標系的相應坐標值,如圖3 所示。七參數(shù)解算即輸入相應的三個公共點的坐標,得到目標坐標以及七參數(shù)的值,如圖4 所示。
以西安80 高斯投影平面坐標轉換西安80 大地坐標為例,部分代碼如下:
crd.x_XA = textBoxNum_xBX; ……//得到西安高斯投影平面坐標的X、Y、HZ
elpF.num = Ellips.Ellips75_XA80.num; ……//得到西安80所用橢球的參數(shù)
trans.XiAn80xyHgToXiAn80BLH(crd, elpF); // 調用轉換函數(shù)

圖3 坐標轉換

圖4 七參數(shù)解算界面
包括閉合水準測量平差、附合水準測量平差、支水準測量平差,選定精度等級及已知高程后輸入文件,得到報表窗口,顯示相應的源數(shù)據(jù)及結果,以及導出結果功能,如圖5 所示。
以閉合水準平差為例,部分代碼如下:closedDiff += Convert.ToDouble(dt.Rows[i][3]);//計算閉合差(單位:mm)


圖5 水準數(shù)據(jù)處理
導線測量計算模塊包括閉合導線坐標平差、附合導線坐標平差、支導線坐標計算、導線網平差(前方交會、側邊網坐標平差)功能。選定精度并輸入數(shù)據(jù)后,得到網型繪制結果、解算結果、精度核驗等信息,結果窗口右側顯示起算數(shù)據(jù)及觀測數(shù)據(jù)信息,并提供導出結果功能,如圖6 所示。
以閉合導線平差為例,部分代碼如下:cartsCrds[i].X = Convert.ToInt32(stations[i].y);//將給出的測繪坐標轉笛卡爾坐標,圖形形狀相同Increment[i].X = cartsCrds[i].X - knownedX;//求各點與已知點A的相對位置if(Increment[i].X < minIncrementX)//尋找X方向最小負增量


圖6 導線數(shù)據(jù)處理
圖層目錄:可在圖層欄中右擊圖層進行圖層的相關操作,如圖7 所示。

圖7 圖層控制目錄樹
創(chuàng)建要素:在編輯欄中選擇帶有鉛筆圖表的按鈕(Sketch Tool),即可進行要素的創(chuàng)建,其右側按鈕(Attributes)可打開所創(chuàng)建要素的屬性表,如圖8所示。

圖8 創(chuàng)建要素
生成控制點:選擇導入帶有點坐標的Excel 或Shapefile 文件,從而在指定路徑中生成帶有這些點屬性的Shapefile 格式的文件,如圖9 所示。
導入Excel 生成Shapefile 文件核心代碼如下:String fileName = openFileDialog.FileName;DataTable myTable = ExcelToDataTable(fileName,"sheet1");string Point = myTable.Rows[i][0].ToString();//獲取excel中的數(shù)據(jù)double x = Convert.ToDouble(myTable.Rows[i][1]); ……//得到xyh的值addPoint(ly, x, y, h ,Point);//添加點至shpfile文件

圖9 導入Shapefile格式的文件

圖10 點狀要素符號選擇器

符號選擇器:通過在屬性欄中雙擊點狀符號、線狀符號或面狀符號,可打開符號選擇器,選擇所需要的符號來標記點、線、面要素,如圖10 所示。pTextSymbol.Font = pFont as stdole.IFontDisp;I L i n e L a b e l P o s i t i o n p P o s i t i o n = n e w LineLabelPositionClass();……//設置注記放置格式、排放位置、擺設路徑權重,以及處理文字間沖突的處理方式等pLableEngine.Expression = "[" + sFieldName +"]";//輸入VBScript或JavaScript語言,設置要標注的字段IAnnotateLayerProperties pAnnoLayerProps=pLableEngine as IAnnotateLayerProperties;pAnnoProps.Add(pAnnoLayerProps);

圖11 注記選擇

圖12 注記效果
地圖選擇集 :選擇底圖中的要素后,點擊“地圖選擇集”,可彈出選中圖層中所選要素的屬性表,如圖13 所示。

圖13 地圖選擇集效果圖
本文利用GIS 組件開發(fā)技術設計了融合測區(qū)地圖的工程測量數(shù)據(jù)處理系統(tǒng),并利用C#語言編程實現(xiàn)了軟件功能。把測量數(shù)據(jù)處理與測區(qū)地圖無縫集成,實現(xiàn)了測量數(shù)據(jù)的可視化,進而使計算更直觀、高效和便捷,提高工作效率。組件開發(fā)技術的使用有利于系統(tǒng)的可拓展性,方便后期的維護與系統(tǒng)升級。