proj.4 java_PROJ4初探(转并整理格式)

PROJ4初探(转并整理格式)

Proj4是一个免费的GIS工具,软件还称不上。 它专注于地图投影的表达,以及转换。采用一种非常简单明了的投影表达--PROJ4,比其它的投影定义简单,但很明显。很容易就能看到各种地理坐标系和地 图投影的参数,同时它强大的投影转换功能,也是非常吸引人的。许多的 GIS软件中也将其集成在内。Proj可以在 window的命令下有可运行的 EXE文件,其实它更主要的是一个库!可以用来编一些批处理。在 Linux下除了可以直接运行外,还可以作为库来进行更高功能的开发。

1 安装

Window下安装:

从Proj4的网站下载安装文件,解压缩,把路径加到环境变量里即可。具体操作步骤在解压后的README有详细说明。

Ubuntu Linux下安装: 可以在终端输入:

sudo apt -get install proj

Fedora Linux 下安装: 可以在终端输入:

su -c 'yum install proj'

2 快速开始

在终端或 DOSshell下可以输入(带$的为向终端里输入的命令):

$proj Rel. 4.6.0, 21 Dec 2007 usage: proj [-beEfiIlormsStTvVwW [args]] [+opts[=arg]] [files]

会显示出 proj的用法。包括参数设置,可选项,和输入文件。

2.1 显示参数

对于作地图和 GIS工作者来说投影可谓是一切的基础,投影的正确与否将关第到最终结果正确与否。在 proj里边集成了,许多的制作地图用的投影参数。我们可以使用下边的命令来显示在 proj里的内置的有关地图投影的参数。显示投影类型:

$proj -l aea: Albers Equal Area aeqd: Azimuthal Equidistant ... ... ... wag5: Wagner V wag6: Wagner VI wag7: Wagner VII weren: Werenskiold I wink1: Winkel I wink2: Winkel II wintri: Winkel Tripel

同样的,还有命令:

$proj -le显示支持的椭球体(ellipsoid)信息,显示结果省略。

$proj -ld显示Proj4支持的基准面(Datum)信息,显示结果省略。

这两个概念是有区别的。学过地图学的都知道,地图学上对地球上的抽象,第一次抽象为水准面(等重力面),第二次抽象为椭球体(ellipsoid),第三次 抽象现在我认为是将椭球体进行定位之后,所确定的具有明确的方向的椭球体,它的要求能够很好的为当地区的地图制作服务,这个似乎才可称为基准面 (Datum)。当输入:

$ proj -ld __datum_id__ __ellipse___ __definition/comments______________________________ WGS84 WGS84 towgs84=0,0,0 GGRS87 GRS80 towgs84=-199.87,74.79,246.62 Greek_Geodetic_Reference_System_1987 NAD83 GRS80 towgs84=0,0,0 North_American_Datum_1983 NAD27 clrk66 nadgrids=@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat

上边显示的就是基准面和椭球体的差异。

2.2 投影转换

我 国常用的地图投影主要有:Albers,Lambert,Gauss-Kruger,UTM投影。 等积投影由于没有面积变形,所以在土地调查,植被盖度分类等涉及到要保持面积不能变形的情况.中国的全国性地图许多采用等积投影。国际上称为Albers投影,是一种圆锥等积投影。中国所使用的 Albers的参数是双标准纬线,25N,47N,中央经线为105E,椭球体为Krassovsky。用proj4表示为:

+proj=aea +ellps=krass +lon_0=105 +lat_1=25 +lat_2=47

下边将用中国的 Albers投影,简称为 Albers_China来作个简单的投影转换。

$proj +proj=aea +ellps=krass +lon_0=105 +lat_1=25 +lat_2=47 105 36 0.00 3847866.97 104d36'54 36d25'9 -33897.90 3895309.74 104d25'36.9E 36d52'41N -50158.40 3947261.73

也可以进行批量转:

$ proj +proj=aea +ellps=krass +lon_0=105 +lat_1=25 +lat_2=47 < 105 36 > 104 36 > 106 24 > EOF 0.00 3847866.97 -88522.43 3848312.80 102064.08 2503934.26

同样也可以进行反转,即将 Albers转为经纬度,只要在命令中加入参数-I

$ proj +proj=aea +ellps=krass +lon_0=105 +lat_1=25 +lat_2=47 -I < 0 3847866.97 > -88522.43 3848312.80 > 102064.08 2503934.26 > e 105dE 36dN 104dE 36dN 106dE 24dN

在这里转换的过程中始终是按经度-纬度,x-y的顺序放进的。你也许会想将它们的方向掉转。如果是输入时想转可在命令中加 -r,如果是输出想掉转,可以是加 -s

$ proj +proj=aea +ellps=krass +lon_0=105 +lat_1=25 +lat_2=47 -r -s < 36 105 > 33 104 > e 3847866.97 0.00 3509623.92 -91933.97

同样也可以通过文件来进行批量转换:

lat_lon.test 105dE 36dN 104dE 36dN 106dE 24dN $ proj +proj=aea +ellps=krass +lon_0=105 +lat_1=25 +lat_2=47 ~/lat_lon.test >alberst.test

生成的:alberst.test

0.00 3847866.97 -88522.43 3848312.80 102064.08 2503934.26

你也可以在文件中加注释和对坐标点的说明,在转换后仍可以保留:

lat_lon.test #it's just a test for convert file format 105dE 36dN not Lanzhou 104dE 36dN Lanzhou 106dE 24dN Unknow place

命令:

$ proj +proj=aea +ellps=krass +lon_0=105 +lat_1=25 +lat_2=47 ~/lat_lon.test >albers.test albers.test

#it's just a test for convert file format 0.00 3847866.97 not Lanzhou -88522.43 3848312.80 Lanzhou 102064.08 2503934.26 Unknow place

在命令上边的~/lat_lon.test是输入的文件,~在 linux下指的是当前目录,windows下没试过,不过可以用绝对路径。>是重定向,输出文件。<

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值