首页 > 编程语言 >C++(1) gps转换为enu

C++(1) gps转换为enu

时间:2024-07-15 21:20:11浏览次数:20  
标签:origin target double C++ height GeographicLib enu include gps

 

 

步骤一:安装GeographicLib

首先,确保你的系统中已安装GeographicLib库。可以通过以下命令在Ubuntu中安装:

sudo apt-get install geographiclib-*   # 安装GeographicLib的库
sudo apt-get install libgeographic-*  # 安装GeographicLib的依赖库

  

步骤二:配置C++项目

在你的C++项目中,需要配置CMake以及链接GeographicLib库。

 

 

CMakeLists.txt

cmake_minimum_required(VERSION 3.5)

set(CMAKE_CXX_STANDARD 11)

# 设置项目名称和语言
project(my_test_project LANGUAGES CXX)

# 包含GeographicLib的头文件路径
include_directories("/usr/include/GeographicLib")

# 设置输出的可执行文件
add_executable(${PROJECT_NAME} main.cpp)

# 链接GeographicLib库(根据你的安装调整库名)
target_link_libraries(${PROJECT_NAME} Geographic)
步骤三:示例代码

以下是一个简单的示例代码,演示了如何使用GeographicLib将经纬度转换为局部直角坐标系:

main.cpp

GNSS务必是double类型 否则精度保存不到6位米

#include <iostream>
#include <GeographicLib/LocalCartesian.hpp>

int main() {
    // 当前点的经纬度和高度,作为局部坐标系的原点
    double origin_latitude = 29.116543;   // 纬度
    double origin_longitude = 111.506270; // 经度
    double origin_height = 0.0;           // 高度

    // 初始化 LocalCartesian 对象,并设置原点
    GeographicLib::LocalCartesian geoConverter;
    geoConverter.Reset(origin_latitude, origin_longitude, origin_height);

    // 要转换的另一个点的经纬度和高度
    double target_latitude = 29.106543;
    double target_longitude = 111.606270;
    double target_height = 0.0;

    // 转换为局部直角坐标系
    double x, y, z;
    geoConverter.Forward(target_latitude, target_longitude, target_height, x, y, z);

    // 输出转换后的局部坐标
    std::cout << "Local Cartesian coordinates: (" << x << ", " << y << ", " << z << ")" << std::endl;

    return 0;
}

 编译运行

 

标签:origin,target,double,C++,height,GeographicLib,enu,include,gps
From: https://www.cnblogs.com/gooutlook/p/18303984

相关文章

  • 高质量C/C++编程指南总结(五)—— 常量
    尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串。在C++程序中只使用const常量而不使用宏常量,即const常量完全取代宏常量。需要对外公开的常量放在头文件中,不需要对外公开的常量放在定义文件的头部。为便于管理,可以把不同模块的常量集中存放在一个公共......
  • C++分类
    //ps:学习自存,暂未整理。知识点算法:思维,STL,模拟,排序,枚举,查找,递推与递归,贪心,二分,双指针,前缀和、差分与离散化丨常见优化技巧,分治与倍增〔倍增Floyd〕,位运算丨三分,01分数规划字符串:基础丨kmp,字典树,AC自动机,最小表示法,后缀数组,后缀自动机数据结构:栈,队列,线性表,链表,二叉树,集合,图的基......
  • C++程序设计最细教程
    1.类与对象(重点)1.1概念类:类是一个抽象的概念,描述同一类对象的特征。对象:符合类特性特性的实体。对象需要按照类的定义进行创建,因此先编写类才能创建对象。1.2类的内容类中最基础的内容包括两部分:属性(成员变量、数据成员)用来描述类对象的数据段,通常是名词变量,例......
  • Windows下C++动态链接库的生成以及使用
    目录一.前言二.生成动态链接库三.使用动态链接库四.其他一.前言这篇文章简单讨论一下Windows下如何使用VS生成和使用C++动态链接库,示例使用VS2022环境。二.生成动态链接库先创建C++项目-动态链接库(DLL)然后将默认生成的.h和.cpp文件清理干净,当然你也可以选择保......
  • 【C/C++】结构体内存对齐
    结构体内存对齐详解1、第一个成员在与结构体变量偏移量为0的地址处2、其他成员变量要偏移到对齐数的整数倍的地址处,注意偏移是从结构体首地址处开始的。对齐数取的是编译器默认的一个对齐数与该成员大小 这个俩个数中的最小值。【VS中默认的值为8、Linu......
  • 开发板测试手册——USB 4G 模块、GPS 定位功能操作步骤详解(3)
    前言本文适用开发环境:Windows开发环境:Windows764bit、Windows1064bitLinux开发环境:Ubuntu14.04.364bit虚拟机:VMware15.1.0U-Boot:U-Boot-2017.01Kernel:Linux-4.9.0、Linux-RT-4.9.0进行本文档操作前,请先按照调试工具安装、Linux开发环境搭建相关文档,安装......
  • kimi写代码:c++ 线程池
    https://kimi.moonshot.cn/share/cqaberkdvond1bljn8sg在这个示例中:线程池创建了固定数量的工作线程。enqueue方法用于将任务添加到队列,并返回一个std::future对象,可用于获取任务的结果。每个工作线程在循环中等待任务分配,并在接收到任务后执行它。当线程完成分配的任务后......
  • 面试算法(排序)附带c++/python实现
            排序算法是面试中会经常会被问到的一类问题,如果可以掌握较多的排序算法,在面试过程中才更有机会被面试官看重哦,下面我们准备了一些常见的面试算法,并分别给出了c++和python的代码实现,小伙伴们一起学起来吧!冒泡排序(BubbleSort)        基于交换的排序,......
  • C++ STL is_sorted用法
    一:功能   检查一个区间内的元素是否有序,按升序(或降序)排列二:用法#include<algorithm>#include<iostream>intmain(){std::vector<int>data1={1,2,3,4,5};booltest1=std::is_sorted(data1.begin(),data1.end());std::cout<<std::boo......
  • Hypertable 基于C++开发编译环境部署
    一、安装gccyuminstallgccgcc-c++二、安装boostyuminstallboostboost-develboost1.42以上版本,执行以下脚本:tarxjvfboost_1_44_0.tar.bz2cdboost_1_44_0./bootstrap.sh--with-libraries=filesystem,iostreams,program_options,system,thread,graph,regex./bjam......