道路曲线测设APP的设计与实现

2017-05-17 06:20郑国平王建民
城市勘测 2017年2期
关键词:测设高斯按钮

郑国平,王建民

(1.大同市勘察测绘院,山西 太同 037006; 2.太原理工大学矿业工程学院,山西 太原 030024)

道路曲线测设APP的设计与实现

郑国平1*,王建民2

(1.大同市勘察测绘院,山西 太同 037006; 2.太原理工大学矿业工程学院,山西 太原 030024)

基于传统的曲线测设软件已不适用于日益盛行的Android操作系统,采用Android 2.2以上版本为开发平台,设计了曲线测设APP计算软件,实现了曲线测设、坐标变换、高斯正反算的计算及曲线简图的绘制。结果表明,此道路曲线测设APP搭载平台应用广泛,计算精度较高,操作更加方便、友好,易于升级和维护,可以较好地满足学习、生产需求,实现内外业一体化,减少作业工序,提高作业效率和质量。

曲线测设;Android;APP;坐标变换;高斯正反算

1 引 言

随着测绘技术、计算机技术及移动设备的飞速发展,开发基于计算机等各种移动设备的道路曲线测设软件已成为测绘应用软件市场中的一大主流。然而,基于Android操作系统的曲线测设测绘应用APP却很少。吴浩等[1]提出了曲线测设中线整体积分数学模型,极大地提高了工程建设的效率,但考虑到积分模型在曲线测设APP开发过程中程序运算的复杂性,本文选用了运算相对简便的传统经典曲线测设中线测设的数学模型。

道路曲线测设APP将充分考虑基于Android操作系统曲线测设软件的发展现状及前景,使用经典的曲线测设数学模型,选择使用广泛、操作便捷、开放性好及可扩展性强的Android平台作为开发平台,利用高效性、通用性、安全性和平台移植性卓越的Java编程语言[2],设计实现可以在任何一款Android操作系统的移动设备上进行曲线测设相关计算、绘制曲线简图及进行简单坐标变换的操作。整个操作过程灵活简单,计算数据迅速精确,可以提高工作效率和质量。同时,也可以作为学习验算工具,将受到相关专业学生的青睐。

2 曲线测设APP的原理

2.1 曲线测设

曲线测设的计算原理及思路为:先将由缓和曲线段、圆曲线段以及直线段构成的曲线归算到统一的导线测量坐标系统中,进而再计算放样要素。

首先计算某点i在各曲线段切线坐标系中的坐标(xi,yi)及i点切线的倾角β。然后调用坐标旋转公式,计算出i点在路线导线测量坐标系中的坐标(Xi,Yi)和i点切线的方位角Ai,计算公式如下[2~4]:

(1)

式(1)中:A0、X0、Y0根据各段的相应公式计算。再根据上述计算出的Xi、Yi以及边桩距d计算线路左右两边线桩的设计坐标。最后根据设站导线点坐标A(XA,XA)、后视导线点坐标B(XB,XB)以及曲线上某点i的设计坐标I(XI,XI),即可计算出曲线上这点极坐标放样数据了。计算公式为[3~5]:

(2)

2.2 坐标变换

曲线测设工程中给出的坐标或计算的坐标往往不能满足工程需求,需要将其进行坐标转换[6,7]。在设计曲线测设APP时其坐标转换流程如图1所:

图1 坐标转换流程

3 道路曲线测设APP的设计与实现

3.1 曲线测设APP设计

(1)APP架构设计

曲线测设APP由主界面、一级界面和二级界面组成。APP功能架构组成如图2所示。

图2 APP架构设计图

①主界面包含:计算曲线综合要素选项按钮、计算曲线主点里程选项按钮、计算曲线设计坐标选项按钮、计算曲线放样数据选项按钮、绘制曲线简图选项按钮等11个功能按钮。

②一级界面是上述主界面内功能按钮内容的具体实现界面。

③二级界面是11个二级界面内绘制曲线简图功能模块的图像显示实现界面。

(2)APP界面设计

APP界面设计以LinerLayout等各种布局设计为基础,应用图文混排等美化手法进行装饰,力求简约美观,给用户以操作带来方便,图3为APP设计的主要界面。

图3 曲线测设APP主要界面

(3)APP计算程序框图及流程

下面是实现曲线测设的流程框图,如图4所示[8~10]。

图4 曲线测设APP计算流程图

3.2 曲线测设APP实现

曲线测设部分有曲线综合要素、各主点里程、设计坐标和放样数据计算,计算数据存储、绘图等功能。坐标变换部分有大地坐标与大地空间直角坐标的变换、不同大地空间直角坐标系间的变换及高斯正反算等。其中有3°带和6°带两种形式,自动计算带号[11]。坐标系统可自由选择1954年北京坐标系、1980西安坐标系和CGCS2000国家大地坐标系,计算过程可以完成验证检查,防止输入错误。

(1)APP的技术实现

①曲线测设相关计算实现[12,13]

曲线测设部分实现的主要功能为:计算曲线综合要素;计算各主点里程;计算曲线设计坐标;计算曲线放样数据。

技术实现:创建一个曲线测设的类,相应的计算内容分别为一种方法。计算时直接调用相应方法即可。

public class Coorderate {

public double Cal-ways (){

}

}

