1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
|
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Resource files — PROJ 9.0.0 documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="_static/favicon.png"/>
<link rel="canonical" href="https://proj.orgresource_files.html"/>
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/js/theme.js"></script>
<link rel="author" title="About these documents" href="about.html" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Geodesic calculations" href="geodesic.html" />
<link rel="prev" title="Computation of coordinate operations between two CRS" href="operations/operations_computation.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #353130" >
<a href="index.html">
<img src="_static/logo.png" class="logo" alt="Logo"/>
</a>
<div class="version">
9.0.0
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="about.html">About</a></li>
<li class="toctree-l1"><a class="reference internal" href="news.html">News</a></li>
<li class="toctree-l1"><a class="reference internal" href="download.html">Download</a></li>
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="usage/index.html">Using PROJ</a></li>
<li class="toctree-l1"><a class="reference internal" href="apps/index.html">Applications</a></li>
<li class="toctree-l1"><a class="reference internal" href="operations/index.html">Coordinate operations</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Resource files</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#where-are-proj-resource-files-looked-for">Where are PROJ resource files looked for ?</a></li>
<li class="toctree-l2"><a class="reference internal" href="#proj-db"><code class="file docutils literal notranslate"><span class="pre">proj.db</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#proj-ini"><code class="file docutils literal notranslate"><span class="pre">proj.ini</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="#transformation-grids">Transformation grids</a></li>
<li class="toctree-l2"><a class="reference internal" href="#external-resources-and-packaged-grids">External resources and packaged grids</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#proj-data">proj-data</a></li>
<li class="toctree-l3"><a class="reference internal" href="#proj-datumgrid">proj-datumgrid</a></li>
<li class="toctree-l3"><a class="reference internal" href="#regional-packages">Regional packages</a></li>
<li class="toctree-l3"><a class="reference internal" href="#world-package">World package</a></li>
<li class="toctree-l3"><a class="reference internal" href="#latest-packages">-latest packages</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#other-transformation-grids">Other transformation grids</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#free-grids">Free grids</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#hungary">Hungary</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#non-free-grids">Non-Free Grids</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#austria">Austria</a></li>
<li class="toctree-l4"><a class="reference internal" href="#brazil">Brazil</a></li>
<li class="toctree-l4"><a class="reference internal" href="#netherlands">Netherlands</a></li>
<li class="toctree-l4"><a class="reference internal" href="#portugal">Portugal</a></li>
<li class="toctree-l4"><a class="reference internal" href="#south-africa">South Africa</a></li>
<li class="toctree-l4"><a class="reference internal" href="#spain">Spain</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#htdp">HTDP</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#getting-and-building-htdp">Getting and building HTDP</a></li>
<li class="toctree-l4"><a class="reference internal" href="#getting-crs2crs2grid-py">Getting <code class="file docutils literal notranslate"><span class="pre">crs2crs2grid.py</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#usage">Usage</a></li>
<li class="toctree-l4"><a class="reference internal" href="#see-also">See Also</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#init-files">Init files</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="geodesic.html">Geodesic calculations</a></li>
<li class="toctree-l1"><a class="reference internal" href="development/index.html">Development</a></li>
<li class="toctree-l1"><a class="reference internal" href="specifications/index.html">Specifications</a></li>
<li class="toctree-l1"><a class="reference internal" href="community/index.html">Community</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="glossary.html">Glossary</a></li>
<li class="toctree-l1"><a class="reference internal" href="zreferences.html">References</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #353130" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">PROJ</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home"></a> »</li>
<li>Resource files</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/OSGeo/PROJ/edit/8.2/docs/source/resource_files.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul><div class="rst-breadcrumbs-buttons" role="navigation" aria-label="Sequential page navigation">
<a href="operations/operations_computation.html" class="btn btn-neutral float-left" title="Computation of coordinate operations between two CRS" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="geodesic.html" class="btn btn-neutral float-right" title="Geodesic calculations" accesskey="n">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="resource-files">
<span id="id1"></span><h1>Resource files<a class="headerlink" href="#resource-files" title="Permalink to this headline">¶</a></h1>
<p>A number of files containing preconfigured transformations and default parameters
for certain projections are bundled with the PROJ distribution. Init files
contain preconfigured proj-strings for various coordinate reference systems
and the <cite>defaults</cite> file contains default values for parameters of select
projections.</p>
<p>In addition to the bundled init files the PROJ project also distributes a number
of packages containing transformation grids and additional init files not included
in the main PROJ package.</p>
<section id="where-are-proj-resource-files-looked-for">
<span id="resource-file-paths"></span><h2>Where are PROJ resource files looked for ?<a class="headerlink" href="#where-are-proj-resource-files-looked-for" title="Permalink to this headline">¶</a></h2>
<p>PROJ will attempt to locate its resource files - database, transformation grids
or init files - from several directories.
The following paths are checked in order:</p>
<ul class="simple">
<li><p>For resource files that have an explicit relative or absolute path,
the directory specified in the filename.</p></li>
<li><p>Path resolved by the callback function set with
the <a class="reference internal" href="development/reference/functions.html#c.proj_context_set_file_finder" title="proj_context_set_file_finder"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_context_set_file_finder()</span></code></a>. If it is set, the next tests
will not be run.</p></li>
<li><p>Path(s) set with the <a class="reference internal" href="development/reference/functions.html#c.proj_context_set_search_paths" title="proj_context_set_search_paths"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_context_set_search_paths()</span></code></a>. If set, the
next tests will not be run.</p></li>
</ul>
<ul id="user-writable-directory">
<li><div class="versionadded">
<p><span class="versionmodified added">New in version 7.0.</span></p>
</div>
<p>The PROJ user writable directory, which is :</p>
<blockquote>
<div><ul class="simple">
<li><p>on Windows, <code class="docutils literal notranslate"><span class="pre">${LOCALAPPDATA}/proj</span></code></p></li>
<li><p>on macOS, <code class="docutils literal notranslate"><span class="pre">${HOME}/Library/Application</span> <span class="pre">Support/proj</span></code></p></li>
<li><p>on other platforms (Linux), <code class="docutils literal notranslate"><span class="pre">${XDG_DATA_HOME}/proj</span></code> if
<span class="target" id="index-0"></span><code class="xref std std-envvar docutils literal notranslate"><span class="pre">XDG_DATA_HOME</span></code> is defined. Else <code class="docutils literal notranslate"><span class="pre">${HOME}/.local/share/proj</span></code></p></li>
</ul>
</div></blockquote>
</li>
<li><p>Path(s) set with by the environment variable <span class="target" id="index-1"></span><a class="reference internal" href="usage/environmentvars.html#envvar-PROJ_LIB"><code class="xref std std-envvar docutils literal notranslate"><span class="pre">PROJ_LIB</span></code></a>.
On Linux/macOS/Unix, use <code class="docutils literal notranslate"><span class="pre">:</span></code> to separate paths. On Windows, <code class="docutils literal notranslate"><span class="pre">;</span></code></p></li>
<li><div class="versionadded">
<p><span class="versionmodified added">New in version 7.0.</span></p>
</div>
<p>The <code class="file docutils literal notranslate"><span class="pre">../share/proj/</span></code> and its contents are found automatically
at run-time if the installation respects the build structure. That is, the
binaries and <code class="file docutils literal notranslate"><span class="pre">proj.dll</span></code>/<code class="file docutils literal notranslate"><span class="pre">libproj.so</span></code> are installed under
<code class="file docutils literal notranslate"><span class="pre">../bin/</span></code> or <code class="file docutils literal notranslate"><span class="pre">../lib/</span></code>, and resource files are in
<code class="file docutils literal notranslate"><span class="pre">../share/proj/</span></code>.</p>
</li>
<li><p>A path built into PROJ as its resource installation directory (whose value is
<code class="docutils literal notranslate"><span class="pre">$(pkgdatadir)</span></code> for builds using the Makefile build system or
<code class="docutils literal notranslate"><span class="pre">${CMAKE_INSTALL_PREFIX}/${DATADIR}</span></code> for CMake builds). Note, however,
that since this is a hard-wired path setting, it only works if the whole
PROJ installation is not moved somewhere else.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>If PROJ is built with the <code class="docutils literal notranslate"><span class="pre">PROJ_LIB_ENV_VAR_TRIED_LAST</span></code> CMake option
then this hard-wired path will be tried before looking at the environment
variable <span class="target" id="index-2"></span><a class="reference internal" href="usage/environmentvars.html#envvar-PROJ_LIB"><code class="xref std std-envvar docutils literal notranslate"><span class="pre">PROJ_LIB</span></code></a>.</p>
</div>
</li>
<li><p>The current directory</p></li>
</ul>
<p>When networking capabilities are enabled, either by API with the
<a class="reference internal" href="development/reference/functions.html#c.proj_context_set_enable_network" title="proj_context_set_enable_network"><code class="xref c c-func docutils literal notranslate"><span class="pre">proj_context_set_enable_network()</span></code></a> function or when the
<span class="target" id="index-3"></span><a class="reference internal" href="usage/environmentvars.html#envvar-PROJ_NETWORK"><code class="xref std std-envvar docutils literal notranslate"><span class="pre">PROJ_NETWORK</span></code></a> environment variable is set to <code class="docutils literal notranslate"><span class="pre">ON</span></code>, PROJ will
attempt to use remote grids stored on CDN (Content Delivery Network) storage.</p>
</section>
<section id="proj-db">
<span id="id2"></span><h2><code class="file docutils literal notranslate"><span class="pre">proj.db</span></code><a class="headerlink" href="#proj-db" title="Permalink to this headline">¶</a></h2>
<p>A proj installation includes a SQLite database of transformation information
that must be accessible for the library to work properly. The library will
print an error if the database can’t be found.</p>
</section>
<section id="proj-ini">
<span id="id3"></span><h2><code class="file docutils literal notranslate"><span class="pre">proj.ini</span></code><a class="headerlink" href="#proj-ini" title="Permalink to this headline">¶</a></h2>
<div class="versionadded">
<p><span class="versionmodified added">New in version 7.0.</span></p>
</div>
<p><code class="file docutils literal notranslate"><span class="pre">proj.ini</span></code> is a text configuration file, mostly dedicated at setting up
network related parameters.</p>
<p>Its default content is:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[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
; Filename of the Certificate Authority (CA) bundle.
; Can be overriden with the PROJ_CURL_CA_BUNDLE / CURL_CA_BUNDLE environment variable.
; (added in PROJ 9.0)
; ca_bundle_path = /path/to/cabundle.pem
; 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
</pre></div>
</div>
</section>
<section id="transformation-grids">
<h2>Transformation grids<a class="headerlink" href="#transformation-grids" title="Permalink to this headline">¶</a></h2>
<p>Grid files are important for shifting and transforming between datums.</p>
<p>PROJ supports CTable2, NTv1 and NTv2 files for horizontal grid corrections and
the GTX file format for vertical corrections. Details about the formats can be
found in the <a class="reference external" href="http://gdal.org/">GDAL documentation</a>. GDAL reads and writes
all formats. Using GDAL for construction of new grids is recommended.</p>
</section>
<section id="external-resources-and-packaged-grids">
<span id="datumgrid"></span><h2>External resources and packaged grids<a class="headerlink" href="#external-resources-and-packaged-grids" title="Permalink to this headline">¶</a></h2>
<section id="proj-data">
<h3>proj-data<a class="headerlink" href="#proj-data" title="Permalink to this headline">¶</a></h3>
<p>The <code class="docutils literal notranslate"><span class="pre">proj-data</span></code> package is a collection of all the resource files that are
freely available for use with PROJ. The package is maintained on
<a class="reference external" href="https://github.com/OSGeo/PROJ-data">GitHub</a> and the contents of the package
are show-cased on the <a class="reference external" href="https://cdn.proj.org/">PROJ CDN</a>. The contents of the
package can be installed using the <strong class="program">projsync</strong> package or by downloading
the zip archive of the package and unpacking in the <span class="target" id="index-4"></span><a class="reference internal" href="usage/environmentvars.html#envvar-PROJ_LIB"><code class="xref std std-envvar docutils literal notranslate"><span class="pre">PROJ_LIB</span></code></a> directory.</p>
</section>
<section id="proj-datumgrid">
<h3>proj-datumgrid<a class="headerlink" href="#proj-datumgrid" title="Permalink to this headline">¶</a></h3>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The packages described below can be used with PROJ 7 and later but are
primarily meant to be used with PROJ 6 and earlier versions.
The <code class="docutils literal notranslate"><span class="pre">proj-datumgrid</span></code> series of packages are not maintained anymore and
are only kept available for legacy purposes.</p>
</div>
<p>For a functioning build of PROJ prior to version 7, installation of the
<a class="reference external" href="https://github.com/OSGeo/proj-datumgrid">proj-datumgrid</a> is needed. If you
have installed PROJ from a package system chances are that this will already be
done for you. The <em>proj-datumgrid</em> package provides transformation grids that
are essential for many of the predefined transformations in PROJ. Which grids
are included in the package can be seen on the
<a class="reference external" href="https://github.com/OSGeo/proj-datumgrid">proj-datumgrid repository</a> as well
as descriptions of those grids. This is the main grid package and the only one
that is required. It includes various older grids that is mostly needed for
legacy reasons. Without this package, the test suite fails miserably.</p>
</section>
<section id="regional-packages">
<h3>Regional packages<a class="headerlink" href="#regional-packages" title="Permalink to this headline">¶</a></h3>
<p>In addition to the default <code class="docutils literal notranslate"><span class="pre">proj-datumgrid</span></code> package regional packages are also
distributed. These include grids and init files that are valid within the given
region. The packages are divided into geographical regions in order to keep the
needed disk space by PROJ at a minimum. Some users may have a use for resource
files covering several regions in which case they can download more than one.</p>
<p>At the moment three regional resource file packages are distributed:</p>
<ul class="simple">
<li><p><a class="reference external" href="https://github.com/OSGeo/proj-datumgrid/tree/master/europe#proj-datumgrid-europe">Europe</a></p></li>
<li><p><a class="reference external" href="https://github.com/OSGeo/proj-datumgrid/tree/master/oceania#proj-datumgrid-oceania">Oceania</a></p></li>
<li><p><a class="reference external" href="https://github.com/OSGeo/proj-datumgrid/tree/master/north-america#proj-datumgrid-north-america">North America</a></p></li>
</ul>
<p>If someone supplies grids relevant for Africa, South-America, Asia or Antarctica
we will create new regional packages.</p>
<p>Click the links to jump to the relevant README files for each package. Details
on the content of the packages maintained there.</p>
<div class="admonition tip">
<p class="admonition-title">Tip</p>
<p>To download the various datumgrid packages head to the <a class="reference internal" href="download.html#download"><span class="std std-ref">download section</span></a>.</p>
</div>
</section>
<section id="world-package">
<h3>World package<a class="headerlink" href="#world-package" title="Permalink to this headline">¶</a></h3>
<p>The <a class="reference external" href="https://github.com/OSGeo/proj-datumgrid/tree/master/world#proj-datumgrid-world">world package</a>
includes grids that have global extent, e.g. the global geoid model EGM08.</p>
</section>
<section id="latest-packages">
<h3>-latest packages<a class="headerlink" href="#latest-packages" title="Permalink to this headline">¶</a></h3>
<p>All packages above come in different versions, e.g., <code class="docutils literal notranslate"><span class="pre">proj-datumgrid-1.8</span></code> or
<code class="docutils literal notranslate"><span class="pre">proj-datumgrid-europe-1.4</span></code>. The <code class="docutils literal notranslate"><span class="pre">-latest</span></code> packages are symbolic links to the
latest version of a given package. That means that the link
<a class="reference external" href="https://download.osgeo.org/proj/proj-datumgrid-north-america-latest.zip">https://download.osgeo.org/proj/proj-datumgrid-north-america-latest.zip</a> is
equivalent to <a class="reference external" href="https://download.osgeo.org/proj/proj-datumgrid-north-america-1.2.zip">https://download.osgeo.org/proj/proj-datumgrid-north-america-1.2.zip</a>
(as of the time of writing this).</p>
</section>
</section>
<section id="other-transformation-grids">
<span id="id6"></span><h2>Other transformation grids<a class="headerlink" href="#other-transformation-grids" title="Permalink to this headline">¶</a></h2>
<p>Below is a list of grid resources for various countries which are not
included in the grid distributions mentioned above.</p>
<section id="free-grids">
<h3>Free grids<a class="headerlink" href="#free-grids" title="Permalink to this headline">¶</a></h3>
<p>The following is a list of grids distributed under a free and open license.</p>
<section id="hungary">
<h4>Hungary<a class="headerlink" href="#hungary" title="Permalink to this headline">¶</a></h4>
<p><a class="reference external" href="https://github.com/OSGeoLabBp/eov2etrs/">Hungarian grid</a> ETRS89 - HD72/EOV (epsg:23700), both horizontal and elevation grids</p>
</section>
</section>
<section id="non-free-grids">
<span id="nonfreegrids"></span><h3>Non-Free Grids<a class="headerlink" href="#non-free-grids" title="Permalink to this headline">¶</a></h3>
<p>Not all grid shift files have licensing that allows them to be freely
distributed, but can be obtained by users through free and legal methods.</p>
<section id="austria">
<h4>Austria<a class="headerlink" href="#austria" title="Permalink to this headline">¶</a></h4>
<p>Overview of <a class="reference external" href="http://www.bev.gv.at/portal/page?_pageid=713,1569828&_dad=portal&_schema=PORTAL">Austrian grids</a> and other resources
related to the local geodetic reference.</p>
</section>
<section id="brazil">
<h4>Brazil<a class="headerlink" href="#brazil" title="Permalink to this headline">¶</a></h4>
<p><a class="reference external" href="http://www.ibge.gov.br/home/geociencias/geodesia/param_transf/default_param_transf.shtm">Brazilian grids</a> for datums Corrego Alegre 1961, Corrego Alegre 1970-72, SAD69 and SAD69(96)</p>
</section>
<section id="netherlands">
<h4>Netherlands<a class="headerlink" href="#netherlands" title="Permalink to this headline">¶</a></h4>
<p><a class="reference external" href="https://www.nsgi.nl/geodetische-infrastructuur/coordinatentransformatie">Dutch grid</a> (Registration required before download)</p>
</section>
<section id="portugal">
<h4>Portugal<a class="headerlink" href="#portugal" title="Permalink to this headline">¶</a></h4>
<p><a class="reference external" href="http://www.fc.up.pt/pessoas/jagoncal/coordenadas/index.htm">Portuguese grids</a> for ED50, Lisbon 1890, Lisbon 1937 and Datum 73</p>
</section>
<section id="south-africa">
<h4>South Africa<a class="headerlink" href="#south-africa" title="Permalink to this headline">¶</a></h4>
<p><a class="reference external" href="http://eepublishers.co.za/article/datum-transformations-using-the-ntv2-grid.html">South African grid</a> (Cape to Hartebeesthoek94 or WGS84)</p>
</section>
<section id="spain">
<h4>Spain<a class="headerlink" href="#spain" title="Permalink to this headline">¶</a></h4>
<p><a class="reference external" href="http://www.ign.es/ign/layoutIn/herramientas.do#DATUM">Spanish grids</a> for ED50.</p>
</section>
</section>
<section id="htdp">
<h3>HTDP<a class="headerlink" href="#htdp" title="Permalink to this headline">¶</a></h3>
<p>This section describes the use of the <code class="file docutils literal notranslate"><span class="pre">crs2crs2grid.py</span></code> script and the HTDP
(Horizontal Time Dependent Positioning) grid shift modelling program from
NGS/NOAA to produce PROJ compatible grid shift files for fine grade
conversions between various NAD83 epochs and WGS84. Traditionally PROJ has
treated NAD83 and WGS84 as equivalent and failed to distinguish between
different epochs or realizations of those datums. At the scales of much
mapping this is adequate but as interest grows in high resolution imagery and
other high resolution mapping this is inadequate. Also, as the North American
crust drifts over time the displacement between NAD83 and WGS84 grows (more
than one foot over the last two decades).</p>
<section id="getting-and-building-htdp">
<h4>Getting and building HTDP<a class="headerlink" href="#getting-and-building-htdp" title="Permalink to this headline">¶</a></h4>
<p>The HTDP modelling program is written in FORTRAN. The source and documentation
can be found on the HTDP page at <a class="reference external" href="http://www.ngs.noaa.gov/TOOLS/Htdp/Htdp.shtml">http://www.ngs.noaa.gov/TOOLS/Htdp/Htdp.shtml</a></p>
<p>On Linux systems it will be necessary to install GFortran or some Fortran
compiler. For Ubuntu something like the following should work.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>apt-get install gfortran
</pre></div>
</div>
<p>To compile the program do something like the following to produce the binary
<strong class="program">htdp</strong> from the source code.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>gfortran htdp.for -o htdp
</pre></div>
</div>
</section>
<section id="getting-crs2crs2grid-py">
<h4>Getting <code class="file docutils literal notranslate"><span class="pre">crs2crs2grid.py</span></code><a class="headerlink" href="#getting-crs2crs2grid-py" title="Permalink to this headline">¶</a></h4>
<p>The <code class="file docutils literal notranslate"><span class="pre">crs2crs2grid.py</span></code> script can be found at
<a class="reference external" href="https://github.com/OSGeo/gdal/blob/master/swig/python/gdal-utils/osgeo_utils/samples/crs2crs2grid.py">https://github.com/OSGeo/gdal/blob/master/swig/python/gdal-utils/osgeo_utils/samples/crs2crs2grid.py</a></p>
<p>The script depends on having the GDAL Python bindings operational; if they are not you
will get an error such as:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>Traceback (most recent call last):
File "./crs2crs2grid.py", line 37, in <module>
from osgeo import gdal, gdal_array, osr
ImportError: No module named osgeo
</pre></div>
</div>
</section>
<section id="usage">
<h4>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h4>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>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.
</pre></div>
</div>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>crs2crs2grid.py 29 2002.0 8 2002.0 -o nad83_2002.ct2
</pre></div>
</div>
<p>The goal of <code class="file docutils literal notranslate"><span class="pre">crs2crs2grid.py</span></code> is to produce a grid shift file for a designated
region. The region is defined using the <code class="docutils literal notranslate"><span class="pre">-griddef</span></code> switch. When missing a
continental US region is used. The script creates a set of sample points for
the grid definition, runs <strong class="program">htdp</strong> against it and then parses the
resulting points and computes a point by point shift to encode into the final
grid shift file. By default it is assumed that <strong class="program">htdp</strong> is in the
executable path. If not, please provide the path to the executable using the
<code class="docutils literal notranslate"><span class="pre">-htdp</span></code> switch.</p>
<p>The <strong class="program">htdp</strong> program supports transformations between many CRSes and for each (or
most?) of them you need to provide a date at which the CRS is fixed. The full
set of CRS Ids available in the HTDP program are:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span> 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
</pre></div>
</div>
<p>The typical use case is mapping from NAD83 on a particular date to WGS84 on
some date. In this case the source CRS Id “29” (NAD_83(CORS96)) and the
destination CRS Id is “8 (WGS_84(G1150)). It is also necessary to select the
source and destination date (epoch). For example:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>crs2crs2grid.py 29 2002.0 8 2002.0 -o nad83_2002.ct2
</pre></div>
</div>
<p>The output is a CTable2 format grid shift file suitable for use with PROJ
(4.8.0 or newer). It might be utilized something like:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cs2cs +proj=latlong +ellps=GRS80 +nadgrids=./nad83_2002.ct2 +to +proj=latlong +datum=WGS84
</pre></div>
</div>
</section>
<section id="see-also">
<h4>See Also<a class="headerlink" href="#see-also" title="Permalink to this headline">¶</a></h4>
<ul class="simple">
<li><p><a class="reference external" href="http://www.ngs.noaa.gov/TOOLS/Htdp/Htdp.shtml">http://www.ngs.noaa.gov/TOOLS/Htdp/Htdp.shtml</a> - NGS/NOAA page about the HTDP
model and program. Source for the HTDP program can be downloaded from here.</p></li>
</ul>
</section>
</section>
</section>
<section id="init-files">
<span id="id7"></span><h2>Init files<a class="headerlink" href="#init-files" title="Permalink to this headline">¶</a></h2>
<p>Init files are used for preconfiguring proj-strings for often used
transformations, such as those found in the EPSG database. Most init files contain
transformations from a given coordinate reference system to WGS84. This makes
it easy to transform between any two coordinate reference systems with
<strong class="program">cs2cs</strong>. Init files can however contain any proj-string and don’t necessarily
have to follow the <em>cs2cs</em> paradigm where WGS84 is used as a pivot datum. The
ITRF init file is a good example of that.</p>
<p>A number of init files come pre-bundled with PROJ but it is also possible to
add your own custom init files. PROJ looks for the init files in the directory
listed in the <span class="target" id="index-5"></span><a class="reference internal" href="usage/environmentvars.html#envvar-PROJ_LIB"><code class="xref std std-envvar docutils literal notranslate"><span class="pre">PROJ_LIB</span></code></a> environment variable.</p>
<p>The format of init files is an identifier in angled brackets and a
proj-string:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span><3819> +proj=longlat +ellps=bessel
+towgs84=595.48,121.69,515.35,4.115,-2.9383,0.853,-3.408 +no_defs <>
</pre></div>
</div>
<p>The above example is the first entry from the <code class="docutils literal notranslate"><span class="pre">epsg</span></code> init file. So, this is the
coordinate reference system with ID 3819 in the EPSG database. Comments can be
inserted by prefixing them with a “#”. With version 4.10.0 a new special metadata
entry is now accepted in init files. It can be parsed with a function from the public
API. The metadata entry in the epsg init file looks like this at the time of writing:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span><metadata> +version=9.0.0 +origin=EPSG +lastupdate=2017-01-10
</pre></div>
</div>
<p>Pre-configured proj-strings from init files are used in the following way:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>$ 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
</pre></div>
</div>
<p>It is possible to override parameters when using <code class="docutils literal notranslate"><span class="pre">+init</span></code>. Just add the parameter
to the proj-string alongside the <code class="docutils literal notranslate"><span class="pre">+init</span></code> parameter. For instance by overriding
the ellipsoid as in the following example</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>+init=epsg:25832 +ellps=intl
</pre></div>
</div>
<p>where the Hayford ellipsoid is used instead of the predefined GRS80 ellipsoid.</p>
<p>It is also possible to add additional parameters not specified in the init file,
for instance by adding a central epoch when applying the ITRF2014:NOAM plate
motion model:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>+init=ITRF2014:NOAM +t_epoch=2010.0
</pre></div>
</div>
<p>which then expands to</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>+proj=helmert +drx=0.000024 +dry=-0.000694 +drz=-0.000063 +convention=position_vector +t_epoch=2010.0
</pre></div>
</div>
<p>Below is a list of the init files that are packaged with PROJ.</p>
<blockquote>
<div><table class="docutils align-default">
<colgroup>
<col style="width: 11%" />
<col style="width: 89%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Name</p></th>
<th class="head"><p>Description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>GL27</p></td>
<td><p>Great Lakes Grids</p></td>
</tr>
<tr class="row-odd"><td><p>ITRF2000</p></td>
<td><p>Full set of transformation parameters between ITRF2000 and other
ITRF’s</p></td>
</tr>
<tr class="row-even"><td><p>ITRF2008</p></td>
<td><p>Full set of transformation parameters between ITRF2008 and other
ITRF’s</p></td>
</tr>
<tr class="row-odd"><td><p>ITRF2014</p></td>
<td><p>Full set of transformation parameters between ITRF2014 and other
ITRF’s</p></td>
</tr>
<tr class="row-even"><td><p>nad27</p></td>
<td><p>State plane coordinate systems, North American Datum 1927</p></td>
</tr>
<tr class="row-odd"><td><p>nad83</p></td>
<td><p>State plane coordinate systems, North American Datum 1983</p></td>
</tr>
</tbody>
</table>
</div></blockquote>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="operations/operations_computation.html" class="btn btn-neutral float-left" title="Computation of coordinate operations between two CRS" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="geodesic.html" class="btn btn-neutral float-right" title="Geodesic calculations" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>© Copyright 1983-2022.
<span class="lastupdated">Last updated on 22 Mar 2022.
</span></p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
|