步骤一:安装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