文章目录

  • 前言
  • 界面
  • 程序编写
  • 测试

前言

采用:MATLAB R2019a
功能:完成同一椭球下大地坐标与空间直角坐标互相转换,高斯正反算,单点和批量处理数据。

界面

程序编写

同一目录下,有实现坐标转换和高斯投影的.m文件函数,设计app时调用这些函数就行了。
下面是一些变量及回调函数代码:

 properties (Access = private)ellname % 椭球名称opt %决定坐标转换功能:bl=>xy或xy=>blbelt %带宽anformatendmethods (Access = private)        function func(app)switch app.DropDown.Valuecase 'CGCS2000'app.ellname = 'cgcs2000';case 'WGS-84'app.ellname = 'wgs84';case '1975国际椭球'app.ellname = 'int75';case '克拉索夫斯基椭球'app.ellname = 'kra';endswitch app.DropDown_2.Valuecase '坐标转换BL=>XY'app.opt = 'blh2xyz';case '坐标转换XY=>BL'app.opt = 'xyz2blh';               endswitch app.DropDown_4.Valuecase '6度带'app.belt = 6;case '3度带'app.belt = 3;end            switch app.DropDown_3.Valuecase 'DD.MMSS'app.anformat = 'DD.MMSS';case 'DD.DDDD'app.anformat = 'DD.DDDD';endendend% Callbacks that handle component eventsmethods (Access = private)% Button pushed function: Buttonfunction ButtonPushed(app, event)switch app.DropDown_2.Valuecase '坐标转换BL=>XY'func(app);a(2) = app.BEditField.Value;a(1) = app.LEditField.Value;a(3) = app.HEditField.Value;coordafter = coordtransfer(app.ellname,a,app.opt,app.anformat);app.XEditField.Value = coordafter(1);app.YEditField.Value = coordafter(2);app.ZEditField.Value = coordafter(3);case '坐标转换XY=>BL'func(app);a(1) = app.XEditField.Value;a(2) = app.YEditField.Value;a(3) = app.ZEditField.Value;coordafter = coordtransfer(app.ellname,a,'xyz2blh',app.anformat);app.BEditField.Value = coordafter(2);app.LEditField.Value = coordafter(1);app.HEditField.Value = coordafter(3);endend% Button pushed function: Button_2function Button_2Pushed(app, event)switch  app.DropDown_2.Valuecase '高斯正算'func(app);BL(1) = app.BEditField_2.Value;BL(2) = app.LEditField_2.Value;[x,y,L0,N]=gauss_bl2xy(app.ellname,BL,app.belt,app.anformat);app.xEditField.Value = x;app.yEditField.Value = y;app.EditField_3.Value = L0;app.EditField_2.Value = N;case '高斯反算'func(app);xy(1) = app.xEditField.Value;xy(2) = app.yEditField.Value;L0 = app.EditField_3.Value;[B,L]=gauss_xy2bl(app.ellname,xy,L0,app.anformat);app.BEditField_2.Value = B;app.LEditField_2.Value = L;endend% Button pushed function: Button_3function Button_3Pushed(app, event)switch  app.DropDown_2.Valuecase '坐标转换BL=>XY'func(app);[filename, path] = uigetfile('*.txt');          % 用户选择文件if isequal(filename,0)disp('User selected Cancel');endlbh = load([path,filename]); %载入数据coordafter = coordtransfer(app.ellname,lbh,app.opt,app.anformat);%生成文件fp=fopen('D:\XYZ.txt','w+');%'XYZ.txt'为文件名;'w+'为打开方式:若文件不存在则创建。如果存在则覆盖fprintf(fp,'%f  %f  %f\n',coordafter');%fp为文件句柄,指定要写入数据的文件。注意:%f后有空格。fclose(fp);%关闭文件。msgbox('转换成功!  生成文件D:XYZ.txt');case '坐标转换XY=>BL'func(app);[filename, path] = uigetfile('*.txt');if isequal(filename,0)disp('User selected Cancel');endXYZ = load([path,filename]); %载入数据coordafter = coordtransfer(app.ellname,XYZ,app.opt,app.anformat);fp=fopen('D:\lbhnew.txt','w+');fprintf(fp,'%f  %f  %f\n',coordafter');fclose(fp);msgbox('转换成功!  生成文件D:lbhnew.txt');case '高斯正算'func(app);[filename, path] = uigetfile('*.txt');if isequal(filename,0)disp('User selected Cancel');endbl = load([path,filename]); %载入数据B=bl(:,2);L=bl(:,1);BL=[B L];[x,y,L0,NN]= gauss_bl2xy(app.ellname,BL,app.belt,app.anformat);xyL0N = [x y L0 NN];fp=fopen('D:\xyL0N_gauss.txt','w+');fprintf(fp,'%f  %f  %f  %f\n',xyL0N');fclose(fp);msgbox('转换成功!  生成文件D:xyL0N_gauss.txt');case '高斯反算'func(app);[filename, path] = uigetfile('*.txt');if isequal(filename,0)disp('User selected Cancel');endxyL0N = load([path,filename]); %载入数据                   x = xyL0N(:,1);y = xyL0N(:,2);                   xy = [x y];L0 = xyL0N(:,3);                   [L,B] = gauss_xy2bl(app.ellname,xy,L0,app.anformat);LB = [L B];fp=fopen('D:\lb_gauss.txt','w+');fprintf(fp,'%f %f\n',LB');fclose(fp);msgbox('转换成功!  生成文件D:lb_gauss.txt');endendend

