@crossbind/port-proj-wasm 2.0.0-beta.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/LICENSE +34 -0
  2. package/README.md +12 -0
  3. package/crossbind.build.js +1 -0
  4. package/crossbind.config.js +8 -0
  5. package/dist/prebuilt/CMakeLists.txt +57 -0
  6. package/dist/prebuilt/wasm-wasm32-mt-release/crossbind-emccflags.fingerprint +1 -0
  7. package/dist/prebuilt/wasm-wasm32-mt-release/include/geodesic.h +837 -0
  8. package/dist/prebuilt/wasm-wasm32-mt-release/include/proj/common.hpp +489 -0
  9. package/dist/prebuilt/wasm-wasm32-mt-release/include/proj/coordinateoperation.hpp +2163 -0
  10. package/dist/prebuilt/wasm-wasm32-mt-release/include/proj/coordinates.hpp +115 -0
  11. package/dist/prebuilt/wasm-wasm32-mt-release/include/proj/coordinatesystem.hpp +892 -0
  12. package/dist/prebuilt/wasm-wasm32-mt-release/include/proj/crs.hpp +1597 -0
  13. package/dist/prebuilt/wasm-wasm32-mt-release/include/proj/datum.hpp +863 -0
  14. package/dist/prebuilt/wasm-wasm32-mt-release/include/proj/io.hpp +1420 -0
  15. package/dist/prebuilt/wasm-wasm32-mt-release/include/proj/metadata.hpp +474 -0
  16. package/dist/prebuilt/wasm-wasm32-mt-release/include/proj/nn.hpp +385 -0
  17. package/dist/prebuilt/wasm-wasm32-mt-release/include/proj/util.hpp +781 -0
  18. package/dist/prebuilt/wasm-wasm32-mt-release/include/proj.h +2299 -0
  19. package/dist/prebuilt/wasm-wasm32-mt-release/include/proj_constants.h +987 -0
  20. package/dist/prebuilt/wasm-wasm32-mt-release/include/proj_experimental.h +52 -0
  21. package/dist/prebuilt/wasm-wasm32-mt-release/include/proj_symbol_rename.h +317 -0
  22. package/dist/prebuilt/wasm-wasm32-mt-release/include/projapps_lib.h +68 -0
  23. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/proj/proj-config-version.cmake +52 -0
  24. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/proj/proj-config.cmake +79 -0
  25. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/proj/proj-targets-release.cmake +19 -0
  26. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/proj/proj-targets.cmake +108 -0
  27. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/proj/proj4-targets-release.cmake +19 -0
  28. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/proj/proj4-targets.cmake +108 -0
  29. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/proj4/proj-targets-release.cmake +19 -0
  30. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/proj4/proj-targets.cmake +108 -0
  31. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/proj4/proj4-config-version.cmake +52 -0
  32. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/proj4/proj4-config.cmake +79 -0
  33. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/proj4/proj4-targets-release.cmake +19 -0
  34. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/proj4/proj4-targets.cmake +108 -0
  35. package/dist/prebuilt/wasm-wasm32-mt-release/lib/libproj.a +0 -0
  36. package/dist/prebuilt/wasm-wasm32-mt-release/lib/pkgconfig/proj.pc +14 -0
  37. package/dist/prebuilt/wasm-wasm32-mt-release/share/bash-completion/completions/projinfo +51 -0
  38. package/dist/prebuilt/wasm-wasm32-mt-release/share/doc/proj/AUTHORS.md +33 -0
  39. package/dist/prebuilt/wasm-wasm32-mt-release/share/doc/proj/COPYING +34 -0
  40. package/dist/prebuilt/wasm-wasm32-mt-release/share/doc/proj/NEWS.md +3404 -0
  41. package/dist/prebuilt/wasm-wasm32-mt-release/share/man/man1/cct.1 +350 -0
  42. package/dist/prebuilt/wasm-wasm32-mt-release/share/man/man1/cs2cs.1 +516 -0
  43. package/dist/prebuilt/wasm-wasm32-mt-release/share/man/man1/geod.1 +255 -0
  44. package/dist/prebuilt/wasm-wasm32-mt-release/share/man/man1/gie.1 +494 -0
  45. package/dist/prebuilt/wasm-wasm32-mt-release/share/man/man1/proj.1 +318 -0
  46. package/dist/prebuilt/wasm-wasm32-mt-release/share/man/man1/projinfo.1 +832 -0
  47. package/dist/prebuilt/wasm-wasm32-mt-release/share/man/man1/projsync.1 +223 -0
  48. package/dist/prebuilt/wasm-wasm32-mt-release/share/proj/CH +22 -0
  49. package/dist/prebuilt/wasm-wasm32-mt-release/share/proj/GL27 +23 -0
  50. package/dist/prebuilt/wasm-wasm32-mt-release/share/proj/ITRF2000 +24 -0
  51. package/dist/prebuilt/wasm-wasm32-mt-release/share/proj/ITRF2008 +94 -0
  52. package/dist/prebuilt/wasm-wasm32-mt-release/share/proj/ITRF2014 +55 -0
  53. package/dist/prebuilt/wasm-wasm32-mt-release/share/proj/ITRF2020 +91 -0
  54. package/dist/prebuilt/wasm-wasm32-mt-release/share/proj/deformation_model.schema.json +582 -0
  55. package/dist/prebuilt/wasm-wasm32-mt-release/share/proj/nad.lst +142 -0
  56. package/dist/prebuilt/wasm-wasm32-mt-release/share/proj/nad27 +810 -0
  57. package/dist/prebuilt/wasm-wasm32-mt-release/share/proj/nad83 +745 -0
  58. package/dist/prebuilt/wasm-wasm32-mt-release/share/proj/other.extra +53 -0
  59. package/dist/prebuilt/wasm-wasm32-mt-release/share/proj/proj.db +0 -0
  60. package/dist/prebuilt/wasm-wasm32-mt-release/share/proj/proj.ini +59 -0
  61. package/dist/prebuilt/wasm-wasm32-mt-release/share/proj/projjson.schema.json +1174 -0
  62. package/dist/prebuilt/wasm-wasm32-mt-release/share/proj/triangulation.schema.json +214 -0
  63. package/dist/prebuilt/wasm-wasm32-mt-release/share/proj/world +214 -0
  64. package/dist/prebuilt/wasm-wasm32-st-release/crossbind-emccflags.fingerprint +1 -0
  65. package/dist/prebuilt/wasm-wasm32-st-release/include/geodesic.h +837 -0
  66. package/dist/prebuilt/wasm-wasm32-st-release/include/proj/common.hpp +489 -0
  67. package/dist/prebuilt/wasm-wasm32-st-release/include/proj/coordinateoperation.hpp +2163 -0
  68. package/dist/prebuilt/wasm-wasm32-st-release/include/proj/coordinates.hpp +115 -0
  69. package/dist/prebuilt/wasm-wasm32-st-release/include/proj/coordinatesystem.hpp +892 -0
  70. package/dist/prebuilt/wasm-wasm32-st-release/include/proj/crs.hpp +1597 -0
  71. package/dist/prebuilt/wasm-wasm32-st-release/include/proj/datum.hpp +863 -0
  72. package/dist/prebuilt/wasm-wasm32-st-release/include/proj/io.hpp +1420 -0
  73. package/dist/prebuilt/wasm-wasm32-st-release/include/proj/metadata.hpp +474 -0
  74. package/dist/prebuilt/wasm-wasm32-st-release/include/proj/nn.hpp +385 -0
  75. package/dist/prebuilt/wasm-wasm32-st-release/include/proj/util.hpp +781 -0
  76. package/dist/prebuilt/wasm-wasm32-st-release/include/proj.h +2299 -0
  77. package/dist/prebuilt/wasm-wasm32-st-release/include/proj_constants.h +987 -0
  78. package/dist/prebuilt/wasm-wasm32-st-release/include/proj_experimental.h +52 -0
  79. package/dist/prebuilt/wasm-wasm32-st-release/include/proj_symbol_rename.h +317 -0
  80. package/dist/prebuilt/wasm-wasm32-st-release/include/projapps_lib.h +68 -0
  81. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/proj/proj-config-version.cmake +52 -0
  82. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/proj/proj-config.cmake +79 -0
  83. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/proj/proj-targets-release.cmake +19 -0
  84. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/proj/proj-targets.cmake +108 -0
  85. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/proj/proj4-targets-release.cmake +19 -0
  86. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/proj/proj4-targets.cmake +108 -0
  87. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/proj4/proj-targets-release.cmake +19 -0
  88. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/proj4/proj-targets.cmake +108 -0
  89. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/proj4/proj4-config-version.cmake +52 -0
  90. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/proj4/proj4-config.cmake +79 -0
  91. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/proj4/proj4-targets-release.cmake +19 -0
  92. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/proj4/proj4-targets.cmake +108 -0
  93. package/dist/prebuilt/wasm-wasm32-st-release/lib/libproj.a +0 -0
  94. package/dist/prebuilt/wasm-wasm32-st-release/lib/pkgconfig/proj.pc +14 -0
  95. package/dist/prebuilt/wasm-wasm32-st-release/share/bash-completion/completions/projinfo +51 -0
  96. package/dist/prebuilt/wasm-wasm32-st-release/share/doc/proj/AUTHORS.md +33 -0
  97. package/dist/prebuilt/wasm-wasm32-st-release/share/doc/proj/COPYING +34 -0
  98. package/dist/prebuilt/wasm-wasm32-st-release/share/doc/proj/NEWS.md +3404 -0
  99. package/dist/prebuilt/wasm-wasm32-st-release/share/man/man1/cct.1 +350 -0
  100. package/dist/prebuilt/wasm-wasm32-st-release/share/man/man1/cs2cs.1 +516 -0
  101. package/dist/prebuilt/wasm-wasm32-st-release/share/man/man1/geod.1 +255 -0
  102. package/dist/prebuilt/wasm-wasm32-st-release/share/man/man1/gie.1 +494 -0
  103. package/dist/prebuilt/wasm-wasm32-st-release/share/man/man1/proj.1 +318 -0
  104. package/dist/prebuilt/wasm-wasm32-st-release/share/man/man1/projinfo.1 +832 -0
  105. package/dist/prebuilt/wasm-wasm32-st-release/share/man/man1/projsync.1 +223 -0
  106. package/dist/prebuilt/wasm-wasm32-st-release/share/proj/CH +22 -0
  107. package/dist/prebuilt/wasm-wasm32-st-release/share/proj/GL27 +23 -0
  108. package/dist/prebuilt/wasm-wasm32-st-release/share/proj/ITRF2000 +24 -0
  109. package/dist/prebuilt/wasm-wasm32-st-release/share/proj/ITRF2008 +94 -0
  110. package/dist/prebuilt/wasm-wasm32-st-release/share/proj/ITRF2014 +55 -0
  111. package/dist/prebuilt/wasm-wasm32-st-release/share/proj/ITRF2020 +91 -0
  112. package/dist/prebuilt/wasm-wasm32-st-release/share/proj/deformation_model.schema.json +582 -0
  113. package/dist/prebuilt/wasm-wasm32-st-release/share/proj/nad.lst +142 -0
  114. package/dist/prebuilt/wasm-wasm32-st-release/share/proj/nad27 +810 -0
  115. package/dist/prebuilt/wasm-wasm32-st-release/share/proj/nad83 +745 -0
  116. package/dist/prebuilt/wasm-wasm32-st-release/share/proj/other.extra +53 -0
  117. package/dist/prebuilt/wasm-wasm32-st-release/share/proj/proj.db +0 -0
  118. package/dist/prebuilt/wasm-wasm32-st-release/share/proj/proj.ini +59 -0
  119. package/dist/prebuilt/wasm-wasm32-st-release/share/proj/projjson.schema.json +1174 -0
  120. package/dist/prebuilt/wasm-wasm32-st-release/share/proj/triangulation.schema.json +214 -0
  121. package/dist/prebuilt/wasm-wasm32-st-release/share/proj/world +214 -0
  122. package/package.json +35 -0
