数据类型¶
本节描述PROJ.4中使用的大量数据类型。根据经验,PROJ.4数据类型的前缀是 PJ_
,或在一个特定的情况下,简称为 PJ
. 一些值得注意的例外可以追溯到项目4的早期,当时 PJ_
前缀使用不一致。
变换对象¶
-
type PJ¶
包含与给定投影或变换有关的一切的对象。作为PROJ.4库的用户,您只暴露于指向此对象的指针,并且内容隐藏在公共API后面。
PJ
对象是用proj_create()
被摧毁了proj_destroy()
.
-
type PJ_DIRECTION¶
枚举,用于表示给定转换应按哪个方向执行。在转换函数调用中使用,如上一节所述 transformation functions .
前向变换定义为:c:
typedef enum proj_direction { PJ_FWD = 1, /* Forward */ PJ_IDENT = 0, /* Do nothing */ PJ_INV = -1 /* Inverse */ } PJ_DIRECTION;
-
enumerator PJ_FWD¶
在前进方向执行变换。
-
enumerator PJ_IDENT¶
身份。什么也不做。
-
enumerator PJ_INV¶
逆方向变换。
-
enumerator PJ_FWD¶
-
type PJ_CONTEXT¶
上下文对象支持项目4的安全多线程使用。每个
PJ
对象连接到上下文(如果未指定,则使用默认上下文)。上下文中的所有操作都应该在同一个线程中执行。PJ_CONTEXT
对象是用proj_context_create()
被摧毁了proj_context_destroy()
.
-
type PJ_AREA¶
6.0.0 新版功能.
描述执行变换的区域的不透明对象。
它与
proj_create_crs_to_crs()
选择两个输入坐标系之间的最佳转换。
二维坐标¶
各种二维坐标数据类型。
三维坐标¶
以下数据类型是上述数据类型的三维等价物。
-
type PJ_LPZ¶
三维版本
PJ_LP
. 包含经度、纬度和垂直分量。typedef struct { double lam, phi, z; } PJ_LPZ;
-
double PJ_LPZ.lam¶
经度。拉姆达。
-
double PJ_LPZ.phi¶
纬度。功率因数。
-
double PJ_LPZ.z¶
垂直分量。
-
double PJ_LPZ.lam¶
时空坐标类型¶
以下数据类型是上述三元组在时域中的扩展。
-
type PJ_LPZT¶
时空版本
PJ_LPZ
.typedef struct { double lam; double phi; double z; double t; } PJ_LPZT;
-
double PJ_LPZT.lam¶
经度。
-
double PJ_LPZT.phi¶
纬度
-
double PJ_LPZT.z¶
垂直分量。
-
double PJ_LPZT.t¶
时间成分。
-
double PJ_LPZT.lam¶
大地测量计算的辅助类型¶
-
type PJ_OPK¶
旋转,例如三个欧拉角。
typedef struct { double o, p, k; } PJ_OPK;
-
double PJ_OPK.o¶
第一旋转角,Ω。
-
double PJ_OPK.p¶
第二旋转角,φ。
-
double PJ_OPK.k¶
第三旋转角,kappa。
-
double PJ_OPK.o¶
复杂坐标类型¶
投影导数¶
-
type PJ_FACTORS¶
各种制图特性,如比例尺因子、角度畸变和子午线会聚。计算方式
proj_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; double dx_dphi; double dy_dlam; double dy_dphi; } PJ_FACTORS;
-
double PJ_FACTORS.meridional_scale¶
坐标经向尺度 \(\left(\lambda,\phi\right)\) .
-
double PJ_FACTORS.parallel_scale¶
坐标平行比例尺 \(\left(\lambda,\phi\right)\) .
-
double PJ_FACTORS.areal_scale¶
坐标处的面积比例因子 \(\left(\lambda,\phi\right)\) .
-
double PJ_FACTORS.angular_distortion¶
坐标角畸变 \(\left(\lambda,\phi\right)\) .
-
double PJ_FACTORS.meridian_parallel_angle¶
子午线/平行角, \(\theta^\prime\) ,在坐标处 \(\left(\lambda,\phi\right)\) .
-
double PJ_FACTORS.meridian_convergence¶
坐标子午线收敛 \(\left(\lambda,\phi\right)\) . 有时也称为 栅格偏角 .
-
double PJ_FACTORS.meridian_convergence¶
-
double PJ_FACTORS.tissot_semimajor¶
最大比例因子。
-
double PJ_FACTORS.tissot_semiminor¶
最小比例因子。
-
double PJ_FACTORS.dx_dlam¶
偏导数 \(\frac{{\partial x}}{{\partial \lambda}}\) 坐标系 \(\left(\lambda,\phi\right)\) .
-
double PJ_FACTORS.dy_dlam¶
偏导数 \(\frac{{\partial y}}{{\partial \lambda}}\) 坐标系 \(\left(\lambda,\phi\right)\) .
-
double PJ_FACTORS.dx_dphi¶
偏导数 \(\frac{{\partial x}}{{\partial \phi}}\) 坐标系 \(\left(\lambda,\phi\right)\) .
-
double PJ_FACTORS.dy_dphi¶
偏导数 \(\frac{{\partial y}}{{\partial \phi}}\) 坐标系 \(\left(\lambda,\phi\right)\) .
-
double PJ_FACTORS.meridional_scale¶
列表结构¶
-
type PJ_OPERATIONS¶
项目4操作说明
struct PJ_OPERATIONS { const char *id; /* operation keyword */ PJ *(*proj)(PJ *); /* operation entry point */ char * const *descr; /* description text */ };
-
const char *id¶
操作关键字。
-
char *const *descr¶
操作说明。
-
const char *id¶
-
type PJ_ELLPS¶
项目4中定义的椭球体说明
struct PJ_ELLPS { const char *id; const char *major; const char *ell; const char *name; };
-
const char *id¶
椭球体的关键字名称。
-
const char *major¶
椭球体的半长轴,或球体的半径。
-
const char *ell¶
椭圆参数,例如
rf=298.257
或b=6356772.2
。
-
const char *name¶
椭球体的名称
-
const char *id¶
-
type PJ_UNITS¶
项目中定义的距离单位。
struct PJ_UNITS { const char *id; /* units keyword */ const char *to_meter; /* multiply by value to get meters */ const char *name; /* comments */ double factor; /* to_meter factor in actual numbers */ };
-
const char *id¶
单位的关键字。
-
const char *to_meter¶
将给定单位转换为米的系数的文本表示形式
-
const char *name¶
单位名称。
-
double factor¶
将单位转换为米的转换系数。
-
const char *id¶
信息结构¶
-
type PJ_INFO¶
包含有关项目当前实例的信息的结构。结构由填充
proj_info()
.typedef struct { int major; int minor; int patch; const char *release; const char *version; const char *searchpath; } PJ_INFO;
-
const char *PJ_INFO.release¶
发布信息。版本号和发布日期,例如“Rel。4.9.3,2016年8月15日”。
-
const char *PJ_INFO.version¶
完整版本号的文本表示,例如“4.9.3”。
-
int PJ_INFO.major¶
主要版本号。
-
int PJ_INFO.minor¶
次要版本号。
-
int PJ_INFO.patch¶
补丁版本。
-
const char PJ_INFO.searchpath¶
搜索项目的路径。以分号(Windows)或冒号(非Windows)分隔的目录列表,例如
C:\\Users\\doctorwho;C:\\OSGeo4W64\\share\\proj
。栅格和 init files 在搜索路径的目录中查找。
-
const char *PJ_INFO.release¶
-
type PJ_PROJ_INFO¶
保存有关
PJ
对象。填充者proj_pj_info()
. 这个PJ_PROJ_INFO
对象提供对PJ
,所以一旦PJ
被销毁或以其他方式变得无效PJ_PROJ_INFO
typedef struct { const char *id; const char *description; const char *definition; int has_inverse; double accuracy; } PJ_PROJ_INFO;
-
int PJ_PROJ_INFO.has_inverse¶
如果定义的操作存在反向映射,则为1,否则为0。
-
double PJ_PROJ_INFO.accuracy¶
转换的预期精度。-1如果未知。
-
int PJ_PROJ_INFO.has_inverse¶
-
type PJ_GRID_INFO¶
在项目的搜索路径中保存有关特定网格的信息的结构。填充函数
proj_grid_info()
.typedef struct { char gridname[32]; char filename[260]; char format[8]; LP lowerleft; LP upperright; int n_lon, n_lat; double cs_lon, cs_lat; } PJ_GRID_INFO;
-
char PJ_GRID_INFO.gridname[32]¶
网格名称,例如“ BETA2007.gsb “。
-
char PJ_GRID_INFO¶
网格文件的完整路径,例如。 "C:\OSGeo4W64\share\proj\BETA2007.gsb"
-
char PJ_GRID_INFO.format[8]¶
网格文件的文件格式,例如“ ntv2 “
-
LP PJ_GRID_INFO.lowerleft¶
栅格左下角的大地坐标。
-
LP PJ_GRID_INFO.upperright¶
栅格右上角的大地坐标。
-
int PJ_GRID_INFO.n_lon¶
纵向网格单元数。
-
int PJ_GRID_INFO.n_lat¶
纬度方向上的栅格单元数。
-
double PJ_GRID_INFO.cs_lon¶
纵向细胞大小。以弧度为单位。
-
double PJ_GRID_INFO.cs_lat¶
细胞在纬度方向的大小。以弧度为单位。
-
char PJ_GRID_INFO.gridname[32]¶
-
type PJ_INIT_INFO¶
在PROJ的搜索路径中保存有关特定init文件的信息的结构。填充函数
proj_init_info()
.typedef struct { char name[32]; char filename[260]; char version[32]; char origin[32]; char lastupdate[16]; } PJ_INIT_INFO;
-
char PJ_INIT_INFO.name[32]¶
初始化文件的名称,例如“ epsg “。
-
char PJ_INIT_INFO.filename[260]¶
初始化文件的完整路径,例如“ C:\OSGeo4W64\share\proj\epsg “
-
char PJ_INIT_INFO.version[32]¶
Init文件的版本号,例如“ 9.0.0 “
-
char PJ_INIT_INFO.origin[32]¶
初始化文件的原始实体,例如“ EPSG “
-
char PJ_INIT_INFO.lastupdate¶
Init文件的上次更新日期。
-
char PJ_INIT_INFO.name[32]¶
错误代码¶
8.0.0 新版功能.
下面定义了三类错误。一个给定的错误代码属于一个类可以用二进制和测试进行位测试。在某些罕见的情况下,如果错误不适合更精确的错误值,错误类本身可以用作错误值。
这些错误代码对于其中的一些仍然是相当普遍的。有关实际错误的详细信息通常会记录在PJu LOGu ERROR level中。
类项目错误错误无效¶
-
PROJ_ERR_INVALID_OP¶
通常与坐标操作初始化相关的错误代码类,通常是在从项目字符串创建PJ*对象时。
备注
其中一些也可以在坐标转换期间发出,如PROJ_ERR_INVALID_OP_FILE_NOT_FOUND_OR_INVALID,以防资源加载延迟到真正需要时。
-
PROJ_ERR_INVALID_OP_WRONG_SYNTAX¶
管道结构无效,缺少+proj参数等。
-
PROJ_ERR_INVALID_OP_MISSING_ARG¶
缺少必需的操作参数
-
PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE¶
其中一个操作参数的值非法。
-
PROJ_ERR_INVALID_OP_MUTUALLY_EXCLUSIVE_ARGS¶
互斥论点
-
PROJ_ERR_INVALID_OP_FILE_NOT_FOUND_OR_INVALID¶
找不到文件或文件内容无效(项目错误无效操作非法参数值的特殊情况)
类项目错误¶
-
PROJ_ERR_COORD_TRANSFM¶
与特定坐标变换有关的一类错误代码。
-
PROJ_ERR_COORD_TRANSFM_INVALID_COORD¶
输入坐标无效。例如,纬度>90°。
-
PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN¶
坐标在投影域之外。例如近似墨卡托(经度-lon_0>90°)或迭代收敛法失败。
-
PROJ_ERR_COORD_TRANSFM_NO_OPERATION¶
找不到操作,例如,如果没有匹配所需的精度,或者如果要求不使用球形变换,则它们将只是这样的候选。
-
PROJ_ERR_COORD_TRANSFM_OUTSIDE_GRID¶
要变换的点位于栅格/子栅格/三角网之外。
-
PROJ_ERR_COORD_TRANSFM_GRID_AT_NODATA¶
指向转换的点位于计算结果为nodata的网格单元中。
类PROJu ERRu OTHER中的错误¶
-
PROJ_ERR_OTHER¶
不符合上述类别之一的错误代码类别。
-
PROJ_ERR_OTHER_API_MISUSE¶
与误用项目API相关的错误。
-
PROJ_ERR_OTHER_NO_INVERSE_OP¶
没有可用的反向方法
-
PROJ_ERR_OTHER_NETWORK_ERROR¶
访问网络资源时失败。
登录中¶
-
type PJ_LOG_LEVEL¶
项目中日志记录级别的枚举。用于设置项目中的日志记录级别。通常使用
proj_log_level()
.-
enumerator PJ_LOG_NONE¶
不要记录任何东西。
-
enumerator PJ_LOG_ERROR¶
只记录错误。
-
enumerator PJ_LOG_DEBUG¶
记录错误和其他调试信息。
-
enumerator PJ_LOG_TRACE¶
最高日志记录级别。记录一切,包括非常详细的调试信息。
-
enumerator PJ_LOG_TELL¶
在中使用时的特殊日志级别
proj_log_level()
将返回项目中设置的当前日志记录级别。
5.1.0 新版功能.
-
enumerator PJ_LOG_NONE¶
-
type PJ_LOG_FUNC¶
PROJ使用的日志函数的函数原型。定义为
typedef void (*PJ_LOG_FUNCTION)(void *, int, const char *);
当第一个参数(void pointer)引用调用应用程序使用的数据结构时,第二个参数(int type)用于设置日志记录级别,第三个参数(const char pointer)是将由函数记录的字符串。
5.1.0 新版功能.
设置自定义I/O函数¶
7.0.0 新版功能.
警告
doxygenstruct: Cannot find file: /opt/proj/docs/build/xml/index.xml
警告
doxygentypedef: Cannot find file: /opt/proj/docs/build/xml/index.xml
警告
doxygenenum: Cannot find file: /opt/proj/docs/build/xml/index.xml
ISO-19111功能的C API¶
警告
doxygengroup: Cannot find file: /opt/proj/docs/build/xml/index.xml