PROJ4 8.2.0常用函数和数据类型解释

        最近学习Opendrive地图解析需要使用到投影坐标变换,于是开始学习PROJ4,PROJ4的源代码可在GitHub中找到,地址如下:https://github.com/OSGeo/PROJ,PROJ4官方文档链接如下:Data types — PROJ 8.2.1 documentation,编译过程可参考我的文章:PROJ4在Ubuntu18.04系统的编译过程及测试代码_Rogers_的博客-CSDN博客

        回到正题,针对我所常用的数据类型和函数解释及用法如下:

转换对象的数据类型
数据类型数据含义
PJ最基础的数据类型,用于存储给定投影的所有信息

PJ_DIRECTION

投影变换关系,有三个值1,0,-1分别代表正变换,不变,负变换,也可用PJ_FWD,PJ_IDENT,PJ_INV表示
PJ_CONTEXT上下文,创建一个上下文即一个投影在一个线程的操作,使用proj_context_create()进行创建,并使用proj_context_destroy()销毁
PJ_AREA在proj_create_crs_to_crs()中选择所给两个坐标参考系中的最佳转换
二维坐标系的数据类型
PJ_LP

结构体,存储大地坐标经纬度,通常以弧度表示,包含两个变量,

PJ_LP.lam即为经度,PJ_LP.phi即为纬度

PJ_XY结构体,存储笛卡尔坐标,包含两个变量,x,y,分别代表东和北方向
PJ_UV

结构体,存储通用坐标,包含两个变量,u,v,可以替代上述两个坐标,取决于用法

        三维坐标系和时空坐标系的数据类型PJ_LPZ 相较二维多一个z,代表垂直分量 PJ_XYZ 同上 PJ_UVW 同上

PJ_LPZT相较三维多一个t,代表时间分量
PJ_XYZT同上
PJ_UVWT

同上,也可以用enu表示前三个变量

        另外还有旋转角,方位角等不常用,用到时可自行去官网查询用法和解释;

        PJ_COORD:复杂坐标系类型,为所有坐标系的集合,可用于表示任何坐标系,指定坐标系可使用PJ_COORD.坐标系类型,如PJ_COORD.xyzt。

        PJ_FACTORS:投影因素,具体如下:

typedef struct {
    double meridional_scale;//经纬度坐标的子午线刻度
    double parallel_scale;//经纬度坐标的平行刻度
    double areal_scale;//经纬度坐标的面积比例因子

    double angular_distortion;//经纬度坐标的角变形
    double meridian_parallel_angle;//经纬度坐标的子午线或平行线角度
    double meridian_convergence;//经纬度坐标的网格偏角

    double tissot_semimajor;//最大比例因子
    double tissot_semiminor;//最小比例因子

    double dx_dlam;//x对经度的偏导
    double dx_dphi;//x对纬度的偏导
    double dy_dlam;//y对经度的偏导
    double dy_dphi;//y对纬度的偏导
} PJ_FACTORS;
列表结构的数据类型
PJ_OPERATIONS结构体,用于描述对投影的操作,id代表该操作的编号,PJ代表操作的切入点,descr代表操作说明
PJ_ELLPS结构体,用于描述椭球体的属性,id代表椭球体编号,major代表椭球的长半轴或球体半径,ell代表椭球参数,name代表椭球体名称
PJ_UNITS结构体,描述距离单位,详细见文档
PJ_PRIME_MERIDIANS结构体,描述本初子午线,详细见文档

        剩下数据类型,对投影操作用处不大,此处不做解释,需要时详细见文档。

        常用函数还在摸索中,内容也很多,将会留到下篇文章进行编写,初次写文章还不熟练,希望各路大佬批评指正!感谢。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值