测量坐标系换算的安卓程序开发

本文介绍了开发一款用于坐标转换的安卓App的过程,重点在于相同参考椭球条件下的直角坐标与大地坐标系之间的转换。App包含椭球参数选择、计算功能及软件说明页面,提供友好简洁的操作界面,适用于工程测量和GPS定位场景。
摘要由CSDN通过智能技术生成

1.前言

      在工程测量或者GPS定位测量等测量工作中,经常会涉及到不同坐标系统之间的转换计算问题,而这些坐标系统的转换运算涉及到复杂的数学模型和天文数字,仅凭人工手算不仅计算量大而且可靠性也不高。目前,虽然已经有许多电脑软件比如AcrGIS软件等,都能轻松实现不同测量坐标系统之间的换算,但是,在实际的测量工作中,相对于轻巧的智能手机来说,带着一台笔记本去测量是十分不方便的,所以,开发一个能够实现坐标换算的安卓APP就十分有必要了。由于时间关系,本人简单仅做了能实现在相同参考椭球条件下的直角坐标系与大地坐标系之间转换的App,以下是该App的详细设计及其代码。希望大家多多支持,多多关注,后面还会陆陆续续写一些与工程测量领域有关的App,欢迎大家加入测绘技术交流QQ群234035436

2.App最终成果图


3.App整体界面设计结构

xml文件:


对于一个APP来说,除了代码简洁外,界面的设计也是非常重要的,友好简洁的操作界面能给人带来更好的体验,以下是整体操作界面框架的结构



不啰嗦,小博直接附上各个界面详细设计及其各控件的主要xml代码微笑

4.启动app时初始化界面(welcome.xml)


附上welcome.xml代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
<ImageView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scaleType="fitXY"
    android:src="@drawable/welcome"/>
</LinearLayout>
附上程序初始化执行的Welcome.java代码:
import java.util.Timer;
import java.util.TimerTask;
public class Welcome extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.welcome);
     final Intent main_ativity=new Intent(this,MainActivity.class);
        Timer timer=new Timer();
        TimerTask task=new TimerTask() {
            @Override
            public void run() {
                startActivity(main_ativity);
            }
        };
   timer.schedule(task,1000*3);

    }
}

5.主界面(activity_main.xml)


主页标题栏TextView控件主要xml代码(activity_main.xml文件中提取部分)

        <TextView
            android:id="@+id/tv_theme"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text=""
            android:textStyle="bold"
            android:textSize="28dp"
            android:gravity="center"
            android:textColor="#ffffff"/>
    
主页ViewPager控件主要xml代码(从activity_main.xml文件中提取部分):
<android.support.v4.view.ViewPager
            android:id="@+id/vp_content"
            android:layout_width="match_parent"
            android:background="#ffffff"
            android:layout_height="0dp"
             android:layout_weight="1" >
        </android.support.v4.view.ViewPager>
主页底部菜单栏主要xml代码(从 activity_main.xml文件中提取部分):
 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="55dp"
        android:background="#ffffff"
        android:orientation="horizontal">

        <LinearLayout
            android:id="@+id/ll_parameter"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/Image_para"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:src="@drawable/earth_para0" />

            <TextView
                android:id="@+id/tv_parameter"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="椭球"
                android:textColor="@color/colorUnSelectedMenu"
                android:textSize="15dp" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/ll_calculate"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/Image_calculate"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:src="@drawable/image_calculate0" />

            <TextView
                android:id="@+id/tv_calculate"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="计算"
                android:textColor="@color/colorUnSelectedMenu"
                android:textSize="15dp" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/ll_about"
        
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
坐标转换问题的详细了解对于测量很重要,那么请和我一起来讨论这个问题。 首先,我们要弄清楚几种坐标表示方法。大致有三种坐标表示方法:经纬度和高程,空间直角坐标,平面坐标和高程。 我们通常说的WGS-84坐标是经纬度和高程这一种,北京54坐标是平面坐标和高程着一种。 现在,再搞清楚转换的严密性问题,在同一个椭球里的转换都是严密的,而在不同的椭球之间的转换是不严密的。举个例子,在WGS-84坐标和北京54坐标之间是不存在一套转换参数可以全国通用的,在每个地方会不一样,因为它们是两个不同的椭球基准。 那么,两个椭球间的坐标转换应该是怎样的呢?一般而言比较严密的是用七参数法(包括布尔莎模型,一步法模型,海尔曼特等),即X平移,Y平移,Z平移,X旋转,Y旋转,Z旋转,尺度变化K。要求得七参数就需要在一个地区需要3个以上的已知,如果区域范围不大,最远间的距离不大于30Km(经验值),这可以用三参数(莫洛登斯基模型),即X平移,Y平移,Z平移,而将X旋转,Y旋转,Z旋转,尺度变化K视为0,所以三参数只是七参数的一种特例。在本软件中提供了计算三参数、七参数的功能。 在一个椭球的不同坐标系中转换可能会用到平面转换,现阶段一般分为四参数和平面网格拟合两种方法,以四参数法在国内用的较多,举个例子,在深圳既有北京54坐标又有深圳坐标,在这两种坐标之间转换就用到四参数,计算四参数需要两个已知。更精确的可以提供网格拟合数据,本软件提供计算和应用四参数的功能,也提供了网格拟合的功能。 另外,还有高程拟合的问题,大地水准面模型在国内用户中很少会用到,但在国际上已经是标准之一,本软件提供最常用的EGM96模型和Geoid99模型。 最后,本软件提供了ITRF框架转换方法,涉及到ITRF2000和以往用过的ITRF96,ITRF93之间的换算,对于方面的需求的用户是个尝试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值