C++(1) gps轉換為enu

MKT-porter發表於2024-07-15

步驟一:安裝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;
}

 編譯執行

相關文章