资源文件

一些包含预配置转换和某些投影的默认参数的文件与PROJ发行版捆绑在一起。Init文件包含各种坐标参考系和 defaults 文件包含选定投影参数的默认值。

除了捆绑的init文件外,PROJ项目还分发了许多包,其中包含转换网格和主PROJ包中未包含的其他init文件。

在哪里查找项目资源文件?

PROJ将尝试从多个目录中定位其资源文件-数据库、转换网格或init文件。按顺序检查以下路径:

  • 对于具有显式相对或绝对路径的资源文件,在文件名中指定的目录。

  • proj_context_set_file_finder() . 如果设置了,则不会运行下一个测试。

  • 路径设置为 proj_context_set_search_paths() . 如果设置,则不会运行下一个测试。

  • 7.0 新版功能.

    项目用户可写目录,即:

    • 在Windows上,${LOCALAPPDATA}/proj

    • 在MacOSX上,${HOME}/Library/Application-Support/proj

    • on other platforms (Linux), ${XDG_DATA_HOME}/proj if XDG_DATA_HOME is defined. Else ${HOME}/.local/share/proj

  • 由环境变量设置的路径 PROJ_LIB . 在Linux/MacOSX/Unix上,使用 : 分隔路径。在窗户上, ;

  • 7.0 新版功能.

    这个 ../share/proj/ 如果安装遵循生成结构,则在运行时会自动找到其内容。即二进制文件和proj.dll/libproj安装在 ../bin/../lib/ ,资源文件位于 ../share/proj/ .

  • 作为资源安装目录内置到PROJ中的路径(对于使用Makefile生成系统的生成,其值为$(pkgdatadir);对于CMAKE生成,其值为${CMAKEu INSTALLu PREFIX}/${DATADIR})。但是,请注意,由于这是一个硬连线路径设置,因此只有当整个项目安装没有移动到其他地方时,它才能工作。

  • 当前目录

当网络功能启用时,通过API和 proj_context_set_enable_network() 函数或 PROJ_NETWORK 环境变量设置为 ON ,PROJ将尝试使用存储在CDN(Content Delivery Network)存储上的远程网格。

proj.db

proj安装包括一个转换信息的SQLite数据库,库必须可以访问该数据库才能正常工作。如果找不到数据库,库将打印错误。

proj.ini

7.0 新版功能.

项目ini是一个文本配置文件,主要用于设置网络相关参数。

其默认内容为:

[general]
; Lines starting by ; are commented lines.
;

; Network capabilities disabled by default.
; Can be overridden with the PROJ_NETWORK=ON environment variable.
; network = on

; Can be overridden with the PROJ_NETWORK_ENDPOINT environment variable.
cdn_endpoint = https://cdn.proj.org

cache_enabled = on

cache_size_MB = 300

cache_ttl_sec = 86400

; Transverse Mercator (and UTM) default algorithm: auto, evenden_snyder or poder_engsager
; * evenden_snyder is the fastest, but less accurate far from central meridian
; * poder_engsager is slower, but more accurate far from central meridian
; * default will auto-select between the two above depending on the coordinate
;   to transform and will use evenden_snyder if the error in doing so is below
;   0.1 mm (for an ellipsoid of the size of Earth)
tmerc_default_algo = poder_engsager

变换网格

栅格文件对于在基准之间移动和转换非常重要。

PROJ支持CTable2、NTv1和NTv2文件进行水平网格校正,支持GTX文件格式进行垂直校正。有关格式的详细信息,请参阅 GDAL documentation . GDAL读取和写入所有格式。建议使用GDAL构建新的网格。

外部资源和打包网格

项目数据

这个 proj-data 包是所有资源文件的集合,这些文件可以免费与PROJ一起使用。该软件包在 GitHub 包裹里的东西都放在箱子上 PROJ CDN . 包的内容可以使用 projsync 打包或下载该包的zip存档并在 PROJ_LIB 目录。

项目基准网格

注解

下面描述的软件包可用于PROJ 7和更高版本,但主要用于PROJ 6和更早版本。proj datumgrid系列软件包不再维护,只能用于遗留用途。

对于版本7之前的项目功能构建,安装 proj-datumgrid 是需要的。如果你已经从软件包系统安装了PROJ,那么很有可能这已经为你完成了。这个 proj-datumgrid 包提供了对于PROJ中的许多预定义转换非常重要的转换网格。包装中包括哪些网格可以在屏幕上看到 proj-datumgrid repository 以及那些网格的描述。这是主网格包,也是唯一需要的网格包。它包括各种旧的网格,这些网格主要是由于遗留原因而需要的。如果没有这个包,测试套件将失败得很惨。

区域一揽子计划

