@crossbind/port-proj-win32 0.0.0-bootstrap.0 → 2.0.0-beta.63

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