/** * @file RasterProjectBase.h * @brief None * @author 陈增辉 (3045316072@qq.com) * @version 2.5.0 * @date 24-6-4 * @copyright Copyright (c) Since 2024 中科卫星应用研究院 All rights reserved. */ #ifndef LAMPCAE_RASTERTOOLBASE_H #define LAMPCAE_RASTERTOOLBASE_H #include "BaseConstVariable.h" #include "gdal_priv.h" #include #include "LogInfoCls.h" namespace RasterToolBase { static bool GDALAllRegisterEnable = false; enum ProjectStripDelta { Strip_6, // 6度带 Strip_3 }; enum CoordinateSystemType { // 坐标系类型 GeoCoordinateSystem, ProjectCoordinateSystem, UNKNOW }; struct PointRaster { // 影像坐标点 double x; double y; double z; }; struct PointXYZ { double x, y, z; }; struct PointGeo { double lon, lat, ati; }; struct PointImage { double pixel_x, pixel_y; }; /// 根据经纬度获取 /// EPSG代码,根据经纬度返回对应投影坐标系统,其中如果在中华人民共和国境内,默认使用 /// CGCS2000坐标系统(EPSG 4502 ~ 4512 6度带,EPSG 4534 ~ 4554 3度带),其余地方使用WGS坐标系统, /// 投影方法 高斯克吕格(国内), 高斯克吕格 /// \param long 经度 /// \param lat 纬度 /// \return 对应投影坐标系统的 EPSG编码,-1 表示计算错误 long BASECONSTVARIABLEAPI getProjectEPSGCodeByLon_Lat(double long, double lat, ProjectStripDelta stripState = ProjectStripDelta::Strip_3); long BASECONSTVARIABLEAPI getProjectEPSGCodeByLon_Lat_inStrip3(double lon, double lat); long BASECONSTVARIABLEAPI getProjectEPSGCodeByLon_Lat_inStrip6(double lon, double lat); QString BASECONSTVARIABLEAPI GetProjectionNameFromEPSG(long epsgCode); long BASECONSTVARIABLEAPI GetEPSGFromRasterFile(QString filepath); std::shared_ptr BASECONSTVARIABLEAPI GetCenterPointInRaster(QString filepath); CoordinateSystemType BASECONSTVARIABLEAPI getCoordinateSystemTypeByEPSGCode(long EPSGCODE); };// namespace RasterProjectConvertor // 遥感类常用数据 #endif // LAMPCAE_RASTERTOOLBASE_H