鄭國平,王建民
(1.大同市勘察測繪院,山西 太同 037006; 2.太原理工大學礦業(yè)工程學院,山西 太原 030024)
道路曲線測設APP的設計與實現(xiàn)
鄭國平1*,王建民2
(1.大同市勘察測繪院,山西 太同 037006; 2.太原理工大學礦業(yè)工程學院,山西 太原 030024)
基于傳統(tǒng)的曲線測設軟件已不適用于日益盛行的Android操作系統(tǒng),采用Android 2.2以上版本為開發(fā)平臺,設計了曲線測設APP計算軟件,實現(xiàn)了曲線測設、坐標變換、高斯正反算的計算及曲線簡圖的繪制。結果表明,此道路曲線測設APP搭載平臺應用廣泛,計算精度較高,操作更加方便、友好,易于升級和維護,可以較好地滿足學習、生產(chǎn)需求,實現(xiàn)內外業(yè)一體化,減少作業(yè)工序,提高作業(yè)效率和質量。
曲線測設;Android;APP;坐標變換;高斯正反算
隨著測繪技術、計算機技術及移動設備的飛速發(fā)展,開發(fā)基于計算機等各種移動設備的道路曲線測設軟件已成為測繪應用軟件市場中的一大主流。然而,基于Android操作系統(tǒng)的曲線測設測繪應用APP卻很少。吳浩等[1]提出了曲線測設中線整體積分數(shù)學模型,極大地提高了工程建設的效率,但考慮到積分模型在曲線測設APP開發(fā)過程中程序運算的復雜性,本文選用了運算相對簡便的傳統(tǒng)經(jīng)典曲線測設中線測設的數(shù)學模型。
道路曲線測設APP將充分考慮基于Android操作系統(tǒng)曲線測設軟件的發(fā)展現(xiàn)狀及前景,使用經(jīng)典的曲線測設數(shù)學模型,選擇使用廣泛、操作便捷、開放性好及可擴展性強的Android平臺作為開發(fā)平臺,利用高效性、通用性、安全性和平臺移植性卓越的Java編程語言[2],設計實現(xiàn)可以在任何一款Android操作系統(tǒng)的移動設備上進行曲線測設相關計算、繪制曲線簡圖及進行簡單坐標變換的操作。整個操作過程靈活簡單,計算數(shù)據(jù)迅速精確,可以提高工作效率和質量。同時,也可以作為學習驗算工具,將受到相關專業(yè)學生的青睞。
2.1 曲線測設
曲線測設的計算原理及思路為:先將由緩和曲線段、圓曲線段以及直線段構成的曲線歸算到統(tǒng)一的導線測量坐標系統(tǒng)中,進而再計算放樣要素。
首先計算某點i在各曲線段切線坐標系中的坐標(xi,yi)及i點切線的傾角β。然后調用坐標旋轉公式,計算出i點在路線導線測量坐標系中的坐標(Xi,Yi)和i點切線的方位角Ai,計算公式如下[2~4]:
(1)
式(1)中:A0、X0、Y0根據(jù)各段的相應公式計算。再根據(jù)上述計算出的Xi、Yi以及邊樁距d計算線路左右兩邊線樁的設計坐標。最后根據(jù)設站導線點坐標A(XA,XA)、后視導線點坐標B(XB,XB)以及曲線上某點i的設計坐標I(XI,XI),即可計算出曲線上這點極坐標放樣數(shù)據(jù)了。計算公式為[3~5]:
(2)
2.2 坐標變換
曲線測設工程中給出的坐標或計算的坐標往往不能滿足工程需求,需要將其進行坐標轉換[6,7]。在設計曲線測設APP時其坐標轉換流程如圖1所:
圖1 坐標轉換流程
3.1 曲線測設APP設計
(1)APP架構設計
曲線測設APP由主界面、一級界面和二級界面組成。APP功能架構組成如圖2所示。
圖2 APP架構設計圖
①主界面包含:計算曲線綜合要素選項按鈕、計算曲線主點里程選項按鈕、計算曲線設計坐標選項按鈕、計算曲線放樣數(shù)據(jù)選項按鈕、繪制曲線簡圖選項按鈕等11個功能按鈕。
②一級界面是上述主界面內功能按鈕內容的具體實現(xiàn)界面。
③二級界面是11個二級界面內繪制曲線簡圖功能模塊的圖像顯示實現(xiàn)界面。
(2)APP界面設計
APP界面設計以LinerLayout等各種布局設計為基礎,應用圖文混排等美化手法進行裝飾,力求簡約美觀,給用戶以操作帶來方便,圖3為APP設計的主要界面。
圖3 曲線測設APP主要界面
(3)APP計算程序框圖及流程
下面是實現(xiàn)曲線測設的流程框圖,如圖4所示[8~10]。
圖4 曲線測設APP計算流程圖
3.2 曲線測設APP實現(xiàn)
曲線測設部分有曲線綜合要素、各主點里程、設計坐標和放樣數(shù)據(jù)計算,計算數(shù)據(jù)存儲、繪圖等功能。坐標變換部分有大地坐標與大地空間直角坐標的變換、不同大地空間直角坐標系間的變換及高斯正反算等。其中有3°帶和6°帶兩種形式,自動計算帶號[11]。坐標系統(tǒng)可自由選擇1954年北京坐標系、1980西安坐標系和CGCS2000國家大地坐標系,計算過程可以完成驗證檢查,防止輸入錯誤。
(1)APP的技術實現(xiàn)
①曲線測設相關計算實現(xiàn)[12,13]
曲線測設部分實現(xiàn)的主要功能為:計算曲線綜合要素;計算各主點里程;計算曲線設計坐標;計算曲線放樣數(shù)據(jù)。
技術實現(xiàn):創(chuàng)建一個曲線測設的類,相應的計算內容分別為一種方法。計算時直接調用相應方法即可。
public class Coorderate {
public double Cal-ways (){
}
}
②坐標變換相關計算實現(xiàn)
坐標轉換部分實現(xiàn)的主要功能為:大地坐標與大地空間直角之間坐標的變換;不同大地空間直角坐標系間的坐標相互變換。
技術實現(xiàn):創(chuàng)建一個坐標變換的類,相應的計算內容分別為一種方法。計算時直接調用相應方法即可。
public class CoordinateTransformation {
public void Coorderateways (){
}
}
③曲線簡圖繪制實現(xiàn)[14]
曲線簡圖繪制部分的主要功能為:讀寫文;動態(tài)繪制任意點數(shù)的曲線簡圖。
技術實現(xiàn):首先使用數(shù)據(jù)流相關技術讀寫文件,然后應用正則表達式分割文件放入動態(tài)數(shù)組[15],最后應用Android繪圖技術實現(xiàn)曲線簡圖繪制。
private void save() {
}
private void read(){
}
XYMultipleSeriesDataset dataset = buildDataset(titles,x,y);
XYMultipleSeriesRenderer rend = buildRenderer(colors,styles,true);
protected XYMultipleSeriesDataset buildDataset(){
}
protected XYMultipleSeriesRenderer buildRenderer(int[] colors,PointStyle[] styles,boolean fill){
}
protected void setChartSettings(XYMultipleSeriesRenderer renderer,String title,String xTitle,String yTitle,double xMin,double xMax,double yMin,double yMax,int axesColor,int labelsColor){
{
④高斯投影正反算實現(xiàn)[16,17]
高斯投影正反算部分主要實現(xiàn)的功能為:國家2000、西安80及北京54坐標系下的高斯投影正反算的相互轉換。
技術實現(xiàn):創(chuàng)建一個高斯的類,相應的計算內容分別為一種方法。計算時直接調用相應方法即可。
public class Gaosi {
public int Code (){
}
public double meridianArcLength()[13]{
return ra*(lat*ff1+0.5*ff2*Math.sin(2.0*lat));
}
public void Ways(){
}
}
⑤ 軟件的權限管理和控制
編程過程中,需要開發(fā)者添加一些權限,從而獲得某種操作權限或者自己設置某些操作權限。
如:是否能在SD卡上寫入、創(chuàng)建與刪除文件等權限的設置。
(2)APP界面美化
為滿足用戶的視覺需求,曲線測設APP在實現(xiàn)計算的功能前提下加入界面美化元素,使用戶可以在煩瑣的計算工作環(huán)境下得到視覺放松,進而實現(xiàn)提高工作質量和效率的目的。同時也讓這款曲線測設APP以其簡約美和人性化設計受到用戶的青睞。
主要實現(xiàn)方法如下:
①自定義標題欄
主要使用layout下的titlebar.xml文件來實現(xiàn)。
② 控件透明化
通過在drawable文件下創(chuàng)建一個shape.xml文件實現(xiàn)透明化控件,使其與窗口的底圖可以融合為一體。
③文字跑馬燈效果
Android應用中,通過在src下創(chuàng)建一個MyTextView.java文件來實現(xiàn)文字跑馬燈效果
④提示性信息顯示
主要實現(xiàn)方法為:提示不能為空方法及自定義Toast方法。
⑤ 編輯框(EditText)輸入特定字符限制
實現(xiàn)主要代碼如下:
設置EditText控件的輸入屬性:
android:inputType="numberSigned|numberDecimal"或者
android:digits=""http://內輸入你限定可以輸入的內容
⑥按鈕(Button)圖文混排
實現(xiàn)主要使用如下代碼:
xx.setSpan(is1,0,4,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
⑦下拉菜單(Spinner)開發(fā)
實現(xiàn)主要代碼如下:
private void initSpinner(){
List
ArrayList
Map
map1.put("spinner",R.drawable.spinner1);
map1.put("text","第一緩和曲線段(ZH~HY)");
list.add(map1);
//重復上述代碼,將下拉菜單中的內容依次列出
SimpleAdapter adapter=new SimpleAdapter(this,list,
R.layout.my_spinner,new String[]{"spinner","text"},
new int[]{R.id.iv,R.id.tv});
sp_quxianduan.setAdapter(adapter);
sp_quxianduan.setOnItemSelectedListener(new
OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView> parent,View view,
int position,long id) {
Spinner spinner=(Spinner)parent;
@SuppressWarnings("unchecked")
Map
spinner.getItemAtPosition(position);
final String sp0=(String) itemObj.get("text");
}
public void onNothingSelected(AdapterView> parent) {
}
});
}
⑧退出按鈕提示信息
主要通過showTips()方法及onKeyDown事件等代碼來實現(xiàn)。
⑨動畫切換圖片實現(xiàn)
實現(xiàn)主要代碼如下:
public class Activity_09 extends Activity implements OnClickListener,ViewFactory { }
(3)曲線測試APP運行案例
APP計算結果及圖形輸出結果如圖5所示。
圖5 APP計算結果及圖形輸出
經(jīng)實際案例測試分析可知:該曲線測設APP的計算結果精度及效率完全適用于一般線路工程及教學工作,且結果精度為 0.1 mm,效率也要遠遠優(yōu)于傳統(tǒng)方法計算的效率,效率提升率可達80%以上。限于研究開發(fā)時間等條件的限制,本軟件只實現(xiàn)了關于道路曲線測設的初步設計與計算,在未來的研究中將進一步提升其工作效率,提高計算精度,優(yōu)化軟件功能。使用分布式計算方法及引入國內外新型計算整體模型等開發(fā)支持Android多元平臺、具備批量處理功能的APP。
(1)通過對曲線測設APP計算結果的對比以及案例分析,曲線測設APP的計算精度對于一般的工程項目是完全適用的,而且適用于安裝在任何一款Android操作系統(tǒng)的手機或移動設備上。曲線測設APP設計與實現(xiàn)使復雜的曲線計算便捷化、簡單化,提高野外作業(yè)的效率,為用戶提供了極大的方便。隨著Android操作系統(tǒng)在測繪領域越來越多的應用,曲線測設APP將會以其搭載平臺廣泛,功能清晰,界面友好,使用方便等優(yōu)點被人們所接受。
(2)基于Android的曲線測設APP可以進一步與網(wǎng)絡相結合,增加一些其他功能模塊,實現(xiàn)測量數(shù)據(jù)的實時動態(tài)上傳及返回,以達到遠程掌控、處理、返回曲線測設數(shù)據(jù)的目的。同時,讓它可以與全站儀連通,實現(xiàn)動態(tài)數(shù)據(jù)互輸,動態(tài)成圖,根據(jù)放樣數(shù)據(jù)動態(tài)指導放樣等功能。相信在不久的將來會有更多具備現(xiàn)實意義和使用價值的測繪應用軟件出現(xiàn)在Android這個新興的自由平臺上供廣大用戶使用。
[1] 吳浩,花向紅,王新洲等. 軌道交通中線測設統(tǒng)一數(shù)學模型的建立[J]. 武漢大學學報·信息科學版,2002,27(5):478~482.
[2] 雍俊海. Java程序設計教程第3版[M]. 北京:清華大學出版社,2014.
[3] 張正祿. 工程測量學[M]. 武漢:武漢大學出版社,2005:163~170.
[4] Kenniet J M,Petrie G. Engineering Surveying Technology[M]. CRC Press,2010.
[5] 姜憲平,劉洋. 工程測量中曲線的放樣程序[J]. 吉林地質,2008,27(4):134~136.
[6] 曾文憲,陶本藻. 三維坐標轉換的非線性模型[J]. 武漢大學學報·信息科學版,2003,28(5):566~568.
[7] 鄧勇,張正祿,黃江雄等. 工程測量中的坐標轉換相關問題探討[J]. 測繪科學,2011,36(5):28~30.
[8] 王建民. 工程測量常用數(shù)據(jù)處理算法與軟件設計[M]. 北京:煤炭工業(yè)出版社,2014.
[9] 呂志平,喬書波. 大地測量學基礎[M]. 北京:測繪出版社,2010.3.
[10] Torge W,Muller J. Geodesy[M]. Walter de Gruyter,2012.
[11] 趙長勝. 高斯投影坐標反算的迭代算法[J]. 測繪通報,2004(3):16~17.
[12] 孫偉. 曲線測設程序在鐵路設計中的應用[J]. 黑龍江科技信息,2012(6):255.
[13] 劉義. Java編程技巧100例[M]. 北京:清華大學出版社,2002.
[14] Rick R,John L,Zigurd M,etal. Android Application Development[M]. Beijing:Posts & Telecom Press,2010.
[15] 張生京. Java編程原理[M]. 北京:清華大學出版社,2003.
[16] 阮興龍,范東明. 高精度高斯投影正反算公式及其應用[J]. 城市建設理論研究,2011(26).
[17] 張爽,宮雨生,許青山等. 基于Access VBA的高斯投影程序設計[J]. 測繪與空間地理信息,2015,38(1):81~83.
The Design and Implementation of Road Curve Layout APP
Zheng Guoping1,Wang Jianmin2
(1.Datong Institute of Surveying and Mapping,Datong 037006,China; 2.Taiyuan University of Technology,Taiyuan 030024,China)
Traditional curve software is not suitable for the increasingly prevalent Android operating system. The Android 2.2+ version was utilized as the development platform,designed the APP calculation software,and realized curve layout,coordinate transformation,Gauss direct and inverse solution,and plotted the curve diagram. The results show that the APP platform is widely used,the calculation precision is high,the operation is more convenient and friendly,and is easy to upgrade and maintain,which can meet demand of production and learning,achieve integration of office and field work,reduce operating procedure,and improve working efficiency and quality.
curve layout;android;APP;coordinate transformation;positive and negative gaussian projection operator
1672-8262(2017)02-140-05
P209
B
2016—07—18
鄭國平(1990—),男,主要從事航空攝影測量及測繪數(shù)據(jù)處理工作。