@@ -0,0 +1,494 @@
1
+ .\" Man page generated from reStructuredText
2
+ .\" by the Docutils 0.22.4 manpage writer.
3
+ .
4
+ .
5
+ .nr rst2man-indent-level 0
6
+ .
7
+ .de1 rstReportMargin
8
+ \\$1 \\n[an-margin]
9
+ level \\n[rst2man-indent-level]
10
+ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
11
+ -
12
+ \\n[rst2man-indent0]
13
+ \\n[rst2man-indent1]
14
+ \\n[rst2man-indent2]
15
+ ..
16
+ .de1 INDENT
17
+ .\" .rstReportMargin pre:
18
+ . RS \\$1
19
+ . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
20
+ . nr rst2man-indent-level +1
21
+ .\" .rstReportMargin post:
22
+ ..
23
+ .de UNINDENT
24
+ . RE
25
+ .\" indent \\n[an-margin]
26
+ .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
27
+ .nr rst2man-indent-level -1
28
+ .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
29
+ .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
30
+ ..
31
+ .TH "GIE" "1" "10 avril 2026" "9.8" "PROJ"
32
+ .SH NAME
33
+ gie \- The Geospatial Integrity Investigation Environment
34
+ .SH SYNOPSIS
35
+ .INDENT 0.0
36
+ .INDENT 3.5
37
+ \fBgie\fP [ \fB\-hovql\fP [ args ] ] file[s]
38
+ .UNINDENT
39
+ .UNINDENT
40
+ .SH DESCRIPTION
41
+ .sp
42
+ gie, the Geospatial Integrity Investigation Environment, is a
43
+ regression testing environment for the PROJ transformation library. Its primary
44
+ design goal is to be able to perform regression testing of code that are a part
45
+ of PROJ, while not requiring any other kind of tooling than the same C compiler
46
+ already employed for compiling the library.
47
+ .INDENT 0.0
48
+ .TP
49
+ .B \-h, \-\-help
50
+ Print usage information
51
+ .UNINDENT
52
+ .INDENT 0.0
53
+ .TP
54
+ .B \-o <file>, \-\-output <file>
55
+ Specify output file name
56
+ .UNINDENT
57
+ .INDENT 0.0
58
+ .TP
59
+ .B \-v, \-\-verbose
60
+ Verbose: Provide non\-essential informational output. Repeat \fB\-v\fP for
61
+ more verbosity (e.g. \fB\-vv\fP)
62
+ .UNINDENT
63
+ .INDENT 0.0
64
+ .TP
65
+ .B \-q, \-\-quiet
66
+ Quiet: Opposite of verbose. In quiet mode not even errors are
67
+ reported. Only interaction is through the return code (0 on success,
68
+ non\-zero indicates number of FAILED tests)
69
+ .UNINDENT
70
+ .INDENT 0.0
71
+ .TP
72
+ .B \-l, \-\-list
73
+ List the PROJ internal system error codes
74
+ .UNINDENT
75
+ .INDENT 0.0
76
+ .TP
77
+ .B \-\-version
78
+ Print version number
79
+ .UNINDENT
80
+ .sp
81
+ Tests for gie are defined in simple text files. Usually having the
82
+ extension \fB\&.gie\fP\&. Test for gie are written in the purpose\-build command language for gie.
83
+ The basic functionality of the gie command language is implemented through just
84
+ 3 command verbs: \fBoperation\fP, which defines the PROJ operation to test,
85
+ \fBaccept\fP, which defines the input coordinate to read, and \fBexpect\fP, which
86
+ defines the result to expect.
87
+ .sp
88
+ A sample test file for gie that uses the three above basic commands looks
89
+ like:
90
+ .INDENT 0.0
91
+ .INDENT 3.5
92
+ .sp
93
+ .EX
94
+ <gie>
95
+
96
+ \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
97
+ Test output of the UTM projection
98
+ \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
99
+ operation +proj=utm +zone=32 +ellps=GRS80
100
+ \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
101
+ accept 12 55
102
+ expect 691_875.632_14 6_098_907.825_05
103
+
104
+ </gie>
105
+ .EE
106
+ .UNINDENT
107
+ .UNINDENT
108
+ .sp
109
+ Parsing of a gie file starts at \fB<gie>\fP and ends when \fB</gie>\fP
110
+ is reached. Anything before \fB<gie>\fP and after \fB</gie>\fP is not considered.
111
+ Test cases are created by defining an \fBoperation\fP which
112
+ \fBaccept\fP an input coordinate and \fBexpect\fP an output
113
+ coordinate.
114
+ .sp
115
+ Because gie tests are wrapped in the \fB<gie>\fP/\fB</gie>\fP tags it is
116
+ also possible to add test cases to custom made init files \%<#\:init-files>\&.
117
+ The tests will be ignore by PROJ when reading the init file with \fI+init\fP and
118
+ gie ignores anything not wrapped in \fB<gie>\fP/\fB</gie>\fP\&.
119
+ .sp
120
+ gie tests are defined by a set of commands like \fBoperation\fP,
121
+ \fBaccept\fP and \fBexpect\fP in the example above. Together the
122
+ commands make out the gie command language. Any line in a
123
+ gie file that does not start with a command is ignored. In the
124
+ example above it is seen how this can be used to add comments and styling to
125
+ gie test files in order to make them more readable as well as
126
+ documenting what the purpose of the various tests are.
127
+ .sp
128
+ Below the gie command language is explained in details.
129
+ .SH EXAMPLES
130
+ .INDENT 0.0
131
+ .IP 1. 3
132
+ Run all tests in a file with all debug information turned on
133
+ .UNINDENT
134
+ .INDENT 0.0
135
+ .INDENT 3.5
136
+ .sp
137
+ .EX
138
+ gie \-vvvv corner\-cases.gie
139
+ .EE
140
+ .UNINDENT
141
+ .UNINDENT
142
+ .INDENT 0.0
143
+ .IP 2. 3
144
+ Run all tests in several files
145
+ .UNINDENT
146
+ .INDENT 0.0
147
+ .INDENT 3.5
148
+ .sp
149
+ .EX
150
+ gie foo bar
151
+ .EE
152
+ .UNINDENT
153
+ .UNINDENT
154
+ .SH GIE COMMAND LANGUAGE
155
+ .INDENT 0.0
156
+ .TP
157
+ .B operation <+args>
158
+ Define a PROJ operation to test. Example:
159
+ .INDENT 7.0
160
+ .INDENT 3.5
161
+ .sp
162
+ .EX
163
+ operation proj=utm zone=32 ellps=GRS80
164
+ # test 4D function
165
+ accept 12 55 0 0
166
+ expect 691875.63214 6098907.82501 0 0
167
+
168
+ # test 2D function
169
+ accept 12 56
170
+ expect 687071.4391 6210141.3267
171
+ .EE
172
+ .UNINDENT
173
+ .UNINDENT
174
+ .UNINDENT
175
+ .INDENT 0.0
176
+ .TP
177
+ .B accept <x y [z [t]]>
178
+ Define the input coordinate to read. Takes test coordinate. The coordinate
179
+ can be defined by either 2, 3 or 4 values, where the first two values are
180
+ the x\- and y\-components, the 3rd is the z\-component and the 4th is the time
181
+ component. The number of components in the coordinate determines which
182
+ version of the operation is tested (2D, 3D or 4D). Many coordinates can be
183
+ accepted for one \fBoperation\fP\&. For each \fBaccept\fP an
184
+ accompanying \fBexpect\fP is needed.
185
+ .sp
186
+ Note that gie accepts the underscore (\fB_\fP) as a thousands
187
+ separator. It is not required (in fact, it is entirely ignored by the
188
+ input routine), but it significantly improves the readability of the very
189
+ long strings of numbers typically required in projected coordinates.
190
+ .sp
191
+ See \fBoperation\fP for an example.
192
+ .UNINDENT
193
+ .INDENT 0.0
194
+ .TP
195
+ .B expect <x y [z [t]]> | <error code>
196
+ Define the expected coordinate that will be returned from accepted
197
+ coordinate passed though an operation. The expected coordinate can be
198
+ defined by either 2, 3 or 4 components, similarly to \fBaccept\fP\&.
199
+ Many coordinates can be expected for one \fBoperation\fP\&. For each
200
+ \fBexpect\fP an accompanying \fBaccept\fP is needed.
201
+ .sp
202
+ See \fBoperation\fP for an example.
203
+ .sp
204
+ In addition to expecting a coordinate it is also possible to expect a
205
+ PROJ error code in case an operation can\(aqt be created. This is useful when
206
+ testing that errors are caught and handled correctly. Below is an example of
207
+ that tests that the pipeline operator fails correctly when a non\-invertible
208
+ pipeline is constructed.
209
+ .INDENT 7.0
210
+ .INDENT 3.5
211
+ .sp
212
+ .EX
213
+ operation proj=pipeline step
214
+ proj=urm5 n=0.5 inv
215
+ expect failure pjd_err_malformed_pipeline
216
+ .EE
217
+ .UNINDENT
218
+ .UNINDENT
219
+ .sp
220
+ See \fBgie \-\-list\fP for a list of error codes that can be expected.
221
+ .UNINDENT
222
+ .INDENT 0.0
223
+ .TP
224
+ .B tolerance <tolerance>
225
+ The \fBtolerance\fP command controls how much accepted coordinates
226
+ can deviate from the expected coordinate. This is handy to test that an
227
+ operation meets a certain numerical tolerance threshold. Some operations
228
+ are expected to be accurate within millimeters where others might only be
229
+ accurate within a few meters. \fBtolerance\fP should
230
+ .INDENT 7.0
231
+ .INDENT 3.5
232
+ .sp
233
+ .EX
234
+ operation proj=merc
235
+ # test coordinate as returned by \(ga\(ga\(gaecho 12 55 | proj +proj=merc\(ga\(ga
236
+ tolerance 1 cm
237
+ accept 12 55
238
+ expect 1335833.89 7326837.72
239
+
240
+ # test that the same coordinate with a 50 m false easting as determined
241
+ # by \(ga\(gaecho 12 55 |proj +proj=merc +x_0=50\(ga\(ga is still within a 100 m
242
+ # tolerance of the unaltered coordinate from proj=merc
243
+ tolerance 100 m
244
+ accept 12 55
245
+ expect 1335883.89 7326837.72
246
+ .EE
247
+ .UNINDENT
248
+ .UNINDENT
249
+ .sp
250
+ The default tolerance is 0.5 mm. See \fBproj \-lu\fP \%<#\:cmdoption-proj-lu> for a list of possible
251
+ units.
252
+ .UNINDENT
253
+ .INDENT 0.0
254
+ .TP
255
+ .B roundtrip <n> <tolerance>
256
+ Do a roundtrip test of an operation. \fBroundtrip\fP needs a
257
+ \fBoperation\fP and a \fBaccept\fP command
258
+ to function. The accepted coordinate is passed to the operation first in
259
+ it\(aqs forward mode, then the output from the forward operation is passed
260
+ back to the inverse operation. This procedure is done \fBn\fP times. If the
261
+ resulting coordinate is within the set tolerance of the initial coordinate,
262
+ the test is passed.
263
+ .sp
264
+ Example with the default 100 iterations and the default tolerance:
265
+ .INDENT 7.0
266
+ .INDENT 3.5
267
+ .sp
268
+ .EX
269
+ operation proj=merc
270
+ accept 12 55
271
+ roundtrip
272
+ .EE
273
+ .UNINDENT
274
+ .UNINDENT
275
+ .sp
276
+ Example with count and default tolerance:
277
+ .INDENT 7.0
278
+ .INDENT 3.5
279
+ .sp
280
+ .EX
281
+ operation proj=merc
282
+ accept 12 55
283
+ roundtrip 10000
284
+ .EE
285
+ .UNINDENT
286
+ .UNINDENT
287
+ .sp
288
+ Example with count and tolerance:
289
+ .INDENT 7.0
290
+ .INDENT 3.5
291
+ .sp
292
+ .EX
293
+ operation proj=merc
294
+ accept 12 55
295
+ roundtrip 10000 5 mm
296
+ .EE
297
+ .UNINDENT
298
+ .UNINDENT
299
+ .UNINDENT
300
+ .INDENT 0.0
301
+ .TP
302
+ .B direction <direction>
303
+ The \fBdirection\fP command specifies in which direction an operation
304
+ is performed. This can either be \fBforward\fP or \fBinverse\fP\&. An example of
305
+ this is seen below where it is tested that a symmetrical transformation
306
+ pipeline returns the same results in both directions.
307
+ .INDENT 7.0
308
+ .INDENT 3.5
309
+ .sp
310
+ .EX
311
+ operation proj=pipeline zone=32 step
312
+ proj=utm ellps=GRS80 step
313
+ proj=utm ellps=GRS80 inv
314
+ tolerance 0.1 mm
315
+
316
+ accept 12 55 0 0
317
+ expect 12 55 0 0
318
+
319
+ # Now the inverse direction (still same result: the pipeline is symmetrical)
320
+
321
+ direction inverse
322
+ expect 12 55 0 0
323
+ .EE
324
+ .UNINDENT
325
+ .UNINDENT
326
+ .sp
327
+ The default direction is \(dqforward\(dq.
328
+ .UNINDENT
329
+ .INDENT 0.0
330
+ .TP
331
+ .B ignore <error code>
332
+ This is especially
333
+ useful in test cases that rely on a grid that is not guaranteed to be
334
+ available. Below is an example of that situation.
335
+ .INDENT 7.0
336
+ .INDENT 3.5
337
+ .sp
338
+ .EX
339
+ operation proj=hgridshift +grids=nzgd2kgrid0005.gsb ellps=GRS80
340
+ tolerance 1 mm
341
+ ignore pjd_err_failed_to_load_grid
342
+ accept 172.999892181021551 \-45.001620431954613
343
+ expect 173 \-45
344
+ .EE
345
+ .UNINDENT
346
+ .UNINDENT
347
+ .sp
348
+ See \fBgie \-\-list\fP for a list of error codes that can be ignored.
349
+ .UNINDENT
350
+ .INDENT 0.0
351
+ .TP
352
+ .B require_grid <grid_name>
353
+ Checks the availability of the grid <grid_name>. If it is not found, then
354
+ all \fBaccept\fP/\fBexpect\fP pairs until the next
355
+ \fBoperation\fP will be skipped.
356
+ \fBrequire_grid\fP can be repeated several times to specify several grids whose
357
+ presence is required.
358
+ .UNINDENT
359
+ .INDENT 0.0
360
+ .TP
361
+ .B echo <text>
362
+ Add user defined text to the output stream. See the example below.
363
+ .INDENT 7.0
364
+ .INDENT 3.5
365
+ .sp
366
+ .EX
367
+ <gie>
368
+ echo ** Mercator projection tests **
369
+ operation +proj=merc
370
+ accept 0 0
371
+ expect 0 0
372
+ </gie>
373
+ .EE
374
+ .UNINDENT
375
+ .UNINDENT
376
+ .sp
377
+ which returns
378
+ .INDENT 7.0
379
+ .INDENT 3.5
380
+ .sp
381
+ .EX
382
+ \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
383
+ Reading file \(aqtest.gie\(aq
384
+ ** Mercator projection test **
385
+ \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
386
+ total: 1 tests succeeded, 0 tests skipped, 0 tests failed.
387
+ \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
388
+ .EE
389
+ .UNINDENT
390
+ .UNINDENT
391
+ .UNINDENT
392
+ .INDENT 0.0
393
+ .TP
394
+ .B skip
395
+ Skip any test after the first occurrence of \fBskip\fP\&. In the example below only
396
+ the first test will be performed. The second test is skipped. This feature is mostly
397
+ relevant for debugging when writing new test cases.
398
+ .INDENT 7.0
399
+ .INDENT 3.5
400
+ .sp
401
+ .EX
402
+ <gie>
403
+ operation proj=merc
404
+ accept 0 0
405
+ expect 0 0
406
+ skip
407
+ accept 0 1
408
+ expect 0 110579.9
409
+ </gie>
410
+ .EE
411
+ .UNINDENT
412
+ .UNINDENT
413
+ .UNINDENT
414
+ .SH STRICT MODE
415
+ .sp
416
+ Added in version 7.1.
417
+
418
+ .sp
419
+ A stricter variant of normal gie syntax can be used by wrapping gie commands
420
+ between \fB<gie\-strict>\fP and \fB</gie\-strict>\fP\&. In strict mode, comment lines
421
+ must start with a sharp character. Unknown commands will be considered as an error.
422
+ A command can still be split on several lines, but intermediate lines must
423
+ end with the space character followed by backslash to mark the continuation.
424
+ .INDENT 0.0
425
+ .INDENT 3.5
426
+ .INDENT 0.0
427
+ .INDENT 3.5
428
+ .sp
429
+ .EX
430
+ <gie\-strict>
431
+ # This is a comment. The following line with multiple repeated characters too
432
+ \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
433
+ # A command on several lines must use \(dq \e\(dq continuation
434
+ operation proj=hgridshift +grids=nzgd2kgrid0005.gsb \e
435
+ ellps=GRS80
436
+ tolerance 1 mm
437
+ ignore pjd_err_failed_to_load_grid
438
+ accept 172.999892181021551 \-45.001620431954613
439
+ expect 173 \-45
440
+ </gie\-strict>
441
+ .EE
442
+ .UNINDENT
443
+ .UNINDENT
444
+ .UNINDENT
445
+ .UNINDENT
446
+ .SH BACKGROUND
447
+ .sp
448
+ More importantly than being an acronym for \(dqGeospatial Integrity Investigation
449
+ Environment\(dq, gie were also the initials, user id, and USGS email address of
450
+ Gerald Ian Evenden (1935\-\-2016), the geospatial visionary, who, already in the
451
+ 1980s, started what was to become the PROJ of today.
452
+ .sp
453
+ Gerald\(aqs clear vision was that map projections are \fIjust special functions\fP\&.
454
+ Some of them rather complex, most of them of two variables, but all of them
455
+ \fIjust special functions\fP, and not particularly more special than the \fBsin()\fP,
456
+ \fBcos()\fP, \fBtan()\fP, and \fBhypot()\fP already available in the C standard library.
457
+ .sp
458
+ And hence, according to Gerald, \fIthey should not be particularly much harder
459
+ to use\fP, for a programmer, than the \fBsin()\fP\(aqs, \fBtan()\fP\(aqs and
460
+ \fBhypot()\fP\(aqs so readily available.
461
+ .sp
462
+ Gerald\(aqs ingenuity also showed in the implementation of the vision, where
463
+ he devised a comprehensive, yet simple, system of key\-value pairs for
464
+ parameterising a map projection, and the highly flexible \fBPJ\fP \%<#\:c\:.PJ> struct, storing
465
+ run\-time compiled versions of those key\-value pairs, hence making a map
466
+ projection function call, \fBpj_fwd(PJ, point)\fP, as easy as a traditional function
467
+ call like \fBhypot(x,y)\fP\&.
468
+ .sp
469
+ While today, we may have more formally well defined metadata systems (most
470
+ prominent the OGC WKT2 representation), nothing comes close being as easily
471
+ readable (\(dqhuman compatible\(dq) as Gerald\(aqs key\-value system. This system in
472
+ particular, and the PROJ system in general, was Gerald\(aqs great gift to anyone
473
+ using and/or communicating about geodata.
474
+ .sp
475
+ It is only reasonable to name a program, keeping an eye on the
476
+ integrity of the PROJ system, in honour of Gerald.
477
+ .sp
478
+ So in honour, and hopefully also in the spirit, of Gerald Ian Evenden
479
+ (1935\-\-2016), this is the Geospatial Integrity Investigation Environment.
480
+ .SH SEE ALSO
481
+ .sp
482
+ \fBproj(1)\fP, \fBcs2cs(1)\fP, \fBcct(1)\fP, \fBgeod(1)\fP, \fBprojinfo(1)\fP, \fBprojsync(1)\fP
483
+ .SH BUGS
484
+ .sp
485
+ A list of known bugs can be found at \%<https://\:github\:.com/\:OSGeo/\:PROJ/\:issues>
486
+ where new bug reports can be submitted to.
487
+ .SH HOME PAGE
488
+ .sp
489
+ \%<https://\:proj\:.org/>
490
+ .SH Author
491
+ Thomas Knudsen
492
+ .SH Copyright
493
+ 1983-2026, PROJ contributors
494
+ .\" End of generated man page.