PROJ.4学习——初识PROJ
PROJ.4介绍——初始认识
前言
PROJ是一个通用的坐标转换软件,它将地理空间坐标从一个坐标系转换为另一个坐标系。这包括地图投影和大地坐标变换。
PROJ包含命令行应用程序,可以方便地从文本文件或直接从用户输入转换坐标。除了命令行实用程序之外,PROJ还提供了相关的API。API允许开发人员在自己的软件中使用PROJ的功能,而不必自己实现类似的功能。
PROJ最初是一个纯粹制图应用程序,允许用户使用许多不同的制图投影将大地坐标转换为投影坐标。多年来,随着需求的日益增加,对数据转移的支持也逐渐进入PROJ。今天,PROJ支持100多种不同的地图投影,可以用于除最晦涩的大地测量技术之外的所有基准面之间坐标转换。
快速起步
1.坐标系转投影空间
命令关键词:proj
坐标转换由PROJ术语中所称的“proj-strings”来定义。proj-string描述任何转换,不管它有多么简单或复杂。最简单的情况是大地坐标的投影。本节主要介绍一些简单的情况,并介绍proj-string的基本结构。讨论了大地变换中的复杂情况。
proj-strings保存给定坐标转换的参数,例如:
+proj=merc +lat_ts=56.5 +ellps=GRS80 #+proj=merc 表示:将坐标系作为墨卡托投影
#+ellps=GRS80 表示:椭球体GRS80(椭球体名称、坐标系)
#+lat_ts=56.5 有效纬度范围Latitude of true scale
例如,一个proj-string由一个投影说明符 +proj 、一些应用于该投影的参数以及(如果需要的话)对一个基准位移的描述组成。在上面的例子中,大地坐标被转换成投影空间,在GRS80椭球面上,用Mercator投影,其纬度为北纬56.5度。PROJ中的每一个投影都可以用一个简写来标识,比如上面例子中的merc。
利用上述投影定义作为命令行实用程序proj的参数,我们可以将大地坐标转换为投影空间,在cmd中输入:
#利用proj做转换
#输入类型为 +ellps=GRS80
#因为没有定义+lat_0 纬度起点、+lon_0 中央经线,应该默认按照 +ellps=GRS80 的默认中经线 和 默认 维度0 作为参考点
#输出墨卡托投影 proj +proj=merc +lat_ts=56.5 +ellps=GRS80 #在cmd中接着输入参数 55.2 12.2 #得到 55.2 12.2 维度、经度转换为米的数据 3399483.80 752085.60 #这一段命令分为3部分
- 1、 proj 表示:坐标系投影操作
- 2、 +proj=merc 表示:坐标系按照墨卡投影
- 3、 +lat_ts=56.5 +ellps=GRS80 表示:当前坐标系为GRS80大地坐标系,有效维度范围65.5
2.坐标系转换
命令关键词:cs2cs
PROJ还附带了cs2cs实用程序,该实用程序用于从一个坐标参考系统转换到另一个坐标参考系统。假设我们想要将上面的墨卡托坐标转换为UTM,我们可以用cs2cs来实现:
#在cmd中输入:
#+to表示:参数用于将源投影定义和目标投影定义分隔。 cs2cs +proj=merc +lat_ts=56.5 +ellps=GRS80 +to +proj=utm +zone=32 #再输入 3399483.80 752085.60 #得到 6102578.00 1921733.78 0.00 #这段命令分为4部分
- 1、 cs2cs 表示坐标系转坐标系
- 2、 +proj=merc +lat_ts=56.5 +ellps=GRS80 表示:源投影定义,而源投影定义的输入参数为merc(墨卡托)类型参数,即米
- 3、 +to 表示:源投影定义转目标投影定义的分隔符
- 4、 +proj=utm +zone=32 表示:目标投影定义
#或者在cmd中输入:
cs2cs +proj=latlon +lat_ts=56.5 +ellps=GRS80 +to +proj=utm +zone=32
#再输入
55.2 12.2
#得到
6102577.99 1921733.77 0.00
#这段命令分为4部分
- 1、 cs2cs 表示坐标系转坐标系
- 2、 +proj=latlon +lat_ts=56.5 +ellps=GRS80 表示:源投影定义,使用GRS80坐标系,而源投影定义的输入参数为latlon(经纬度)类型参数
- 3、 +to 表示:源投影定义转目标投影定义的分隔符
- 4、 +proj=utm +zone=32 表示:目标投影定义
关于EPSG
EPSG代码是与坐标系定义相关联的数字代码。如:EPSG:4326(EPSG:4326就是WGS84),你可以理解为EPSG文件对坐标系做了相关的归类整理。
详细资料可以看:http://www.epsg.org/
#在cmd中输入
cs2cs +init=epsg:4326 +to +init=epsg:25832
#在输入
56 12
#可以得到
6230195.91 1917547.45 0.00 #如果输入的纬度、经度为
55.2 12.2 #得到
6102577.99 1921733.77 0.00 #和输入:cs2cs +proj=latlon +lat_ts=56.5 +ellps=GRS80 +to +proj=utm +zone=32 得到的效果是一样的
#这段代码分为4部分
- cs2cs 、+to 两部分不再解释
- +init=epsg:4236 表示源投影定义
- 可以查询资料看到,ESPG:4326 表示如下规则
# Hu Tzu Shan 1950
<4236> +proj=longlat +ellps=intl +towgs84=-637,-549,-203,0,0,0,0 +no_defs <>
- +init=espg:25832 表示目标投影定义
- 可以查询资料看到,ESPG:25832 表示如下规则
# ETRS89 / UTM zone 32N
<25832> +proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
PROJ.4学习——初识PROJ的更多相关文章
- PROJ.4学习——坐标系转换
PROJ.4学习——坐标系转换 前言 PROJ可以做任从最简单的投影到许多参考数据非常复杂的转换.PROJ最初是作为地图投影工具开发的,但随着时间的推移,它已经发展成为一个强大的通用坐标转换引擎,可以 ...
- PROJ.4学习——地图投影
PROJ.4学习——地图投影(坐标系投影) 前言 PROJ是由大量的基础投影库构成.这里主要讨论学习PROJ库的相关参数. 这里大部分是讲如何将3D坐标系投影到2D平面上.投影时,涉及到基准线,单位, ...
- MyBatis For .NET学习- 初识MyBatis
MyBatis的框架. Introduction MyBatis本是apache的一个开源项目iBatis,2010年这个项目由 apache software foundation迁移到了googl ...
- AngularJS学习-初识
angularJS定义和特点 1.google前端开源框架 2.MVVM(model view view-model)设计模式 : Model将和ViewModel互动(通过$scope对象),将监听 ...
- 斯坦福CS231n学习--初识
课程主页:CS231n: Convolutional Neural Networks for Visual Recognition 关注其:Course Project主页 视频学习:云课堂 斯坦福C ...
- cesium学习--初识
一.Cesium 官方介绍:CesiumJS是一个开源的JavaScript库,用于世界级的3D地球仪和地图.任务是为静态和时间动态的内容创建领先的3D地球和地图,具有最好的性能.精度.视觉质量.平台 ...
- linux_shell 编程学习-初识she'll
一.she'll编程规范 1.she'll脚本命名一般为英文的大小写; 2.不能用特殊符号.空格来命名; 3.she'll脚本后缀以.sh结尾; 4.不建议she'll命名为纯数字,一般以脚本功能命名 ...
- Java学习 · 初识 多线程
多线程 1. 基础概念 a) 程序 Program i. 静态代码,指令集,应用程序执行的蓝本 b) 进程 Process i. 动态概念,正在运 ...
- Java学习 · 初识 IO流
IO流 1. 原理与概念 a) 流 i. 流动,流向 ii. 从一端移动到另一端 源头到目的地 iii. 抽象.动态概念,是一连 ...
随机推荐
- sql查询语句如何执行
MySQL 可以分为 Server 层和存储引擎层两部分. 查询缓存: Mysql拿到一个查询请求之后,会先查询缓存,之前执行过的语句及结果可能会以Key-Value的形式被存在缓存中,Key是查询语 ...
- js判断终端以及APP应用判断
**第一种:通过判断浏览器的userAgent,用正则来判断是否是ios和Android客户端.代码如下:** <script type="text/javascript"& ...
- Kafka启动报错 : ERROR Processor got uncaught exception
参照我之前的一篇博文Kafka学习之(二)Centos下安装Kafka安装了kafka并启动,状况并不像我之前最初的预期,报错了,并且我在当前Linux环境下安装的Java版本.Kafka版本都是和之 ...
- linux之添加切换用户、系统变量、selinux、防火墙、系统中文乱码的讲解
######linux用户分类1.root 用户 linux皇帝 2.普通用户 贫民百姓 [root@oldboyedu-01 oldboy]# useradd oldboy[root@oldboye ...
- Windows 7远程桌面设置
1. 开启防火墙 可在”计算机管理“中,打开"服务和应用程序"-"服务",找到"Windows Firewall",双击"Wind ...
- Django路由控制
本文目录 一 Django中路由的作用 二 简单的路由配置 三 有名分组 四 路由分发 五 反向解析 六 名称空间 七 django2.0版的path 回到目录 一 Django中路由的作用 URL配 ...
- SQL Server2017还原数据库时指定mdf文件及日志文件的名称
由于需要还原同一个数据库的不同备份到不同数据库中,可是在还原的时候,可是在指定目标数据库时,填写不同的数据库名称,在SQL Server Data文件夹中生成的.mdf文件还是同一个,如图,虽然是很简 ...
- Price Channel Breakout 交易系统简价及源码
Price Channel Breakout 交易系统简价及源码 既然这个版有交易系统的模型报告,小弟先在这裡野人献曝一下,把目前正在用的系统拿来请大家批评指教一下. ================ ...
- BZOJ-1587|前缀和 预处理 dp||叶子合并leaves
叶子合并leaves Description 在一个美丽的秋天,丽丽每天都经过的花园小巷落满了树叶,她决定把树叶堆成K堆,小巷是笔直的 共有N片树叶(树叶排列也是笔直的),每片树叶都有一个重量值,并且 ...
- Unity 2018.2.8 旧版本安装包和破解软件
声明:本文所提供的所有软件均来自于互联网,仅供个人研究和学习使用,请勿用于商业用途,下载后请于24小时内删除,请支持正版! 最近Unity官网下载的旧版本,都无法正常破解.此链接有之前下载的离线安装包 ...