除了默认值 proj-datumgrid 还分发了一揽子区域性一揽子计划。其中包括在给定区域内有效的网格和init文件。为了使PROJ所需的磁盘空间保持在最低限度,包被划分为多个地理区域。一些用户可能会使用覆盖多个区域的资源文件,在这种情况下,他们可以下载多个。

目前分发了三个区域资源文件包:

如果有人提供与非洲、南美、亚洲或南极洲相关的电网,我们将创建新的区域性一揽子计划。

单击链接可跳转到每个包的相关自述文件。保存在那里的包裹内容的详细信息。

小技巧

要下载各种datumgrid包,请访问 download section .

世界套餐

这个 world package 包括具有全局范围的栅格,例如全局大地水准面模型EGM08。

-最新软件包

以上所有软件包都有不同的版本,例如proj-datumgrid-1.8或proj-datumgrid-europe-1.4。这个 -latest 包是指向给定包的最新版本的符号链接。这意味着https://download.osgeo.org/proj/proj-datumgrid-north-america-latest.zip相当于https://download.osgeo.org/proj/proj-datumgrid-north-america-1.2.zip(截至本文撰写之时)。

其他变换网格

以下是未包含在上述网格分布中的各国的网格资源列表。

自由网格

以下是根据免费开放许可证分发的网格列表。

匈牙利

Hungarian grid ETRS89-HD72/EOV(epsg:23700),包括水平网格和立面网格

非自由网格

并非所有的gridshift文件都有许可证,允许它们自由分发,但用户可以通过免费合法的方式获得。

奥地利

概述 Austrian grids 以及其他与本地大地测量参考相关的资源。

巴西

Brazilian grids Corrego-Alegre 1961、Corrego-Alegre 1970-72、SAD69和SAD69(96)基准

荷兰

Dutch grid (下载前需要注册)

葡萄牙

Portuguese grids 对于ED50、里斯本1890、里斯本1937和Datum 73

南非

South African grid (开普敦至Hartebeesthoek94或WGS84)

西班牙

Spanish grids 对于ED50。

HTDP

本节介绍 crs2crs2grid.py 脚本和来自NGS/NOAA的HTDP(水平时间相关定位)网格偏移建模程序,以生成项目兼容的网格偏移文件,用于各种NAD83年代和WGS84之间的精细品位转换。传统上,PROJ将NAD83和WGS84视为等价物,未能区分这些基准的不同时代或实现方式。在许多地图的比例尺上,这是足够的,但随着人们对高分辨率图像和其他高分辨率地图兴趣的增长,这是不够的。此外,随着北美地壳随时间漂移,NAD83和WGS84之间的位移增加(过去20年超过1英尺)。

获取和构建HTDP

HTDP建模程序是用FORTRAN语言编写的。源代码和文档可以在HTDP页面上找到http://www.ngs.noaa.gov/TOOLS/Htdp/Htdp.shtml

在linux系统上,必须安装 gfortran 或者一些FORTRAN编译器。对于ubuntu来说,下面这样的东西应该可以工作。

apt-get install gfortran

要编译程序,请执行以下操作,从源代码生成二进制“htdp”。

gfortran htdp.for -o htdp

获取crs2crs2网格.py

这个 crs2crs2grid.py 脚本可在以下位置找到https://github.com/OSGeo/gdal/tree/master/gdal/swig/python/samples/crs2crs2grid.py

脚本取决于GDAL Python绑定是否可操作;如果不能操作,则会出现如下错误:

Traceback (most recent call last):
  File "./crs2crs2grid.py", line 37, in <module>
    from osgeo import gdal, gdal_array, osr
ImportError: No module named osgeo

使用

crs2crs2grid.py
        <src_crs_id> <src_crs_date> <dst_crs_id> <dst_crs_year>
        [-griddef <ul_lon> <ul_lat> <ll_lon> <ll_lat> <lon_count> <lat_count>]
        [-htdp <path_to_exe>] [-wrkdir <dirpath>] [-kwf]
        -o <output_grid_name>

 -griddef: by default the following values for roughly the continental USA
           at a six minute step size are used:
           -127 50 -66 25 251 611
 -kwf: keep working files in the working directory for review.
crs2crs2grid.py 29 2002.0 8 2002.0 -o nad83_2002.ct2

的目标 crs2crs2grid.py 是为指定区域生成网格移位文件。区域是使用 -griddef 开关。当缺少一个美国大陆地区时使用。该脚本为网格定义创建一组采样点,对其运行“htdp”程序,然后解析结果点,并逐点计算移位以编码到最终的网格移位文件。默认情况下,假定 htdp 程序将位于可执行路径中。如果没有,请使用 -htdp 开关。

