简单且高效的水域物探轨迹坐标转换程序

简单且高效的水域物探轨迹坐标转换程序

前言

水上测线的高精度定位是水域物探的难题,水域磁法、水域地震实施时常采用船舶拖拽传感器进行走航式观测,GPS仪器放在船舶上测量,造成船舶位置与传感器位置存在偏差,后期资料整理需要校正。每次水域物探采集几万至几十万个平面坐标数据,采用手工校正费时费力,且较易出错。因此,本人开发了一套简单且高效的水域物探轨迹坐标校正程序。

文章目录

  • 简单且高效的水域物探轨迹坐标转换程序
            • 前言
    • 1、问题提出
    • 2、程序设计
    • 3、计算结果
        • 3.1、测网计算
        • 3.2、直线计算
        • 3.3、曲线计算

1、问题提出

水域磁法、水域地震是一种传统的水域物探方法,对水域勘探具有较好的效果。
在这里插入图片描述
如上图所示,水域磁法/水域地震勘探均需要在船舶尾部用拖绳牵引对应传感器,进行走航式勘探,将GPS固定在船舶上进行位置测量。GPS与物探传感器间存在一定的距离。
在这里插入图片描述
当船舶在水面上行驶时,船舶的轨迹与传感器的轨迹不一致,GPS只能测量船舶的轨迹,但是我们物探需要得到精确的传感器轨迹。尤其是在船舶拐弯时,传感器轨迹存在较大的偏移。
在这里插入图片描述
即使船舶想要沿着测线直线行驶,由于水流与风浪作用,船舶也会在测线左右摆动,传感器轨迹与船舶轨迹不一致。

因此,准确校正传感器轨迹坐标十分重要。

2、程序设计

需要分类讨论多种情况,以下为一种情况:当船舶沿直线行驶时,假设A点为当前船舶所在位置,B点为船舶行驶的下一个位置,O点为传感器位置。
在这里插入图片描述
根据A、B两点的位置,即可较简单的计算出O点的位置,计算代码如下:

close all
clear all
clc% 读取原始数据
data = xlsread("D:水域磁法勘探数据\轨迹转换程序\text.xlsx");% plot(data(:,1),data(:,2));n = length(data);x1 = data(1,1);
y1 = data(1,2);
x2 = data(2,1);
y2 = data(2,2);theta = atan((y2-y1)/(x2-x1));
if x1 < x2
xx1 = x1 + 12 * cos(pi + theta);
yy1 = y1 + 12 * sin(pi + theta);
else
xx1 = x1 + 12 * cos(theta);
yy1 = y1 + 12 * sin(theta);
end
figure(2),plot(x1,y1,'bo',x2,y2,'ks',xx1,yy1,'R-*');

当有十万个数据时,在上述程序上加一个for循环即可计算,代码如下:

close all
clear all
clc% 读取原始数据
% data = xlsread("D:水域磁法勘探数据\轨迹转换程序\text.xlsx");
% data = [ ];plot(data(:,1),data(:,2),'bo');hold onn = length(data);
data_new = zeros(n-1,2);
for i = 1:n-1clear x1 y1 x2 y2 xx1 yy1x1 = data(i,1);y1 = data(i,2);x2 = data(i+1,1);y2 = data(i+1,2);theta = atan((y2-y1)/(x2-x1));if x1 < x2xx1 = x1 + 13 * cos(pi + theta);yy1 = y1 + 13 * sin(pi + theta);elsexx1 = x1 + 13 * cos(theta);yy1 = y1 + 13 * sin(theta);enddata_new(i,:) = [xx1,yy1];
end
data_new = smoothdata(data_new,"sgolay",9);
plot(data_new(:,1),data_new(:,2),'r-');
% xlswrite("D:\水域磁法勘探数据\轨迹转换程序\text.xlsx",data_new,'sheet2');

经测试,在本人计算机情况下,计算十万个数据,计算仅需53.8273秒,计算精度为0.00000001米(小数点后八位)。

3、计算结果

3.1、测网计算

在这里插入图片描述

