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