网站建设技术列表,做网站公司的前景,做一个小网站多少钱,网站开发图片加载慢一、概述主要内容#xff1a;本文基于GeographicLib开源库#xff0c;实现了一个地理空间坐标转换功能#xff0c;主要用于根据观测站的位置和目标的相对方位信息#xff0c;计算目标在地球坐标系中的绝对位置。输入#xff1a;观测站的经纬度坐标(纬度、经度、海拔高度)和…一、概述主要内容本文基于GeographicLib开源库实现了一个地理空间坐标转换功能主要用于根据观测站的位置和目标的相对方位信息计算目标在地球坐标系中的绝对位置。输入观测站的经纬度坐标(纬度、经度、海拔高度)和目标的相对观测参数(方位角、俯仰角、距离)输出目标在地心固定坐标系(ECEF)中的三维坐标(X,Y,Z)二、代码
#include iostream
#include iomanip
#include cmath
#include GeographicLib/Geocentric.hpp
#include GeographicLib/LocalCartesian.hpp#ifndef M_PI
#define M_PI (3.14159265358979323846)
#endifvoid calculateTargetPosition(double station_lat, double station_lon, double station_alt,double azimuth, double elevation, double distance,double target_x, double target_y, double target_z) {// 验证输入参数if (distance 0) {std::cerr 错误距离必须为正数 std::endl;return;}// 初始化局部坐标系GeographicLib::LocalCartesian proj(station_lat, station_lon, station_alt,GeographicLib::Geocentric::WGS84());// 计算局部ENU坐标东北天double east distance * cos(elevation) * sin(azimuth);double north distance * cos(elevation) * cos(azimuth);double up distance * sin(elevation);// 转换为地心固定坐标系下的经纬高double lat0., lon0., alt0.;proj.Reverse(east, north, up, lat, lon, alt);// 转换为地心固定坐标系下的XYZconst GeographicLib::Geocentric earth GeographicLib::Geocentric::WGS84();earth.Forward(lat, lon, alt, target_x, target_y, target_z);
}int main() {// 示例站址坐标(纬度,经度,高度)double station_lat 40.0; // 北纬40度double station_lon 116.0; // 东经116度double station_alt 100.0; // 海拔100米// 观测目标参数double azimuth 206.043782 * M_PI/180.0; // 方位角double elevation 15.318917 * M_PI/180.0; // 俯仰角double distance 929807.813; // 距离米// 计算结果double target_x, target_y, target_z;calculateTargetPosition(station_lat, station_lon, station_alt,azimuth, elevation, distance,target_x, target_y, target_z);std::cout std::fixed std::setprecision(3) Target ECEF (X,Y,Z): target_x , target_y , target_z std::endl;return 0;
}三、运行结果在Windows/GeographicLib-2.1.1环境下上述代码程序运行输出结果如下正确性已验证
Target ECEF (X,Y,Z): -2100493.586, 5204826.766, 3618737.188
四、GeographicLib库简单介绍
1、GeographicLib 功能定位GeographicLib 库聚焦于地表及近地空间的地理计算和地固坐标系转换如地心地固坐标系ECEF、大地坐标系BLH未包含天球惯性坐标系如 J2000的转换功能。J2000 转换依赖岁差章动、恒星时等动态天文参数需实时地球定向数据EOP而GeographicLib 未集成此类模型。 其官方网址为 https://geographiclib.sourceforge.io2、GeographicLib 的核心能力1大地测量计算 大圆距离与方位角计算如两点间测地线距离、多个点包围的球面面积 测地线路径规划如航线生成 地表曲率、子午线弧长等椭球模型计算2坐标系统转换 经纬高BLH↔地固直角坐标ECEF支持 WGS84、GRS80 等椭球体 局部坐标系转换如ENU/NED与ECEF互转 投影坐标系转换UTM、UPS、MGRS3地球物理模型 重力场计算如 EGM2008 模型 地磁场模拟如 WMM2020 模型