ProjAPI

https://github.com/OSGeo/proj.4/wiki/ProjAPI

Tom Kralidis在2015年5月27日编辑此页·修订4

简介

执行pj_init()选择并初始化一个由它的参数决定参数的制图投影坐标系。argcargv数组中的元素个数,argv数组每个元素是单个投影的关键字参数(+proj arguments)。该列表中必须包含proj=投影地球半径椭圆参数。如果初始化的投影是有效的,返回一个projPJ结构体的地址,失败返回NULL。

pj_init_plus()函数的工作方式与pj_init()类似,但将投影参数定义在单个字符串内,且每个参数带有一个+前缀。例如:+proj=utm +zone=11 +ellps=WGS84

pj_init()的返回值用作投影正算(forward)或者投影逆算(inverse)中的proj参数。投影计算中的参数结构体projUV中的U代表经度或者xV代表维度或者y,经度和维度都是以弧度单位的。如果操作失败,projUV中的两个值都设置为HUGE_VAL(在math.h中定义http://blog.csdn.net/poechant/article/details/7235594)。

注意:所有投影都有正算(forward)模式,但却不是都有逆算(inverse)模式。如果投影没有逆算模式,那么projPJ中成员inv将设置为NULL

pj_transform函数用于转换两个坐标系统之间的点。除了投影坐标与地理坐标之间的转换,也可以进行基准面(datum)之间的转换。不同于pj_fwd()pj_inv(),这里也允许坐标系定义参数projPJ*是地理坐标(使用+proj=latlong定义)。xyz数组用于传入计算值,传出计算结果。该函数成功返回0,失败返回错误号(查看inpj_errno)。

projection(projPJ)关联的内存,可能需要使用pj_free()释放。

示例

The following program reads latitude and longitude values in decimal degress, performs Mercator projection with a Clarke 1866 ellipsoid and a 33° latitude of true scale and prints the projected cartesian values in meters:

下面程序读取十进制的经度和维度值,进行克拉克1866椭球正确范围33°维度的墨卡托投影计算,并打印米单位的笛卡尔坐标值。

北美大地基准维基百科

示例

The following program reads latitude and longitude values in decimal degress, performs Mercator projection with a Clarke 1866 ellipsoid and a 33° latitude of true scale and prints the projected cartesian values in meters:

下面程序读取十进制的经度和维度值,进行克拉克1866椭球正确范围33°维度的墨卡托投影计算,并打印米单位的笛卡尔坐标值。

#include <proj_api.h>

main(int argc, char **argv) {
projPJ pj_merc, pj_latlong;
double x, y; if (!(pj_merc = pj_init_plus("+proj=merc +ellps=clrk66 +lat_ts=33")) )
exit(1);
if (!(pj_latlong = pj_init_plus("+proj=latlong +ellps=clrk66")) )
exit(1);
while (scanf("%lf %lf", &x, &y) == 2) {
x *= DEG_TO_RAD;
y *= DEG_TO_RAD;
p = pj_transform(pj_latlong, pj_merc, 1, 1, &x, &y, NULL );
printf("%.2f\t%.2f\n", x, y);
}
exit(0);
}

在此程序中,输入-16 20.25将得到结果-1495284.21 1920596.79.

API函数

基本API

int pj_transform( projPJ srcdefn, projPJ dstdefn, long point_count, int point_offset, double *x, double *y, double *z );

转换点x/y/z,从源坐标系统到目标坐标系统(更多信息).

projPJ pj_init_plus(const char *definition);

从字符串definition创建一个projPJ坐标系统对象(更多信息).

void pj_free( projPJ pj );

释放与pj关联的所有资源.

高级函数

int pj_is_latlong( projPJ pj );

返回TRUE表示是地理坐标系统(proj=latlong).

int pj_is_geocent( projPJ pj );

返回TRUE表示是地心坐标系统(proj=geocent).

char *pj_get_def( projPJ pj, int options);

返回PROJ.4初始化字符串,用于pj_init_plus()可产生此坐标系统。但会尽可能多的扩大定义(例如添加:+init= 和 +datum= definitions).

projPJ pj_latlong_from_proj( projPJ pj_in );

返回一个新的坐标系定义。就是pj_in内部的地理坐标(lat/long)系统.

环境函数

void pj_set_finder( const char *(*new_finder)(const char *) );

Install a custom function for finding init and grid shift files.

安装用于查找initgrid shift(网格转换)文件的自定义函数。

void pj_set_searchpath ( int count, const char **path );

Set a list of directories to search for init and grid shift files.

设置一个目录列表去搜索initgrid shift文件。

void pj_deallocate_grids( void );

Frees all resources associated with loaded and cached datum shift grids.

释放加载和缓存的基准转换网格关联的所有资源。

char *pj_strerrno( int );

Returns the error text associated with the passed in error code.

返回错误代码关联的错误文本。

int *pj_get_errno_ref( void );

Returns a pointer to the global pj_errno error variable.

返回全局的pj_errno错误变量地址。

const char *pj_get_release( void );

Returns an internal string describing the release version.

返回描述发行版本的内部字符串。

废弃(过时)函数

XY pj_fwd( LP lp, PJ *P );
LP pj_inv( XY xy, PJ *P );
projPJ pj_init(int argc, char **argv);

Proj.4 API 中文参考的更多相关文章

  1. Lodash 常用API中文参考

    lodash和underscore都是现在非常流行的两个javascript库,提供了一套函数式编程的实用功能. 而lodash本身最初也是underscore的一个fork,因为和其他(Unders ...

  2. Highcharts中文参考手册

    Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习.个人网站和非商业用途使用.HighCh ...

  3. PHP-redis api 中文说明(转)

    来源 : http://hi.baidu.com/gaolamp/item/1686aac07334bd0f0ad93a9f PHP-redis api 中文说明 phpredis 是 php 的一个 ...

  4. PHP imagick API中文简介

    PHP imagick API中文简介imagick 类imagick ::adaptiveblurimage 向图像中添加 adaptive 模糊滤镜imagick ::adaptiveresize ...

  5. Semantic UI 中文参考手册

    一个拥有友好词汇表的前端框架,完全语义化的前端界面开发框架,为一组开发人员之间共享UI元素配备了规格.使用的词汇(类和ID)相比其它替代品更加简洁,从而降低了学习曲线.有许多HTML元素,UI元素和场 ...

  6. Yahoo Pure 中文参考手册

    Pure 是来自雅虎的 CSS 框架,使用 Normalize.CSS 无需任何 JavaScript 代码.框架基于响应式设计,提供多种样式的组件,包括表格.表单.按钮.表.导航等.标识使用非常简单 ...

  7. jQuery MiniUI 开发指南+API组件参考手册

    jQuery MiniUI 开发指南 本文档将逐步的讲解jQuery MiniUI的方方面面,从此您将踏上jQuery MiniUI的深入探索之旅.                 1.Hello M ...

  8. FFTW中文参考

    据说FFTW(Fastest Fourier Transform in the West)是世界上最快的FFT.为了详细了解FFTW以及为编程方便,特将用户手册看了一下,并结合手册制作了以下FFTW中 ...

  9. Bootstrap中文参考手册

    Bootstrap是推出的一个开源的用于前端开发的工具包.它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架.Bootstrap提供了优雅的 ...

随机推荐

  1. xcode6 beta 中智能提示(自动完成)功能有时不显示的问题

    xcode6 beta 中智能提示(自动完成)功能有时不显示的问题      周银辉 xcode6 beta 中智能提示(自动完成)功能有时不显示,这让人很郁闷啊,网上老外的视频中看人家用的好好的. ...

  2. 使用工具安装,运行,停止,卸载Window服务

    WSWinForm.exe介绍 WSWinForm.exe是我自己开发的一个实用的小工具,用于将任何EXE程序作为Windows服务运行.也就是说WSWinForm只是其注册程序的服务外壳,这个特性对 ...

  3. 软件工程(FZU2015)赛季得分榜,第二回合

    目录 第一回合 第二回合 第三回合 第四回合 第五回合 第6回合 第7回合 第8回合 第9回合 第10回合 第11回合 积分规则 积分制: 作业为10分制,练习为3分制:alpha30分: 团队项目分 ...

  4. 扩展htmlhelper.DropDownListFor 支持list数据源和option增加属性

    mvc自带的DropDownListFor数据源必须是IEnumerable<SelectListItem>.并且option不支持增加自定义属性.在使用bootstrap-select组 ...

  5. 分享我的开源项目-springmore

    之前有在博客园分享过springmore,不知道是什么原因,被管理员移除首页 在此郑重声明,这是我个人的开源项目,东西不多,也不存在打广告,也没有什么利益可图 完全是出于分享的目的,望博客园管理员予以 ...

  6. Html页面禁止鼠标左键复制

    <body leftmargin=0 topmargin=0 oncontextmenu='return false' ondragstart='return false' onselectst ...

  7. Alpha阶段发布说明

    Alpha版本功能介绍 机器法官功能已实现 这是我们统计了当下所有存在的狼人APP的共同缺点.也是用户最主要的痛点.现在所有已知存在的类似APP都不能提供法官功能,我们的APP将该功能革命性的自动实现 ...

  8. IBatisNet使用教程

     1.是数据持久层,对应.NET方向的有Ibatis.NET,只要用来处理数据库表结构和程序实体之间映射,ado.net是用来处理和数据库直接通信的,取出数据(object,int,string,da ...

  9. Java多线程干货系列—(一)Java多线程基础

    前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 正文 线程与进程 1 线程:进程中负责程序执行的 ...

  10. centos 软件包安装与管理

    http://rpmfind.net/linux/RPM/index.html http://pkgs.org/ https://sourceforge.net/