Network capabilities

New in version 7.0.

PROJ 7.0 has introduced, per PROJ RFC 4: Remote access to grids and GeoTIFF grids, the capability to work with grid files that are not installed on the local machine where PROJ is executed.

This enables to transparently download the parts of grids that are needed to perform a coordinate transformation.

CDN of GeoTIFF grids

Files are accessed by default through a CDN (Content Delivery Network), accessible through https://cdn.proj.org, that contains Geodetic TIFF grids (GTG) datasets which are mirrored and managed by the https://github.com/OSGeo/PROJ-data/ GitHub project. Files in the CDN are designed to be used by PROJ 7 or later, but any software project wishing to use the CDN for shifting support are encouraged to participate in the project and leverage the CDN.

How to enable network capabilities ?

This capability assumes that PROJ has been build against libcurl, and that the user authorizes network access.

Authorizing network access can be done in multiple ways:

  • enabling / uncommenting the network = on line of proj.ini

  • defining the PROJ_NETWORK environment variable to ON

  • or using the proj_context_set_enable_network() with a enabled = TRUE value.

Note

Instead of using the libcurl implementation, an application using the PROJ API can supply its own network implementation through C function callbacks with proj_context_set_network_callbacks(). Enabling network use must still be done with one of the above mentioned method.

Setting endpoint

When this is enabled, and a grid is not found in the various locations where resource files are looked for, PROJ will then attempt at loading the file from a remote server, which defaults to https://cdn.proj.org in proj.ini. This location can be changed with the PROJ_NETWORK_ENDPOINT environment variable or with proj_context_set_url_endpoint().

Caching

To avoid repeated access to network, a local cache of downloaded chunks of grids is implemented as SQLite3 database, cache.db, stored in the PROJ user writable directory.

This local caching is enabled by default (can be changed in proj.ini or with proj_grid_cache_set_enable()). The default maximum size of the cache is 300 MB, which is more than half of the total size of grids available, at time of writing. This size can also be customized in proj.ini or with proj_grid_cache_set_max_size()

Download API

When on-demand loading of grid is not desirable, the PROJ API also offers the capability to download whole grids in the PROJ user writable directory by using the proj_is_download_needed() and proj_download_file() functions.

Download utility

projsync is a tool for downloading resource files.

Mirroring

If you are able, you are encouraged to mirror the grids via AWS S3 command line:

aws s3 sync s3://cdn.proj.org .

If direct S3 access is not possible, you can also use wget to locally mirror the data:

wget --mirror https://cdn.proj.org/

Acknowledgments

The s3://cdn.proj.org bucket is hosted by the Amazon Public Datasets program. CDN services are provided by the AWS Public Dataset team via CloudFront