之前文章简述了部分PROJ4的数据类型,文章地址如下
PROJ4 8.2.0常用函数和数据类型解释_Rogers_的博客-CSDN博客
本篇继续介绍常用的c++函数,官方文档链接如下
Functions — PROJ 8.2.1 documentation
函数名 | 输入变量 | 函数说明 |
PJ_CONTEXT* proj_context_create(void) | void | 创建一个新线程 |
PJ_CONTEXT* proj_context_clone(PJ_CONTEXT*) | 线程ctx | 克隆一个现有线程 |
void proj_context_create(PJ_CONTEXT* ) | 线程ctx | 释放线程 |
PJ *proj_create(PJ_CONTEXT *, const char *) | 线程ctx; proj字符串definition | 创建一个投影转换目标,最后必须通过proj_destroy()进行释放 |
PJ *proj_create_crs_to_crs(PJ_CONTEXT *, const char *, const char *, PJ_AREA *) | 线程ctx; 源投影字符串source_crs; 目标投影字符串 target_crs; area使用区域 | 创建一个投影转换通道,最后必须通过proj_destroy()进行释放 |
PJ *proj_normalize_for_visualization(PJ_CONTEXT *, const PJ *) | 线程ctx;投影目标obj | 在线程ctx中将投影的坐标格式与投影目标obj一致 |
PJ *proj_destroy(PJ *) | 投影P | 释放投影P |
PJ_AREA *proj_area_create() | void | 创建投影使用区域 |
void proj_area_set_bbox(PJ_AREA *, double west_lon_degree, double south_lat_degree, double east_lon_degree, double north_lat_degree) | 使用区域area;西南东北经纬度范围 | 设置使用区域的经纬度范围 |
void proj_area_destroy(PJ_AREA *) | 使用区域area | 释放投影使用区域area |
函数名 | 输入变量 | 函数说明 |
PJ_COORD proj_trans(PJ *P, PJ_DIRECTION direction, PJ_COORD coord) | 投影目标P; 投影方向direction; 待转换坐标coord | 投影转换,direction为PJ_FWD时为正投影,PJ_INV为逆投影 |
double proj_lp_dist(const PJ *P, PJ_COORD a, PJ_COORD b) | 投影目标P;坐标a;坐标b | 计算经纬度a,b坐标之间的距离,单位为m |
double proj_lpz_dist(const PJ *P, PJ_COORD a, PJ_COORD b) | 投影目标P;坐标a;坐标b | 同上,增加高度坐标 |
double proj_xy_dist(PJ_COORD a, PJ_COORD b) | 坐标a;坐标b | 计算两个投影后的二维笛卡尔坐标之间的距离 |
double proj_xyz_dist(PJ_COORD a, PJ_COORD b) | 坐标a;坐标b | 计算两个投影后的三维笛卡尔坐标之间的距离 |
PJ_COORD proj_geod(const PJ *P, PJ_COORD a, PJ_COORD b) | 投影目标P;坐标a;坐标b | 计算两个经纬度坐标,返回的坐标第一个值为距离,第二、三个值为前方位角和反方位角、第四个值不适用 |
double proj_torad(double angle_in_degrees) | 角度 | 角度转化为弧度 |
double proj_todeg(double angle_in_radians) | 弧度 | 弧度转化为角度 |
以上基本就是投影和坐标转换的常用函数,更多函数可以在第二段提到的官方文档链接进行查看。