• 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  <>
  • 相关阅读:
    Mybatis plus 多表连接分页查询
    webstorm自动格式化.vue文件并符合Eslint
    Selenium python爬虫
    Cent OS防火墙配置端口开放
    开发Hexo主题(一)
    谷歌开发者主页回归
    个人博客网站
    linux搭建ftp
    putty之pscp上传文件
    送走了最好的兄弟 收到上交复试通知
  • 原文地址:https://www.cnblogs.com/eshinex/p/10299234.html
Copyright © 2020-2023  润新知