連達軍,張志敏,蔣靈羽,鄭留蔣
(蘇州科技大學,江蘇 蘇州 215011)
?
基于iOS的圖根控制測量記錄計算手機軟件開發(fā)
連達軍,張志敏,蔣靈羽,鄭留蔣
(蘇州科技大學,江蘇 蘇州 215011)
傳統(tǒng)的圖根控制測量一般遵循先外業(yè)觀測后內業(yè)計算的工作順序,經過測站檢核、計算檢核和成果檢核后才能得到合格成果,智能手機軟件可促進該項工作觀測計算的一體化和智能化。本文利用圖根控制測量相關理論,借助于Objective-C語言設計開發(fā)了基于iOS系統(tǒng)的圖根控制測量記錄計算軟件。該軟件由底圖導入、電子手簿顯示與記錄、水準測量平差計算、導線計算與糾錯5大模塊構成,可實現(xiàn)圖上選點與略圖繪制、控制點高程與平面坐標計算及導線測量錯誤檢查等功能。分析測試結果表明,在圖根控制測量過程中,該軟件可將外業(yè)觀測數(shù)據(jù)記錄檢核與內業(yè)計算平差同時進行,節(jié)省了計算檢核的時間,提高了測量效率,可作為圖根控制測量的便攜記錄計算工具。
圖根控制測量;電子手簿;導線糾錯;iOS移動開發(fā)平臺
圖根控制測量是大比例尺地形圖測繪的重要環(huán)節(jié),該環(huán)節(jié)觀測數(shù)據(jù)的精度直接影響成圖質量,其觀測與數(shù)據(jù)計算工作能否順利實施決定著地形圖測繪的效率。然而傳統(tǒng)的圖根控制測量數(shù)據(jù)計算費時費力,一旦在觀測、記錄、數(shù)據(jù)輸入和計算任一環(huán)節(jié)出現(xiàn)問題,都需要從頭檢查數(shù)據(jù),目前已有一些基于PC機開發(fā)的測量數(shù)據(jù)計算軟件,但由于電腦攜帶不方便且電源續(xù)航時間較短等原因,很難實現(xiàn)現(xiàn)場實時解算數(shù)據(jù)。考慮到iOS系統(tǒng)的穩(wěn)定性和手機軟件便攜特性,本文擬基于iOS移動開發(fā)平臺設計開發(fā)圖根控制測量記錄計算手機軟件(簡稱測量型計算器)。
本軟件基于iOS手機移動平臺設計開發(fā),使用Objective-C編程語言進行程序代碼編寫,在Xcode集成開發(fā)環(huán)境下進行應用程序調試,擬實現(xiàn)底圖導入、圖上選點與導線略圖顯繪(模塊1)、測量手簿保存與測站檢核(模塊2)、水準測量計算(模塊3)、導線測量計算及查錯(模塊4、5),以及結果顯示與保存等功能,圖1為軟件總體設計圖。
1. 底圖導入功能模塊
在聯(lián)網狀態(tài)下,導入測區(qū)周圍地圖作為工作底圖,實時顯示測區(qū)概況,可在底圖上標示控制點,形成水準路線或導線略圖。為此,用戶只需在主界面上選擇水準或導線計算模式,即可進入底圖顯示與數(shù)據(jù)輸入界面;考慮到手機屏幕較小,將搜索欄和控件置于界面頂端,以最大屏幕空間顯示底圖并標示自選點,為方便用戶辨認,已知點和待測點分別以符號▲和●表示,通過用戶輸入的已知點數(shù)目判斷網型。
圖1 圖根控制測量記錄計算手機軟件總體設計
2. 電子手簿顯示與記錄功能模塊
觀測記錄手簿是圖根控制測量的原始數(shù)據(jù)和第一手資料,也是數(shù)據(jù)檢查、觀測值重測和計算檢核的重要依據(jù),觀測過程中其末位數(shù)不能隨意涂改。本軟件設置電子手簿功能模塊,可直觀顯示觀測數(shù)據(jù)、進行測站檢核計算及讀寫數(shù)據(jù),且具備紙質記錄手簿的所有功能,輸入的數(shù)據(jù)不可更改,對經測站檢核計算不合格的觀測值在備注欄進行標示,并彈出警告和重測信息,以方便用戶查看。表格顯示通過代碼進行設計而不是拖動控件實現(xiàn),單元格大小根據(jù)輸入的字符個數(shù)確定,以減輕測量人員外業(yè)觀測工作負擔,使測量計算更加方便快捷。
3. 內業(yè)計算功能模塊
圖1中模塊3和4是本軟件的核心功能,模塊3包括閉合水準路線和附合水準路線的計算、觀測數(shù)據(jù)經測站檢核和計算檢核,確認無誤后,系統(tǒng)會調用levelcal()函數(shù)進入水準路線平差計算界面;導線計算模塊4主要包括閉合導線和附合導線的計算,與模塊3不同之處在于其角度閉合差或導線全長相對閉合差超限時會啟動模塊5進行超限糾錯計算。
4. 導線測量糾錯功能模塊
本模塊主要針對一個轉折角或一條導線邊觀測錯誤時的情形進行功能設計:分別從導線端點開始沿相反方向推算各點坐標,兩套坐標值相近的點對應的轉折角需要重測;若某導線邊坐標方位角αDi與導線全長閉合差方向的坐標方位角αf相近,則該導線邊Di需要重新進行距離測量。
1. 程序主界面
本軟件主要界面(如圖2所示)直接用Xcode開發(fā)環(huán)境中的控件進行設計,細節(jié)部分(如警告框)通過編碼實現(xiàn)。程序主界面(圖2(a))上有水準計算和導線計算兩個按鈕,頭文件聲明各種成員變量、方法和屬性,源文件主要聲明方法,按鈕跳轉則通過響應事件和返回委托來實現(xiàn)。
2. 底圖導入模塊
底圖導入模塊界面(圖2(b))包括底圖導入和在底圖上畫點連線形成水準線路或導線略圖兩部分功能,本軟件導入的是高德地圖,利用Xcode中MKMapView模塊提供的addOverlay功能在底圖上畫點連線,可先在地圖上設置一層遮罩,然后進行繪制。
3. 電子手簿顯示與記錄模塊
電子手簿顯示與記錄界面如圖2(c)所示,單元格中的內容不可更改,輸入測站觀測數(shù)據(jù)后若經計算測回間互差超限,軟件會在備注欄進行標示,提醒觀測人員重新進行觀測。數(shù)據(jù)存儲則通過數(shù)據(jù)庫的雙向鏈表實現(xiàn),將每個點輸入的數(shù)據(jù)都存入一段鏈表的結點中,計算時直接到鏈表中讀取。雙向鏈表實現(xiàn)代碼如下:
@interfaceLevelData :NSObject
{
int Sum;∥總點數(shù)
LevDataBase *HeadOfData;∥頭指針
LevDataBase *TailOfData;∥尾指針
}
為節(jié)省手機內存,每次計算結束后都要刪掉鏈表中的觀測點數(shù)據(jù)。
圖2 軟件主要界面
4. 內業(yè)計算功能模塊
圖2中(d)和(e)分別為水準測量和導線測量計算界面,水準計算和導線計算是本軟件的核心功能。以水準測量計算為例,主要包括閉合路線和附合路線的計算,在圖上標識好待測點之后系統(tǒng)會根據(jù)輸入的已知點個數(shù)判斷是自動連接成閉合還是附合水準路線,再通過不同的算法進行計算。由于主要的算法類似,此處以閉合水準路線計算為例介紹其實現(xiàn)方法,系統(tǒng)默認按照距離來進行高差閉合差的分配,主要代碼如下:
∥閉合
h=levdata.HeadOfData.AltitudeFromFront;
for(LevDataBase *temp =levdata.HeadOfData; temp != nil; temp = temp.Backward)
{
if(!temp.IsKnownPoint)
{h+=temp.AltitudeFromFront; }
s+=temp.DistanceFromFront;
}
fh=40*sqrt(s)/1000;
for(LevDataBase *temp =levdata.HeadOfData; temp != nil; temp = temp.Backward)
{
if(!temp.IsKnownPoint)
{
temp.Elevation=temp.Forward.Elevation+temp.Fo rward.AltitudeFromFront+h/s*(-1)*temp.Forward.DistanceFromFront;
d=[NSStringstringWithFormat:
@"%@: %.3f ",temp. PointName,
temp.Elevation];
b=[b stringByAppendingString:d];
}
}
如果計算過程中高差閉合差超限,則計算停止,并跳出警告框,代碼如下:
if(h>=fh‖h<=(-fh))
{
UIAlertView *alert=[[UIAlertViewalloc]
initWithTitle:nilmessage:@"高差閉合差超限"delegate:selfcancelButtonTitle:@"確定"otherButtonTitles:nil];
[alertshow];
[alertrelease];
result=[result-stringByAppendingString:@" 高差閉合差超限"];
return result;
}
5. 計算結果輸出與導線糾錯功能
結果輸出界面包括一個計算按鈕和兩個用于界面跳轉的按鈕,計算按鈕連接了水準計算和導線計算的源文件中的算法,通過tradata()和leveldata()函數(shù)調用需要顯示的數(shù)據(jù)并顯示在文本框,如圖2(f)和(g)所示。若經計算,角度閉合差fβ或導線全長相對閉合差T超限,則調用導線查錯模塊,查找觀測錯誤的轉折角或導線邊,該模塊界面與差錯結果如圖2(h)和(i)所示。
本文利用手機軟件易于安裝、便于攜帶的優(yōu)點,設計開發(fā)了基于iOS系統(tǒng)的圖根控制測量記錄計算軟件,可實現(xiàn)在線導入測區(qū)底圖、標注并連接已知控制點和待測點、繪制水準線路或導線略圖等功能。利用該軟件的電子手簿顯示記錄模塊,可在測量現(xiàn)場進行觀測數(shù)據(jù)記錄、計算和測站檢核,即時發(fā)現(xiàn)誤差較大的觀測數(shù)據(jù),并對出錯的水準測量前、后視讀數(shù),導線轉折角及導線邊進行重測;經測站檢核合格的觀測數(shù)據(jù)直接存儲并調用內業(yè)計算程序進行高程平差或導線計算,導線計算結果顯示角度閉合差或導線全長閉合差超限時,借助該軟件的導線查錯程序可發(fā)現(xiàn)測錯的角度或邊長,該軟件可節(jié)約圖根控制測量時間、減輕觀測計算工作量并對測量數(shù)據(jù)進行實時處理。但該軟件在代碼冗余、線路或導線形式多樣化、左右角自動換算等方面還存在一些不足,今后需要不斷完善其計算和數(shù)值存儲顯示功能。
[1]顧孝烈,鮑峰,程效軍.測量學[M].3版.上海:同濟大學出版社,2006:147-150.
[2]楊帆,鄭青青,王風筱.iphone應用開發(fā)從入門到精通[M].北京:機械工業(yè)出版社,2011.
[3]艾倫,阿佩爾克萊因.iphone開發(fā)實戰(zhàn)[M].北京:人民郵電出版社,2009.
[4]LEE Weimeng. IOSS編程入門經典[M].北京:清華大學出版社,2012.
[5]楊正洪,鄭齊心,李建國.Objective-C程序設計[M]. 北京:清華大學出版社,2011.
[6]達爾林普爾,納斯特. Objective-C基礎教程[M].北京:人民郵電出版社,2009.
[7]申健康. 基于手機的測量計算程序開發(fā)和應用[J].測繪科學,2011,36(2):91-93.
[8]魏建文,張明媚.測量計算器的設計與實現(xiàn)[J].科技情報開發(fā)與經濟,2010,20(13):211-212.
[9]董鈞祥.測量坐標轉換模型及其應用[J].昆明理工大學學報,2006,31(3):2-4.
[10]陸鵬. 基于智能手機的測量計算器軟件開發(fā)[J].測繪技術裝備,2012,14(4):62-64.
Mapping Control Surveying Record and Calculation Software Development Based on iOS Mobile Phone System
LIAN Dajun,ZHANG Zhimin,JIANG Lingyu,ZHENG Liujiang
10.13474/j.cnki.11-2246.2016.0167.
2015-09-10
江蘇省高等教育教改研究課題(2013JSJG246)
連達軍(1972—),博士,副教授,研究方向為測繪工程與GIS應用。E-mail:ldjwwyx@126.com
P21
B
0494-0911(2016)05-0104-03
引文格式: 連達軍,張志敏,蔣靈羽,等. 基于iOS的圖根控制測量記錄計算手機軟件開發(fā)[J].測繪通報,2016(5):104-106.