Proj.4 API 中文参考
ProjAPI
https://github.com/OSGeo/proj.4/wiki/ProjAPI
Tom Kralidis在2015年5月27日编辑此页·修订4
简介
执行pj_init()
选择并初始化一个由它的参数决定参数的制图投影坐标系。argc
是argv
数组中的元素个数,argv
数组每个元素是单个投影的关键字参数(+proj arguments)。该列表中必须包含proj=投影
、地球半径
或椭圆参数
。如果初始化的投影是有效的,返回一个projPJ
结构体的地址,失败返回NULL。
pj_init_plus()
函数的工作方式与pj_init()
类似,但将投影参数定义在单个字符串内,且每个参数带有一个+
前缀。例如:+proj=utm +zone=11 +ellps=WGS84
。
pj_init()
的返回值用作投影正算(forward)或者投影逆算(inverse)中的proj
参数。投影计算中的参数结构体projUV
中的U
代表经度
或者x
,V
代表维度
或者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
定义)。x
、y
、z
数组用于传入计算值,传出计算结果。该函数成功返回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.
安装用于查找init
和grid shift
(网格转换)文件的自定义函数。
void pj_set_searchpath ( int count, const char **path );
Set a list of directories to search for init and grid shift files.
设置一个目录列表去搜索init
和grid 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 中文参考的更多相关文章
- Lodash 常用API中文参考
lodash和underscore都是现在非常流行的两个javascript库,提供了一套函数式编程的实用功能. 而lodash本身最初也是underscore的一个fork,因为和其他(Unders ...
- Highcharts中文参考手册
Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习.个人网站和非商业用途使用.HighCh ...
- PHP-redis api 中文说明(转)
来源 : http://hi.baidu.com/gaolamp/item/1686aac07334bd0f0ad93a9f PHP-redis api 中文说明 phpredis 是 php 的一个 ...
- PHP imagick API中文简介
PHP imagick API中文简介imagick 类imagick ::adaptiveblurimage 向图像中添加 adaptive 模糊滤镜imagick ::adaptiveresize ...
- Semantic UI 中文参考手册
一个拥有友好词汇表的前端框架,完全语义化的前端界面开发框架,为一组开发人员之间共享UI元素配备了规格.使用的词汇(类和ID)相比其它替代品更加简洁,从而降低了学习曲线.有许多HTML元素,UI元素和场 ...
- Yahoo Pure 中文参考手册
Pure 是来自雅虎的 CSS 框架,使用 Normalize.CSS 无需任何 JavaScript 代码.框架基于响应式设计,提供多种样式的组件,包括表格.表单.按钮.表.导航等.标识使用非常简单 ...
- jQuery MiniUI 开发指南+API组件参考手册
jQuery MiniUI 开发指南 本文档将逐步的讲解jQuery MiniUI的方方面面,从此您将踏上jQuery MiniUI的深入探索之旅. 1.Hello M ...
- FFTW中文参考
据说FFTW(Fastest Fourier Transform in the West)是世界上最快的FFT.为了详细了解FFTW以及为编程方便,特将用户手册看了一下,并结合手册制作了以下FFTW中 ...
- Bootstrap中文参考手册
Bootstrap是推出的一个开源的用于前端开发的工具包.它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架.Bootstrap提供了优雅的 ...
随机推荐
- AngularJS 之 Factory vs Service vs Provider【转】
英文原文:AngularJS: Factory vs Service vs Provider 当你初试 Angular 时,很自然地就会往 controller 和 scope 里堆满不必要的逻辑.一 ...
- IE9下css hack写法
ie9一出css hack也该更新,以前一直没关注,今天在内部参考群mxclion分享了IE9的css hack,拿出来也分享一下: select { background-color:red\0; ...
- jquery富文本在线编辑器UEditor
UEditor 是由百度「FEX前端研发团队」开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码. UEditor的功能非常强大,官方 ...
- AsyncTask的初步了解
下面以下载图片并显示为例: 首先我们需要知道的是AsyncTask是对线程池+Handler的进一步封装. 下面看一个简单的代码: public class MainActivity extends ...
- 最简单jquery轮播图效果
样式部分 <style type="text/css"> *{;;} ul,ol{list-style:none;} #box{width:420px;height:6 ...
- angularJs模块ui-router之路由控制
在你的应用中大多数状态都有与其相关联的 url,路由控制不是设计完成 state 之后的事后想法,而是开始开发时就应该考虑的问题. 这里是如何设置一个基本url. $stateProvider .st ...
- 光盘刻录 CD刻录软件 Ashampoo Burning Studio特别版 刻录CD就这么简单
著名的刻录软件Nero,其近上百M体积实在太大,而且安装之后的文件体积也有上G多.这么大的体积安装使用都不方便,好在现在很多都做得很不错,比如阿香婆的光盘刻录软件Ashampoo® Burning S ...
- pod setup 安装的最新办法(大坑啊)
由于升级到10.11以后安装cocodpods难免会碰到各种问题,下面有列举出不同的解决办法,建议一个方法如果不行,把文件请了再用第二种方法, 流程是这样的:正常安装-->碰到问题-->查 ...
- 8.Android 系统状态栏沉浸式/透明化解决方案
转载:http://www.jianshu.com/p/34a8b40b9308 前言 网上已经有很多有关于系统状态栏的解决方案,这篇文章也不会有什么新奇的解决方案,都是本人经过自己试验,统计提炼出来 ...
- 打电话,发短信,发邮件,app跳转
1.打电话 - (IBAction)callPhone1:(id)sender { NSURL *url = [NSURL URLWithString:@"tel://18500441739 ...