3.2、直线计算

在这里插入图片描述

3.3、曲线计算

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/355226.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT-QPainter实现一个可切换的开关控件

1、效果 2、核心代码 #ifndef SWITCH_H #define SWITCH_H #include <QWidget> #include <QTimer>

Javase.String 类

String 类 【本节目标】1. String类的重要性2. 常用方法2.1 字符串构造2.2 String对象的比较2.3 字符串查找2.4 转化2.5 字符串替换2.7 字符串截取2.8 其他操作方法2.9 字符串的不可变性2.10 字符串修改 3. StringBuilder和StringBuffer3.2 面试题&#xff1a; 4. String类oj4.…

【MySQL】 -- 用户管理

1. 权限 如果我们只能使用root用户&#xff0c;这样存在安全隐患。这时&#xff0c;就需要使用MySQL的用户管理。创建出非root用户&#xff0c;限制其权限。 权限这个概念拿出来就是用来限制非root用户的。这样从技术手段上保证了数据的安全性和完整性&#xff0c;防止有人删库…

【SAP Abap】一条SQL语句实现支持报表项配置的财务报表

【SAP Abap】一条SQL语句实现支持报表项配置的财务报表 1、业务背景2、配置项特殊处理3、实现方式&#xff08;Hana Studio SQL语句&#xff09;4、实现方式&#xff08;Abap OpenSQL语句&#xff09;5、总结 1、业务背景 在财务三大报表之外&#xff0c;业务需要使用类似的科…

数据库复习——模式分解

模式分解这边主要包括无损分解和保持函数依赖的分解两种形式&#xff0c;简单整理一下。 无损分解 把一个 R R R 分成 ρ { R 1 , R 2 , ⋯ , R k } \rho \{R_1,R_2,\cdots,R_k\} ρ{R1​,R2​,⋯,Rk​}&#xff0c;然后通过自然连接 R 1 ⋈ R 2 ⋈ ⋯ ⋈ R k R_1\bowtie R…

git的远程管理与标签管理

✨前言✨ &#x1f4d8; 博客主页&#xff1a;to Keep博客主页 &#x1f646;欢迎关注&#xff0c;&#x1f44d;点赞&#xff0c;&#x1f4dd;留言评论 ⏳首发时间&#xff1a;2024年6月20日 &#x1f4e8; 博主码云地址&#xff1a;博主码云地址 &#x1f4d5;参考书籍&…

swift使用swift-protobuf协议通讯,使用指北

什么是Protobuf Protobuf&#xff08;Protocol Buffers&#xff09;协议&#x1f609; Protobuf 是一种由 Google 开发的二进制序列化格式和相关的技术&#xff0c;它用于高效地序列化和反序列化结构化数据&#xff0c;通常用于网络通信、数据存储等场景。 为什么要使用Proto…

【python】Sklearn—Cluster

参考学习来自 10种聚类算法的完整python操作示例 文章目录 聚类数据集亲和力传播——AffinityPropagation聚合聚类——AgglomerationClusteringBIRCH——Birch&#xff08;✔&#xff09;DBSCAN——DBSCANK均值——KMeansMini-Batch K-均值——MiniBatchKMeans均值漂移聚类——…

MySQL之复制(七)

复制 定制的复制方案 分离功能 许多应用都混合了在线事务处理(OLTP)和在线数据分析(OLAP)的查询。OLTP查询比较短并且是事务型的。OLAP查询则通常很大&#xff0c;也很慢&#xff0c;并且不要求绝对最新的数据。这两种查询给服务器带来的负担完全不同&#xff0c;因此它们需…

Linux系统部署Samba服务,共享文件夹给Windows

Samba服务是在Linux和UNIX系统上实现SMB协议的一个免费软件&#xff0c;由服务器及客户端程序构成。 Samba服务是连接Linux与Windows的桥梁&#xff0c;它通过实现SMB&#xff08;Server Message Block&#xff09;协议来允许跨平台的文件和打印机共享。该服务不仅支持Linux和…

用React编写一个密码组件表单

