Android系统下坐标系统转换开发

来源:期刊VIP网所属分类:软件开发发布时间:2012-10-08浏览:

  [摘要]阐述了一种新的坐标系转换方法,讲述了该方法的设计流程及数据准备。最后给出了本程序C++语言的部分代码及实际运行效果

  [关键词] 7参数 ;坐标系转换 ;Android

  Abstract: This paper describes a new method of coordinate system conversion, described the design of the method and the data preparation process. Finally, the language of the proceedings of C++ code and the actual operation of the key results

  Key words: 7 parameters;coordinate system conversion;Android

  中图分类号: P286+.1 文献标识码: A 文章编号:

  1 引言:

  笔者所在城市不久前进行了该城市坐标系统的转换工作,大规模的数据资料已经批量转换完毕。在一定时间阶段内工作中,经常需要进行对甲方单位提供的原有1954北京坐标系数据至1980西安坐标系的转换以满足作业人员以及甲方单位对新系统成果的要求。考虑到个别地区作业条件特殊情况,结合当今Android智能手机的大量普及的实际情况,笔者参考台式微机上比较成熟的坐标系统转换方法,加以改进移植到今天大量普及的Android智能手机上,以实现及时坐标成果转换要求。该城市的坐标转换7参数已经全部计算完成。在我单位的勘察设计内外业工作中积累了大量的1954北京坐标系成果的原始数据,特别是在第二次国土调查要求使用1980西安坐标系,2000国家坐标系也于2008年7月正式启用后,本程序能部分解决测绘外业人员的坐标转换问题。

  本程序的特点就在于它能根据任意7参数实现1954北京坐标系至1980西安坐标系的转换。

  2 程序思路及算法

  2.1转换所需7参数的计算

  北京1954 坐标系和西安1980 坐标系之间的转换其实是两种不同的椭球参数之间的转换,一般而言比较严密的是用七参数布尔莎模型,即X 平移,Y 平移,Z 平移,X 旋转(WX),Y 旋转(WY),Z 旋转(WY),尺度变化(DM)。若得七参数就需要在一个地区提供3 个以上的公共点坐标对(即北京54 坐标下x、y、z 和西安80 坐标系下x、y、z)。模型为:

  2.2主程序运行流程图

  平面坐标转大地坐标、空间直角坐标转大地坐标在软件中采用迭代的方法进行计算。在空间直角坐标系下采用最小二乘法原理求得参数,然后利用多项式拟合进一步提高转换参数精度。

  程序主要代码如下:

  //最小二乘法

  struct Matrix

  {

  int row,col;//row为行数,col为列数

  double **pm;//指向矩阵二维数组的指针

  };

  //初始化矩阵mt,并置矩阵的行为row,列为col

  void InitMatrix(struct Matrix *mt,int row,int col)

  {

  int i;

  //指定矩阵的行和列

  mt->row=row;

  mt->col=col;

  //为矩阵分配内存

  mt->pm=new double *[row];

  下略.....

  //最小二乘法求解矩阵Ax=b

  int MinMul(Matrix A,Matrix b,double *x)

  {

  int i,j;

  if(b.col!=1) return 0;

  if(A.row!=b.row) return 0;

  Matrix TranA;//定义A的转置

  InitMatrix0(&TranA,A.col,A.row);

  MatrixTran(&A,&TranA);

  中间略

  int MinMul(double **A,double *b,int row,int col,double *x)

  {

  int r,i;

  Matrix Al,bl;

  Al.pm=new double *[row];

  Al.row=row;

  Al.col=col;

  InitMatrix(&bl,row,1);

  for(i=0;i

  {

  Al.pm[i]=A[i];

  bl.pm[i][0]=b[i];

  }

  r=MinMul(Al,bl,x);

  delete []Al.pm;

  DestroyMatrix(&bl);

  return r;

  }

  #endif

  3 程序界面及其效果

  4 总结

  北京54坐标系和西安80坐标系其实是一种椭球参数的转换,作为这种转换在同一个椭球里的转换都是严密的,而在不同的椭球之间的转换是不严密,因此不存在一套转换参数可以全国通用的,在每个地方会不一样,其是两个不同的椭球基准。两个椭球间的坐标转换,一般而言比较严密的是用七参数布尔莎模型。

  本程序在Android2.2环境下通过测试,应用在笔者所在城市第二次土地调查、土地利用规划、日常的内外业测绘工作中,经多次使用验证,转换结果精确使用方便,尤其野外不适合携带笔记本等计算工具的特殊环境下使用。

  参考文献:

  [1] 彭爱文 曹佩瑶 平面坐标转换方法探讨及转换软件的设计思路[J]. 测绘与空间地理信息, 2007, 30(3): 189-191.

  [2]武汉测绘科技大学《测量学》编写组编著(陆国胜修订).测量学(第三版).北京:测绘出版社,1991

期刊VIP网,您身边的高端学术顾问

文章名称: Android系统下坐标系统转换开发

文章地址: http://www.qikanvip.com/ruanjiankaifa/4748.html