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

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

前言

水上测线的高精度定位是水域物探的难题,水域磁法、水域地震实施时常采用船舶拖拽传感器进行走航式观测,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.mzph.cn/web/30984.shtml

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

相关文章

互联网应用主流框架整合之Spring Boot基本概念

Spring Boot是用来简化Spring应用程序的搭建、开发、测试和部署过程的&#xff0c;该框架使用了特定的方式进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置&#xff0c;SpringBoot致力于快速应用开发(Rapid Application Development)领域的发展&#xff0c;它通过…

RTSP/Onvif安防监控平台EasyNVR抓包命令tcpdump使用不了的解决方法

安防视频监控汇聚EasyNVR智能安防视频监控平台&#xff0c;是基于RTSP/Onvif协议的安防视频平台&#xff0c;可支持将接入的视频流进行全平台、全终端分发&#xff0c;分发的视频流包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等格式。平台可提供的视频能力包括&#xff1a;…

vscode插件开发之 - TestController

TesController概要介绍 TestController 组件是用于实现自定义测试框架和集成测试结果的。它允许开发者定义自己的测试运行器&#xff0c;以支持在VSCode中运行和展示测试。以下是一些使用 TestController 组件的主要场景&#xff1a; 自定义测试框架&#xff1a;如果你正在开发…

C++语法19 循环嵌套结构(for/while循环)

语法阶段已经更新到第18章了&#xff0c;前面的知识你都学会了吗&#xff1f;如果还没有学习前面的知识&#xff0c;请点击&#x1f449;语法专栏进行学习哦&#xff01; 目录 循环嵌套 训练&#xff1a;数字矩形 解析 参考代码 训练&#xff1a;星号三角形 解析 参考代码 …

Scikit-Learn梯度提升决策树(GBDT)

Scikit-Learn梯度提升决策树 1、梯度提升决策树(GBDT)1.1、Boosting方法1.2、GBDT的原理1.3、GBDT回归的损失函数1.4、梯度下降与梯度提升1.5、随机森林与GBDT1.6、GBDT的优缺点2、Scikit-Learn梯度提升决策树(GBDT)2.1、Scikit-Learn GBDT回归2.1.1、Scikit-Learn GBDT回归…

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

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

《车载以太网通信测试》课程来袭!!!

本课程包含教程和脚本两部分内容。 教程 详细介绍以太网&#xff0c;如何理解TCP/IP协议&#xff0c;CAPL中涉及以太网的代码&#xff0c;以太网测试环境如何搭建&#xff0c;从物理层、链路层、网络层、传输层到应用层多种协议测试点的测试原理和测试方法介绍&#xff0c;中…

西门子学习笔记12 - BYTE-REAL互相转化

这是针对于前面MQTT协议的接收和发送数组只能是BYTE数组做出的对应的功能块封装。 1、BYTE-REAL转化 1、把byte数组转成字符串形式 2、把字符串转成浮点数 2、REAL-BYTE转化 1、把浮点数转成字符串 2、把字符串转成Byte数组

【转载】TIOBE 编程指数 6 月排行榜公布,vb.net排第九

原文地址&#xff1a;https://baijiahao.baidu.com/s?id1801368030428902126&wfrspider&forpc IT之家 6 月 9 日消息&#xff0c;TIOBE 编程社区指数是一个衡量编程语言受欢迎程度的指标&#xff0c;评判的依据来自世界范围内的工程师、课程、供应商及搜索引擎&#…

乐鑫esp32系列睡眠模式下蓝牙连接功耗测试,新支持ESP-C6,启明云端乐鑫代理商

本教程适用于ESP32-S3、ESP32-C3、ESP32-C6&#xff1b; 睡眠模式介绍 ESP32系列常见的休眠方式有三种&#xff0c;分别为Modem-sleep、Light-sleep 和 Deep-sleep。 Modem-sleep模式&#xff1a;CPU 正常工作&#xff0c;可以对时钟进行配置。 进入 Modem-sleep 模式后&…

大模型与知识图谱:联合打造智能未来,案例解析让你大开眼界!

