Python与开源GIS:proj命令的使用

Python与开源GIS:proj命令的使用


发布日期: 2015-05-26 更新日期: 2015-05-26 编辑:xuzhiping 浏览次数: 4589

标签:

摘要: 在 PROJ.4 里边集成了许多的制作地图用的投影参数,并且实现了一些命令行程序,来进行地图投影、投影转换,以及其他投影相关的操作。 proj 是主要的命令,我们重点来看一下此命令的用法。 需要注意的是,proj 在进行投影转换时,是使用交互方式运行的。当使用...

PROJ.4 里边集成了许多的制作地图用的投影参数,并且实现了一些命令行程序,来进行地图投影、投影转换,以及其他投影相关的操作。

proj 是主要的命令,我们重点来看一下此命令的用法。 需要注意的是,proj 在进行投影转换时,是使用交互方式运行的。当使用命令行设定的正确的投影空间参考环境后。交互式输入经纬度坐标,会产生在此空间参考下的投影后的空间坐标。

投影转换

我国常用的地图投影主要有,Albers,Lambert,Gauss-Kruger,UTM投影。

中国所使用的 Albers 的参数是双标准纬线,椭球体为Krassovsky。 用 PROJ.4 表示为:

+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 
104d30' 36d30'
-43977.163904491.79
104.5N 36.5E
-43977.163904491.79

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

$ proj +proj=aea +ellps=krass +lon_0=105 +lat_1=25 +lat_2=47 -I
102064.08 2503934.26 
106dE  24dN

经纬度的反转输入与输出

在这里转换的过程中始终是按经度、纬度$(x,y)$的顺序放进的。你也许会想将它们的方向掉转。

如果是输入时想转可在命令中加 -r,如果是输出想掉转,可以是加 -s

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

命令行中的EOF

Proj.4 是一个典型的Unix程序,除了最基本的用法,可以使用Unix的管道工具,来简化(加强)输入与输出。

如,可以进行批量转换:

$ 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

使用文件来进行处理

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

对于文本文件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是输入的文件在下指的是当前目录,Windows下没试过,不过可以用绝对路径。 >是重定向,输出文件。

地图单位

其中 PROJ.4 默认的单位为米(meter), 我们设置参数 +units 来控制输入的坐标单位。

$ proj +proj=aea +ellps=krass +lon_0=105 +lat_1=25 +lat_2=47 +units=km -I < 0 3847.86697 
> -88.52243 3848.31280 
> 102.06408 2503.93426 
> EOF
105dE  36dN 
104dE  36dN 
106dE  24dN

关注公众号
获取免费资源

随机推荐


Copyright © Since 2014. 开源地理空间基金会中文分会 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

问题讨论 : 要订阅或者退订列表,请点击 订阅

发言 : 请写信给: osgeo-china@lists.osgeo.org