这个 htdp 该程序支持多个cres之间的转换,并为每个(或大多数?)其中,您需要提供一个固定CRS的日期。HTDP计划中提供的全套CRS ID包括:

 1...NAD_83(2011) (North America tectonic plate fixed)
 29...NAD_83(CORS96)  (NAD_83(2011) will be used)
 30...NAD_83(2007)    (NAD_83(2011) will be used)
 2...NAD_83(PA11) (Pacific tectonic plate fixed)
 31...NAD_83(PACP00)  (NAD 83(PA11) will be used)
 3...NAD_83(MA11) (Mariana tectonic plate fixed)
 32...NAD_83(MARP00)  (NAD_83(MA11) will be used)

 4...WGS_72                             16...ITRF92
 5...WGS_84(transit) = NAD_83(2011)     17...ITRF93
 6...WGS_84(G730) = ITRF92              18...ITRF94 = ITRF96
 7...WGS_84(G873) = ITRF96              19...ITRF96
 8...WGS_84(G1150) = ITRF2000           20...ITRF97
 9...PNEOS_90 = ITRF90                  21...IGS97 = ITRF97
10...NEOS_90 = ITRF90                   22...ITRF2000
11...SIO/MIT_92 = ITRF91                23...IGS00 = ITRF2000
12...ITRF88                             24...IGb00 = ITRF2000
13...ITRF89                             25...ITRF2005
14...ITRF90                             26...IGS05 = ITRF2005
15...ITRF91                             27...ITRF2008
                                        28...IGS08 = ITRF2008

典型的用例是从特定日期的NAD83映射到某个日期的WGS84。在这种情况下,源CRS Id“29”(NADïu 83(CORS96))和目的CRS Id是“8”(WGSïu 84(G1150))。还需要选择源日期和目标日期(epoch)。例如:

crs2crs2grid.py 29 2002.0 8 2002.0 -o nad83_2002.ct2

输出是一个CTable2格式的网格移位文件,适合与PROJ(4.8.0或更新版本)一起使用。它的用途可能是:

cs2cs +proj=latlong +ellps=GRS80 +nadgrids=./nad83_2002.ct2 +to +proj=latlong +datum=WGS84

也见

初始化文件

Init文件用于为经常使用的转换(如EPSG数据库中的转换)预配置proj字符串。大多数init文件包含从给定坐标系到WGS84的转换。这使得在任意两个坐标参考系之间进行转换变得很容易 cs2cs . 但是,Init文件可以包含任何proj字符串,并且不必遵循 CS2CS WGS84用作枢轴基准的范例。itrfinit文件就是一个很好的例子。

许多init文件与PROJ预先捆绑在一起,但也可以添加您自己的自定义init文件。PROJ在列表中列出的目录中查找init文件 PROJ_LIB 环境变量。

init文件的格式是尖括号中的标识符和项目字符串:

<3819> +proj=longlat +ellps=bessel
       +towgs84=595.48,121.69,515.35,4.115,-2.9383,0.853,-3.408 +no_defs <>

上面的示例是 epsg 初始化文件。这是EPSG数据库中ID为3819的坐标参考系。可以通过在注释前面加“#”来插入注释。在4.10.0版本中,init文件中现在接受一个新的特殊元数据条目。它可以用公共API中的函数进行解析。epsg init文件中的元数据条目在编写时如下所示:

<metadata> +version=9.0.0 +origin=EPSG +lastupdate=2017-01-10

init文件中预先配置的项目字符串按以下方式使用:

$ cs2cs -v +proj=latlong +to +init=epsg:3819
# ---- From Coordinate System ----
#Lat/long (Geodetic alias)
#
# +proj=latlong +ellps=WGS84
# ---- To Coordinate System ----
#Lat/long (Geodetic alias)
#
# +init=epsg:3819 +proj=longlat +ellps=bessel
# +towgs84=595.48,121.69,515.35,4.115,-2.9383,0.853,-3.408 +no_defs

使用时可以覆盖参数 +init . 只需将参数添加到proj字符串中 +init 参数。例如,通过覆盖椭球体,如下例所示

+init=epsg:25832 +ellps=intl

使用Hayford椭球代替预定义的GRS80椭球。也可以添加init文件中未指定的其他参数,例如,通过在从ITRF2000转换到ITRF2005时添加观测历元:

+init=ITRF2000:ITRF2005 +t_obs=2010.5

然后扩展到

+proj=helmert +x=-0.0001 +y=0.0008 +z=0.0058 +s=-0.0004
+dx=0.0002 +dy=-0.0001 +dz=0.0018 +ds=-0.000008
+t_epoch=2000.0 +convention=position_vector
+t_obs=2010.5

下面是与PROJ打包的init文件的列表。

名字

描述

GL27级

五大湖网格

ITRF2000型

ITRF2000和其他ITRF之间的全套转换参数

ITRF2008年

ITRF2008和其他ITRF之间的全套转换参数

ITRF2014年

ITRF2014和其他ITRF之间的全套转换参数

nad27型

州平面坐标系,北美基准1927

nad83型

州平面坐标系,北美基准1983