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

2024-06-21 04:12

本文主要是介绍简单且高效的水域物探轨迹坐标转换程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

前言

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

相关文章

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程