地理坐标系统和投影坐标系统
地理坐标系统(Geographic coordinate system) :
地理坐标系统是使用经纬度来定义球面或椭球面上点的位置的参照系统,是一种球面坐标系统。最常见的位置参考坐标系统就是以经纬度来量算的球面坐标系统。地理坐标系统就是使用一个三维椭球体来模拟地球球体或椭球体。投影坐标系统
在球面坐标上进行测量非常困难,所以地理数据通常都要投影到平面坐标上。投影坐标系统是定义在一个二维平面的坐标系统,与地理坐标系统不同的是,投影坐标系统在二维平面上有着恒定的长度、角度和面积,投影坐标系统总是基于地理坐标系统,而地理坐标系统又是基于球体或椭球体。
投影
简单来说,Map Projection是将球体或椭球体表面的经纬度转换成一个平面的位置的过程,即将球面坐标转化为平面坐标的过程便称为投影。
Mercator投影
是一种正轴(投影面的轴(圆锥圆柱的轴线,平面的法线)与地球椭球体的旋转轴重合)、等角(地面上的任意两条直线的夹角,在经过地球投影绘制到图纸上以后,其夹角保持不变)、圆柱投影。由荷兰地图学家墨卡托(G.Mercator)于1569年创立。假设一个与地轴方向一致的圆柱切或割于地球,按等角条件,将经纬网投影到圆柱面上,将圆柱面展为平面后,即得到本投影。现在主流的网上地图信息服务所采用的投影均是Mercator投影,该投影方法也适用于航空和航海领域。
proj.4
proj.4是OSGeo出品的开源GIS工具,专注于地图的投影表达以及转换,截止到目前官方最新的发布版本是4.9.3。官方介绍:
proj.4 is a standard Unix filter function which converts geographic longitude and latitude coordinates into cartesian coordinates (and vice versa), and it is a C API for software developers to include coordinate transformation in their own software.
由于我用的是Mac Pro,苹果用户如果没有安装Proj可以使用homebrew来安装
brew install proj
proj4官方列出了三个应用,分别是:
- proj
proj工具用来转换地理坐标到投影坐标以及投影坐标到地理坐标,但是有一个前提条件是这两个坐标系统在同一个基准面之下。 - cs2cs
cs2cs工具可以实现两个坐标系统之间的互相转换,这两个坐标系统可以是投影坐标与地理坐标之间的转换,也可以是基准面之间的转换。 - geod
提供对大圆的常用测地计算。
命令行使用proj4
可以使用如下命令来显示在 proj里的内置的有关地图投影的参数
proj -l 显示支持的投影
proj -le 显示支持的椭球体
proj -ld 显示支持的基准面
proj -lu 显示支持的单位
一个典型的命令如下,详细的参数说明请参考这里:
proj +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs
命令行测试如下图:
Xcode工程中使用proj4
目前CocoaPod上proj4最高的版本是4.8.0,当然你也可以集成到iOS项目中去
参考
Map Projection WiKi
WGS84、World Geodetic System
proj.4官方介绍
proj.4通用参数
地图投影List
Proj.4库的编译及使用
GIS坐标转换库Proj.4的使用
PROJ4初探
spatialreference