②坐标变换相关计算实现

坐标转换部分实现的主要功能为:大地坐标与大地空间直角之间坐标的变换;不同大地空间直角坐标系间的坐标相互变换。

技术实现:创建一个坐标变换的类,相应的计算内容分别为一种方法。计算时直接调用相应方法即可。

public class CoordinateTransformation {

public void Coorderateways (){

}

}

③曲线简图绘制实现[14]

曲线简图绘制部分的主要功能为:读写文;动态绘制任意点数的曲线简图。

技术实现:首先使用数据流相关技术读写文件,然后应用正则表达式分割文件放入动态数组[15],最后应用Android绘图技术实现曲线简图绘制。

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){

{

④高斯投影正反算实现[16,17]

高斯投影正反算部分主要实现的功能为:国家2000、西安80及北京54坐标系下的高斯投影正反算的相互转换。

技术实现:创建一个高斯的类,相应的计算内容分别为一种方法。计算时直接调用相应方法即可。

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(){

}

}

⑤ 软件的权限管理和控制

编程过程中,需要开发者添加一些权限,从而获得某种操作权限或者自己设置某些操作权限。

如:是否能在SD卡上写入、创建与删除文件等权限的设置。

(2)APP界面美化

为满足用户的视觉需求,曲线测设APP在实现计算的功能前提下加入界面美化元素,使用户可以在烦琐的计算工作环境下得到视觉放松,进而实现提高工作质量和效率的目的。同时也让这款曲线测设APP以其简约美和人性化设计受到用户的青睐。

主要实现方法如下:

①自定义标题栏

主要使用layout下的titlebar.xml文件来实现。

② 控件透明化

通过在drawable文件下创建一个shape.xml文件实现透明化控件,使其与窗口的底图可以融合为一体。

③文字跑马灯效果

Android应用中,通过在src下创建一个MyTextView.java文件来实现文字跑马灯效果

④提示性信息显示

主要实现方法为:提示不能为空方法及自定义Toast方法。

⑤ 编辑框(EditText)输入特定字符限制

实现主要代码如下:

设置EditText控件的输入属性:

android:inputType="numberSigned|numberDecimal"或者

android:digits=""//内输入你限定可以输入的内容

⑥按钮(Button)图文混排

实现主要使用如下代码:

xx.setSpan(is1,0,4,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

⑦下拉菜单(Spinner)开发

实现主要代码如下:

private void initSpinner(){

List> list=new

ArrayList>();

Map map1=new HashMap();

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 itemObj=(Map)

spinner.getItemAtPosition(position);

final String sp0=(String) itemObj.get("text");

}

public void onNothingSelected(AdapterView parent) {

}

});

}

⑧退出按钮提示信息

主要通过showTips()方法及onKeyDown事件等代码来实现。

⑨动画切换图片实现

实现主要代码如下:

public class Activity_09 extends Activity implements OnClickListener,ViewFactory { }

(3)曲线测试APP运行案例

APP计算结果及图形输出结果如图5所示。

图5 APP计算结果及图形输出

经实际案例测试分析可知:该曲线测设APP的计算结果精度及效率完全适用于一般线路工程及教学工作,且结果精度为 0.1 mm,效率也要远远优于传统方法计算的效率,效率提升率可达80%以上。限于研究开发时间等条件的限制,本软件只实现了关于道路曲线测设的初步设计与计算,在未来的研究中将进一步提升其工作效率,提高计算精度,优化软件功能。使用分布式计算方法及引入国内外新型计算整体模型等开发支持Android多元平台、具备批量处理功能的APP。

4 结论与展望

(1)通过对曲线测设APP计算结果的对比以及案例分析,曲线测设APP的计算精度对于一般的工程项目是完全适用的,而且适用于安装在任何一款Android操作系统的手机或移动设备上。曲线测设APP设计与实现使复杂的曲线计算便捷化、简单化,提高野外作业的效率,为用户提供了极大的方便。随着Android操作系统在测绘领域越来越多的应用,曲线测设APP将会以其搭载平台广泛,功能清晰,界面友好,使用方便等优点被人们所接受。

(2)基于Android的曲线测设APP可以进一步与网络相结合,增加一些其他功能模块,实现测量数据的实时动态上传及返回,以达到远程掌控、处理、返回曲线测设数据的目的。同时,让它可以与全站仪连通,实现动态数据互输,动态成图,根据放样数据动态指导放样等功能。相信在不久的将来会有更多具备现实意义和使用价值的测绘应用软件出现在Android这个新兴的自由平台上供广大用户使用。

[1] 吴浩,花向红,王新洲等. 轨道交通中线测设统一数学模型的建立[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] 王建民. 工程测量常用数据处理算法与软件设计[M]. 北京:煤炭工业出版社,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—),男,主要从事航空摄影测量及测绘数据处理工作。

猜你喜欢
测设高斯按钮
当你面前有个按钮
极坐标法测设平面点位时极角计算新方法研究
数学王子高斯
天才数学家——高斯
基于CASIO的圆曲线测设元素计算
死循环
浅谈桥梁施工测量控制要点
平面带缓和曲线的圆曲线高效测设方法的探究
从自卑到自信 瑞恩·高斯林
内心不能碰的按钮