在数字化浪潮中&#xff0c;大模型和知识图谱作为人工智能领域的两大核心技术&#xff0c;正逐渐改变着我们的生活。大模型&#xff0c;是一种通过大规模数据训练得到的深度学习模型&#xff0c;具备强大的语义理解和推理能力&#xff1b;而知识图谱&#xff0c;则是以图状结构…

光伏设计需要设计哪些方面?

光伏设计是一项复杂而关键的工作&#xff0c;它涉及到多个方面的综合考虑&#xff0c;以确保光伏系统的效率、安全性和可持续性。下面将详细探讨光伏设计需要设计的几个方面。 一、系统规模与布局 光伏设计的首要任务是确定系统的规模和布局。这包括评估安装地点的光照资源、可…

【nginx】 nginx核心功能

【nginx】 nginx核心功能 1.nginx核心功能 1. 反向代理 2. 负载均衡 3. 动静分离 4. nginx的高可用2. 反向代理 正向代理: 该服务器代理的是客户端&#xff0c;对于服务器来说&#xff0c;不知道真实客户端的ip。比如: 翻墙软件。 访问国外的服务器---使用了翻墙软件----对…

Vue 使用setInterval定时器导致前端页面卡死(解决方法)

Vue 使用setInterval定时器导致前端页面卡死 原因 setinterval不会清除定时器队列&#xff0c;每重复执行1次都会导致定时器叠加&#xff0c;最终卡死你的网页。 其原因与JS引擎线程有关&#xff08;需深入研究JS引擎线程&#xff09; &#xff0c;但是setTimeout是自带清除定…

同城跑腿多合一系统源码小程序支持安卓+IOS+公众号+H5

&#x1f680; 同城跑腿多合一小程序&#xff1a;便捷生活新选择 &#x1f4a8; 一、引言&#xff1a;走进便捷新纪元 在这个快节奏的现代生活中&#xff0c;时间成了最宝贵的财富。而“同城跑腿多合一小程序”正是为了满足大家对于便捷、高效生活的追求而诞生的。它不仅是一款…

RapidLayout:中英文版面分析推理库

引言 继上一篇文章之后&#xff0c;我这里想着将360发布的版面分析模型整合到现有的rapid_layout仓库中&#xff0c;便于大家快速使用。 不曾想到&#xff0c;我这整理工作越做越多了&#xff0c;好在整体都是往更好方向走。 起初&#xff0c;rapid_layout项目是在RapidStru…

vue3页面传参

一&#xff0c;用query传参 方法&#xff1a; router.push({path: ‘路由地址’, query: ‘参数’}) 例子&#xff1a;a页面携带参数跳转到b页面并且b页面拿到a页面传递过来的参数 在路由router.ts配置 a页面&#xff1a; <template><div >a页面</div>…

【可控图像生成系列论文(二)】MimicBrush 港大、阿里、蚂蚁集团合作论文解读2

【可控图像生成系列论文&#xff08;一&#xff09;】简要介绍了论文的整体流程和方法&#xff0c;本文则将就整体方法、模型结构、训练数据和纹理迁移进行详细介绍。 1.整体方法 MimicBrush 的整体框架如下图所示。为了实现模仿编辑&#xff0c;作者设计了一种具有双扩散模型…

SpingBoot快速入门下

响应HttpServietResponse 介绍 将ResponseBody 加到Controller方法/类上 作用&#xff1a;将方法返回值直接响应&#xff0c;如果返回值是 实体对象/集合&#xff0c;将会自动转JSON格式响应 RestController Controller ResponseBody; 一般响应 统一响应 在实际开发中一般…

DS1339C串行实时时钟-国产兼容RS4C1339

RS4C1339串行实时时钟是一种低功耗的时钟/日期设备&#xff0c;具有两个可编程的一天时间报警器和一个可编程方波输出。地址和数据通过2线双向总线串行传输。时钟/日期提供秒、分钟、小时、天、日期、月份和年份信息。对于少于31天的月份&#xff0c;月末的日期会自动调整&…