测试

左边的是输入文件,右边的是输出文件。

大地坐标转换为直角坐标

直角坐标转换为大地坐标:

高斯正算:

高斯反算:

MATLAB APP设计相关推荐

  1. MATLAB APP 设计实践(一)UART通信(上篇)

    引言 UART通信属于异步串行通信,通信速率比较低,在一些速度要求不高的场合常用来作为多设备之间的控制与被控制方式.例如以UART串口通信作为上位机侧与运行设备之间的通信形式,实现上位机对设备的操控以 ...

  2. matlab app设计步骤_如何从MATLAB/Simulink入手,系统地学习自动驾驶?

    自动驾驶相关的软件工具有不少,作为汽车工程师,我们最熟悉的可能是MATLAB/Simulink.如何从MATLAB/Simulink入手,系统地学习自动驾驶? 本文来源:自动驾驶仿真 自动驾驶相关的软 ...

  3. matlab app设计步骤_1.1数学建模与MATLAB–MATLAB入门

    1.1数学建模与MATLAB–MATLAB入门 关注本专栏,继续分享数学建模与MATLAB知识 一.MATLAB是什么? MATLAB 是目前在国际上被广泛接受和使用的科学与工程计算软件.虽然 Cle ...

  4. MATLAB App Designer 计算器的设计

    作者初涉App设计,看到有前人写了guide版的计算器,所以萌生想法,想用App Designer来设计一个计算器. 有纰漏请指出,转载请说明. 学习交流请发邮件 1280253714@qq.com ...

  5. 基于Matlab App Designer的语音信号分析与处理(二):IIR和FIR滤波器的设计,语音信号的滤波

    接上文:https://blog.csdn.net/weixin_53877178/article/details/122470759 目录 一.课题的任务 二.内容.步骤和要求 (1)语音信号的采集 ...

  6. Matlab:使用 App 设计工具创建并运行简单 App

    Matlab:使用 App 设计工具创建并运行简单 App 运行教程 用于创建 App 的教程步骤 步骤 1:创建坐标区组件 步骤 2:创建滑块组件 步骤 3:更新滑块标签 步骤 4:导航到代码视图 ...

  7. Matlab学习——滑块曲线生成APP设计

    Matlab学习--滑块曲线生成APP设计 因为在以后的版本中将会删除GUIDE, 在删除GUIDE后,App可以继续运行, 但不能在GUIDE中对其进行编辑.所 以本文使用App设计工具创建新App ...

  8. 用MATLAB app designer设计人机交互界面——二阶线性动态电路可视化分析的研究

    用MATLAB app designer设计人机交互界面--二阶线性动态电路可视化分析的研究 这是我第一次尝试写博客,我试着给出电路课上要求的电路实验编程.但是电路的类型有点儿多,所以我只以二阶动态电 ...

  9. 【matlab专题】APP设计(一):APP的作用与开发

    前言 众所周知,Matlab中的app是可以自己进行开发的,一个好的app会使我们在工作上更有效的进行办公,所以好多公司都会做一个简单的app进行工作辅助,今天就来给大家讲一下,app的使用与开发,这 ...

最新文章

  1. 可持久化线段树(静态)【学习笔记】
  2. 一个asp.net2005的页面文件调用CSS样式的BUG
  3. 用eclipse创建WebService项目
  4. tp3.2 复合查询
  5. 探索多媒体开发最新最佳实践,我们在深圳等你
  6. javaweb(05):tomcat服务器的安装、启动,IDEA整合Tomcat创建动态web工程
  7. 从零学ELK系列(三):Centos安装Docker(超详细图文教程)
  8. Spring Data JPA使用Sort进行排序(Using Sort)(转)
  9. NSCalendar日历
  10. python2.7安装教程win7_win7下python2.7安装 pip,setuptools的正确方法
  11. 详解ICT及其业务领域范围
  12. STM32驱动TM1616程序加原理图
  13. 直连测速服务器异常,求证! 网件R7800, Speedtest测速的怪现象,200M宽带+R7800者进...
  14. vue网页打印后事件失效
  15. unity 打包APK 应用未安装
  16. sql 内连接,左连接,右连接,全连接
  17. 编写一个方法,将一段文本中的各个单词的字母顺序翻转题
  18. 如何查找某个物种的基因组大小
  19. java计算机毕业设计飞机航班信息查询系统源码+mysql数据库+系统+lw文档+部署
  20. 机器人基础研究和应用研究的内容

热门文章

  1. element ui 前台模板_一个干净优雅的 Element UI Admin 模板
  2. MySql在Springboot项目中报错errorCode 1045 ,state 28000
  3. php打开word文档_PHP使用phpword生成word文档
  4. ThinkPad T460s BIOS设置实现U盘启动
  5. 转载:揭秘内容付费的三种商业模式(原作者:小马宋)
  6. c语言进程管理,OS进程管理模拟(C语言实现)
  7. 主题:EXE + BPL + DLL + Interface实现插件式客户端解决方案
  8. 以太坊源码分析(39)geth启动流程分析
  9. 假定在使用CSMA/CD协议的10Mb/s以太网中某个站在发送数据时检测到碰撞,执行碰撞算法是选择了随机数R=100 试问这个站需要等待多长时间后才能再次发送数据,如果是100Mb/s的以太网呢?
  10. Android 中的 NDK 到底是什么?(详细解析+案例实战)