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