theme: condensed-night-purple highlight: atelier-cave-light 背景介绍 我们在使用网站或者应用程序的登录界面或创建帐户界面时&#xff0c;往往避免不了需要用户输入密码这一步骤&#xff0c;而用户是否可以选择看见他们输入的密码是十分重要的一项功能。尤其是在当输入的…

20240620每日后端---------Spring Boot中的 5 大设计模式最佳实践和示例 这些是我经常使用的设计模式并且非常喜欢

在本文中&#xff0c;我们将深入探讨五种基本设计模式&#xff0c;并探讨在 Spring Boot 项目中有效应用它们的最佳实践。每个模式都将附有一个实际示例来演示其实现。 单例模式 Singleton 模式确保一个类只有一个实例&#xff0c;并提供对它的全局访问点。这对于管理资源&am…

【车载开发系列】CAN通信总线再理解(中篇)

【车载开发系列】CAN通信总线再理解&#xff08;中篇&#xff09; 九. CAN总线标准十. CAN物理层十一. CAN数据链路层1&#xff09;CAN的通信帧类型2&#xff09;CAN的标准帧格式1. CAN ID2. 数据场 3&#xff09;CAN总线仲裁 十二. CAN应用层1&#xff09;CANopen2&#xff09…

linux如何部署前端项目和安装nginx

要在Linux上部署前端项目并安装Nginx&#xff0c;你可以按照以下步骤操作&#xff1a; 安装Nginx: sudo apt update sudo apt install nginx 启动Nginx服务: sudo systemctl start nginx 确保Nginx服务开机自启: sudo systemctl enable nginx 部署前端项目&#xff0c;假设前…

Ruby on Rails Post项目设置网站初始界面

在构建了Ruby的Web服务器后&#xff0c;第三步就可以去掉框架的官方页面&#xff0c;设置自己的网页初始页了。 Linux系统安装Ruby语言-CSDN博客 、在Ubuntu中创建Ruby on Rails项目并搭建数据库-CSDN博客、 Ruby语言建立Web服务器-CSDN博客 了解Ruby onRails项目中的主要文件…

Srouce Insight 4出现乱码

今天用SI4打开一个工程文件&#xff0c;一打开发现注释全是乱码。中文全部看不出来&#xff0c;英文和数字可以看得出来。 那是因为中文的编码格式不算特别兼容。所以需要调整编码格式。 于是我在这里调整了编码格式&#xff1a; 找到菜单的Options-Preferences里面的Files 调…

《计算机英语》Unit1 计算机概述

期末试卷组成 1、选择20道 2、判断20道 3、词汇翻译&#xff08;单词词组&#xff0c;参照课后习题&#xff09; 4、翻译2道&#xff08;一道原题&#xff0c;参照作业&#xff09; Unit One Computer Overview 单元1 计算机概述 algorithm n. 算法 operate …

k8s之kubelet证书时间过期升级

1.查看当前证书时间 # kubeadm alpha certs renew kubelet Kubeadm experimental sub-commands kubeadm是一个用于引导Kubernetes集群的工具&#xff0c;它提供了许多命令和子命令来管理集群的一生周期。过去&#xff0c;某些功能被标记为实验性的&#xff0c;并通过kubeadm a…

CVPR 2024揭幕,清华大学论文接收量霸榜,轻松碾压斯坦福、麻省理工

CVPR2024 会议之眼 快讯 会议介绍 2024 年 CVPR &#xff08;Computer Vision and Pattern Recogntion Conference) 即国际计算机视觉与模式识别会议&#xff0c;于6月17日至21日正在美国西雅图召开。CVPR是计算机视觉和模式识别领域的顶级会议之一。与ICCV和ECCV并称为计算…

Java基础 - 练习(四)打印九九乘法表

Java基础练习 打印九九乘法表&#xff0c;先上代码&#xff1a; public static void multiplicationTable() {for (int i 1; i < 9; i) {for (int j 1; j < i; j) {// \t 跳到下一个TAB位置System.out.print(j "" i "" i * j "\t"…