proj4rb 2.2.1 → 2.2.2

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.
@@ -1,301 +1,301 @@
1
- module Proj
2
- module Api
3
- typedef :pointer, :PJ
4
- typedef :pointer, :PJ_CONTEXT
5
- typedef :pointer, :PJ_AREA
6
-
7
- class P5_FACTORS < FFI::Struct
8
- layout :meridional_scale, :double, # h
9
- :parallel_scale, :double, # k
10
- :areal_scale, :double, # s
11
-
12
- :angular_distortion, :double, # omega
13
- :meridian_parallel_angle, :double, # theta-prime
14
- :meridian_convergence, :double, # alpha
15
-
16
- :tissot_semimajor, :double, # a
17
- :tissot_semiminor, :double, # b
18
-
19
- :dx_dlam, :double,
20
- :dx_dphi, :double,
21
- :dy_dlam, :double,
22
- :dy_dphi, :double
23
- end
24
-
25
- # Data types for list of operations, ellipsoids, datums and units used in PROJ.4 */
26
- class PJ_LIST < FFI::Struct
27
- layout :id, :string, # projection keyword
28
- :PJ, :pointer, # projection entry point
29
- :descr, :pointer # description text
30
- end
31
- PJ_OPERATIONS = PJ_LIST
32
-
33
- class PJ_ELLPS < FFI::Struct
34
- layout :id, :string, # ellipse keyword name
35
- :major, :string, # a= value
36
- :ell, :string, # elliptical parameter
37
- :name, :string # comments
38
- end
39
-
40
- class PJ_UNITS < FFI::Struct
41
- layout :id, :string, # units keyword
42
- :to_meter, :string, # multiply by value to get meters
43
- :name, :string, # comments
44
- :factor, :double # to_meter factor in actual numbers
45
- end
46
-
47
- class PJ_PRIME_MERIDIANS < FFI::Struct
48
- layout :id, :string, # prime meridian keyword
49
- :defn, :string # offset from greenwich in DMS format.
50
- end
51
-
52
- # Geodetic, mostly spatiotemporal coordinate types
53
- class PJ_XYZT < FFI::Struct
54
- layout :x, :double,
55
- :y, :double,
56
- :z, :double,
57
- :t, :double
58
- end
59
-
60
- class PJ_UVWT < FFI::Struct
61
- layout :u, :double,
62
- :v, :double,
63
- :w, :double,
64
- :t, :double
65
- end
66
-
67
- class PJ_LPZT < FFI::Struct
68
- layout :lam, :double,
69
- :phi, :double,
70
- :z, :double,
71
- :t, :double
72
- end
73
-
74
- # Rotations: omega, phi, kappa
75
- class PJ_OPK < FFI::Struct
76
- layout :o, :double,
77
- :p, :double,
78
- :k, :double
79
- end
80
-
81
- # East, North, Up
82
- class PJ_ENU < FFI::Struct
83
- layout :e, :double,
84
- :n, :double,
85
- :u, :double
86
- end
87
-
88
- # Geodesic length, fwd azi, rev azi
89
- class PJ_GEOD < FFI::Struct
90
- layout :s, :double,
91
- :a1, :double,
92
- :a2, :double
93
- end
94
-
95
- # Classic proj.4 pair/triplet types - moved into the PJ_ name space.
96
- class PJ_UV < FFI::Struct
97
- layout :u, :double,
98
- :v, :double
99
- end
100
-
101
- class PJ_XY < FFI::Struct
102
- layout :x, :double,
103
- :y, :double
104
- end
105
-
106
- class PJ_LP < FFI::Struct
107
- layout :lam, :double,
108
- :phi, :double
109
- end
110
-
111
- class PJ_XYZ < FFI::Struct
112
- layout :x, :double,
113
- :y, :double,
114
- :z, :double
115
- end
116
-
117
- class PJ_UVW < FFI::Struct
118
- layout :u, :double,
119
- :v, :double,
120
- :w, :double
121
- end
122
-
123
- class PJ_LPZ < FFI::Struct
124
- layout :lam, :double,
125
- :phi, :double,
126
- :z, :double
127
- end
128
-
129
- class PJ_COORD < FFI::Union
130
- layout :v, [:double, 4],
131
- :xyzt, PJ_XYZT,
132
- :uvwt, PJ_UVWT,
133
- :lpzt, PJ_LPZT,
134
- :geod, PJ_GEOD,
135
- :opk, PJ_OPK,
136
- :enu, PJ_ENU,
137
- :xyz, PJ_XYZ,
138
- :uvw, PJ_UVW,
139
- :lpz, PJ_LPZ,
140
- :xy, PJ_XY,
141
- :uv, PJ_UV,
142
- :lp, PJ_LP
143
- end
144
-
145
- class PJ_INFO < FFI::Struct
146
- layout :major, :int, # Major release number
147
- :minor, :int, # Minor release number
148
- :patch, :int, # Patch level
149
- :release, :string, # Release info. Version + date
150
- :version, :string, # Full version number
151
- :searchpath, :string, # Paths where init and grid files are looked for. Paths are separated by
152
- # semi-colons on Windows, and colons on non-Windows platforms.
153
- :paths, :pointer,
154
- :path_count, :size_t
155
- end
156
-
157
- class PJ_PROJ_INFO < FFI::Struct
158
- layout :id, :string, # Name of the projection in question
159
- :description, :string, # Description of the projection
160
- :definition, :string, # Projection definition
161
- :has_inverse, :int, # 1 if an inverse mapping exists, 0 otherwise
162
- :accuracy, :double # Expected accuracy of the transformation. -1 if unknown.
163
-
164
- def to_s
165
- "<#{self.class.name} id: #{self[:id]}, description: #{self[:description]}, definition: #{self[:definition]}, has_inverse: #{self[:has_inverse]} accuracy: #{self[:accuracy]}"
166
- end
167
- end
168
-
169
- class PJ_GRID_INFO < FFI::Struct
170
- layout :gridname, [:string, 32], # name of grid
171
- :filename, [:string, 260], # full path to grid
172
- :format, [:string, 8], # file format of grid
173
- :lowerleft, PJ_LP, # Coordinates of lower left corner
174
- :upperright, PJ_LP, # Coordinates of upper right corner
175
- :n_lon, :int, # Grid size
176
- :n_lat, :int, # Grid size
177
- :cs_lon, :double, # Cell size of grid
178
- :cs_lat, :double # Cell size of grid
179
- end
180
-
181
- class PJ_INIT_INFO < FFI::Struct
182
- layout :name, [:string, 32], # name init file
183
- :filename, [:string, 260], # full path to the init file
184
- :version, [:string, 32], # version of the init file
185
- :origin, [:string, 32], # origin of the file, e.g. EPSG
186
- :lastupdate, [:string, 16] # Date of last update in YYYY-MM-DD format
187
- end
188
-
189
- enum :PJ_LOG_LEVEL, [:PJ_LOG_NONE , 0,
190
- :PJ_LOG_ERROR, 1,
191
- :PJ_LOG_DEBUG, 2,
192
- :PJ_LOG_TRACE, 3,
193
- :PJ_LOG_TELL , 4,
194
- :PJ_LOG_DEBUG_MAJOR, 2, # for proj_api.h compatibility
195
- :PJ_LOG_DEBUG_MINOR, 3] # for proj_api.h compatibility
196
-
197
- # Apply transformation to observation - in forward or inverse direction
198
- enum :PJ_DIRECTION, [:PJ_FWD, 1, # Forward
199
- :PJ_IDENT, 0, # Do nothing
200
- :PJ_INV, -1] # Inverse
201
-
202
- enum :PJ_CATEGORY, [:PJ_CATEGORY_ELLIPSOID,
203
- :PJ_CATEGORY_PRIME_MERIDIAN,
204
- :PJ_CATEGORY_DATUM,
205
- :PJ_CATEGORY_CRS,
206
- :PJ_CATEGORY_COORDINATE_OPERATION]
207
-
208
- enum :PJ_TYPE, [:PJ_TYPE_UNKNOWN,
209
- :PJ_TYPE_ELLIPSOID,
210
- :PJ_TYPE_PRIME_MERIDIAN,
211
- :PJ_TYPE_GEODETIC_REFERENCE_FRAME,
212
- :PJ_TYPE_DYNAMIC_GEODETIC_REFERENCE_FRAME,
213
- :PJ_TYPE_VERTICAL_REFERENCE_FRAME,
214
- :PJ_TYPE_DYNAMIC_VERTICAL_REFERENCE_FRAME,
215
- :PJ_TYPE_DATUM_ENSEMBLE,
216
-
217
- # Abstract type, not returned by proj_get_type()
218
- :PJ_TYPE_CRS,
219
-
220
- :PJ_TYPE_GEODETIC_CRS,
221
- :PJ_TYPE_GEOCENTRIC_CRS,
222
-
223
- # proj_get_type() will never return that type, but
224
- # :PJ_TYPE_GEOGRAPHIC_2D_CRS or :PJ_TYPE_GEOGRAPHIC_3D_CRS.
225
- :PJ_TYPE_GEOGRAPHIC_CRS,
226
-
227
- :PJ_TYPE_GEOGRAPHIC_2D_CRS,
228
- :PJ_TYPE_GEOGRAPHIC_3D_CRS,
229
- :PJ_TYPE_VERTICAL_CRS,
230
- :PJ_TYPE_PROJECTED_CRS,
231
- :PJ_TYPE_COMPOUND_CRS,
232
- :PJ_TYPE_TEMPORAL_CRS,
233
- :PJ_TYPE_ENGINEERING_CRS,
234
- :PJ_TYPE_BOUND_CRS,
235
- :PJ_TYPE_OTHER_CRS,
236
-
237
- :PJ_TYPE_CONVERSION,
238
- :PJ_TYPE_TRANSFORMATION,
239
- :PJ_TYPE_CONCATENATED_OPERATION,
240
- :PJ_TYPE_OTHER_COORDINATE_OPERATION]
241
-
242
- enum :PJ_PROJ_STRING_TYPE, [:PJ_PROJ_5,
243
- :PJ_PROJ_4]
244
-
245
- enum :PJ_COORDINATE_SYSTEM_TYPE, [:PJ_CS_TYPE_UNKNOWN,
246
- :PJ_CS_TYPE_CARTESIAN,
247
- :PJ_CS_TYPE_ELLIPSOIDAL,
248
- :PJ_CS_TYPE_VERTICAL,
249
- :PJ_CS_TYPE_SPHERICAL,
250
- :PJ_CS_TYPE_ORDINAL,
251
- :PJ_CS_TYPE_PARAMETRIC,
252
- :PJ_CS_TYPE_DATETIMETEMPORAL,
253
- :PJ_CS_TYPE_TEMPORALCOUNT,
254
- :PJ_CS_TYPE_TEMPORALMEASURE]
255
-
256
- enum :PJ_WKT_TYPE, [:PJ_WKT2_2015,
257
- :PJ_WKT2_2015_SIMPLIFIED,
258
- :PJ_WKT2_2018,
259
- :PJ_WKT2_2018_SIMPLIFIED,
260
- :PJ_WKT1_GDAL,
261
- :PJ_WKT1_ESRI]
262
-
263
- attach_function :proj_info, [], PJ_INFO.by_value
264
- attach_function :proj_pj_info, [:PJ], PJ_PROJ_INFO.by_value
265
- attach_function :proj_grid_info, [:string], PJ_GRID_INFO.by_value
266
- attach_function :proj_init_info, [:string], PJ_INIT_INFO.by_value
267
-
268
- # Contexts
269
- attach_function :proj_context_create, [], :PJ_CONTEXT
270
- attach_function :proj_context_destroy, [:PJ_CONTEXT], :PJ_CONTEXT
271
-
272
- # Error handling
273
- attach_function :proj_context_errno, [:PJ_CONTEXT], :int
274
- attach_function :proj_errno, [:PJ], :int
275
- attach_function :proj_errno_set, [:PJ, :int], :int
276
- attach_function :proj_errno_reset, [:PJ], :int
277
- attach_function :proj_errno_restore, [:PJ, :int], :int
278
-
279
- # Manage the transformation definition object PJ
280
- attach_function :proj_create, [:PJ_CONTEXT, :string], :PJ
281
- attach_function :proj_create_argv, [:PJ_CONTEXT, :int, :pointer], :PJ
282
- attach_function :proj_create_crs_to_crs, [:PJ_CONTEXT, :string, :string, :PJ_AREA], :PJ
283
- attach_function :proj_destroy, [:PJ], :PJ
284
-
285
- attach_function :proj_trans, [:PJ, :PJ_DIRECTION, PJ_COORD.by_value], PJ_COORD.by_value
286
-
287
- # Get lists of operations, ellipsoids, units and prime meridians
288
- attach_function :proj_list_operations, [], :pointer #PJ_LIST
289
- attach_function :proj_list_ellps, [], :pointer #PJ_ELLPS
290
- attach_function :proj_list_units, [], :pointer #PJ_UNITS
291
- attach_function :proj_list_prime_meridians, [], :pointer #PJ_PRIME_MERIDIANS
292
-
293
- # Degrees/radians
294
- attach_function :proj_torad, [:double], :double
295
- attach_function :proj_todeg, [:double], :double
296
- attach_function :proj_dmstor, [:string, :pointer], :double
297
- attach_function :proj_rtodms, [:string, :double, :int, :int], :string
298
- attach_function :proj_angular_input, [:PJ, :PJ_DIRECTION], :bool
299
- attach_function :proj_angular_output, [:PJ, :PJ_DIRECTION], :bool
300
- end
1
+ module Proj
2
+ module Api
3
+ typedef :pointer, :PJ
4
+ typedef :pointer, :PJ_CONTEXT
5
+ typedef :pointer, :PJ_AREA
6
+
7
+ class P5_FACTORS < FFI::Struct
8
+ layout :meridional_scale, :double, # h
9
+ :parallel_scale, :double, # k
10
+ :areal_scale, :double, # s
11
+
12
+ :angular_distortion, :double, # omega
13
+ :meridian_parallel_angle, :double, # theta-prime
14
+ :meridian_convergence, :double, # alpha
15
+
16
+ :tissot_semimajor, :double, # a
17
+ :tissot_semiminor, :double, # b
18
+
19
+ :dx_dlam, :double,
20
+ :dx_dphi, :double,
21
+ :dy_dlam, :double,
22
+ :dy_dphi, :double
23
+ end
24
+
25
+ # Data types for list of operations, ellipsoids, datums and units used in PROJ.4 */
26
+ class PJ_LIST < FFI::Struct
27
+ layout :id, :string, # projection keyword
28
+ :PJ, :pointer, # projection entry point
29
+ :descr, :pointer # description text
30
+ end
31
+ PJ_OPERATIONS = PJ_LIST
32
+
33
+ class PJ_ELLPS < FFI::Struct
34
+ layout :id, :string, # ellipse keyword name
35
+ :major, :string, # a= value
36
+ :ell, :string, # elliptical parameter
37
+ :name, :string # comments
38
+ end
39
+
40
+ class PJ_UNITS < FFI::Struct
41
+ layout :id, :string, # units keyword
42
+ :to_meter, :string, # multiply by value to get meters
43
+ :name, :string, # comments
44
+ :factor, :double # to_meter factor in actual numbers
45
+ end
46
+
47
+ class PJ_PRIME_MERIDIANS < FFI::Struct
48
+ layout :id, :string, # prime meridian keyword
49
+ :defn, :string # offset from greenwich in DMS format.
50
+ end
51
+
52
+ # Geodetic, mostly spatiotemporal coordinate types
53
+ class PJ_XYZT < FFI::Struct
54
+ layout :x, :double,
55
+ :y, :double,
56
+ :z, :double,
57
+ :t, :double
58
+ end
59
+
60
+ class PJ_UVWT < FFI::Struct
61
+ layout :u, :double,
62
+ :v, :double,
63
+ :w, :double,
64
+ :t, :double
65
+ end
66
+
67
+ class PJ_LPZT < FFI::Struct
68
+ layout :lam, :double,
69
+ :phi, :double,
70
+ :z, :double,
71
+ :t, :double
72
+ end
73
+
74
+ # Rotations: omega, phi, kappa
75
+ class PJ_OPK < FFI::Struct
76
+ layout :o, :double,
77
+ :p, :double,
78
+ :k, :double
79
+ end
80
+
81
+ # East, North, Up
82
+ class PJ_ENU < FFI::Struct
83
+ layout :e, :double,
84
+ :n, :double,
85
+ :u, :double
86
+ end
87
+
88
+ # Geodesic length, fwd azi, rev azi
89
+ class PJ_GEOD < FFI::Struct
90
+ layout :s, :double,
91
+ :a1, :double,
92
+ :a2, :double
93
+ end
94
+
95
+ # Classic proj.4 pair/triplet types - moved into the PJ_ name space.
96
+ class PJ_UV < FFI::Struct
97
+ layout :u, :double,
98
+ :v, :double
99
+ end
100
+
101
+ class PJ_XY < FFI::Struct
102
+ layout :x, :double,
103
+ :y, :double
104
+ end
105
+
106
+ class PJ_LP < FFI::Struct
107
+ layout :lam, :double,
108
+ :phi, :double
109
+ end
110
+
111
+ class PJ_XYZ < FFI::Struct
112
+ layout :x, :double,
113
+ :y, :double,
114
+ :z, :double
115
+ end
116
+
117
+ class PJ_UVW < FFI::Struct
118
+ layout :u, :double,
119
+ :v, :double,
120
+ :w, :double
121
+ end
122
+
123
+ class PJ_LPZ < FFI::Struct
124
+ layout :lam, :double,
125
+ :phi, :double,
126
+ :z, :double
127
+ end
128
+
129
+ class PJ_COORD < FFI::Union
130
+ layout :v, [:double, 4],
131
+ :xyzt, PJ_XYZT,
132
+ :uvwt, PJ_UVWT,
133
+ :lpzt, PJ_LPZT,
134
+ :geod, PJ_GEOD,
135
+ :opk, PJ_OPK,
136
+ :enu, PJ_ENU,
137
+ :xyz, PJ_XYZ,
138
+ :uvw, PJ_UVW,
139
+ :lpz, PJ_LPZ,
140
+ :xy, PJ_XY,
141
+ :uv, PJ_UV,
142
+ :lp, PJ_LP
143
+ end
144
+
145
+ class PJ_INFO < FFI::Struct
146
+ layout :major, :int, # Major release number
147
+ :minor, :int, # Minor release number
148
+ :patch, :int, # Patch level
149
+ :release, :string, # Release info. Version + date
150
+ :version, :string, # Full version number
151
+ :searchpath, :string, # Paths where init and grid files are looked for. Paths are separated by
152
+ # semi-colons on Windows, and colons on non-Windows platforms.
153
+ :paths, :pointer,
154
+ :path_count, :size_t
155
+ end
156
+
157
+ class PJ_PROJ_INFO < FFI::Struct
158
+ layout :id, :string, # Name of the projection in question
159
+ :description, :string, # Description of the projection
160
+ :definition, :string, # Projection definition
161
+ :has_inverse, :int, # 1 if an inverse mapping exists, 0 otherwise
162
+ :accuracy, :double # Expected accuracy of the transformation. -1 if unknown.
163
+
164
+ def to_s
165
+ "<#{self.class.name} id: #{self[:id]}, description: #{self[:description]}, definition: #{self[:definition]}, has_inverse: #{self[:has_inverse]} accuracy: #{self[:accuracy]}"
166
+ end
167
+ end
168
+
169
+ class PJ_GRID_INFO < FFI::Struct
170
+ layout :gridname, [:string, 32], # name of grid
171
+ :filename, [:string, 260], # full path to grid
172
+ :format, [:string, 8], # file format of grid
173
+ :lowerleft, PJ_LP, # Coordinates of lower left corner
174
+ :upperright, PJ_LP, # Coordinates of upper right corner
175
+ :n_lon, :int, # Grid size
176
+ :n_lat, :int, # Grid size
177
+ :cs_lon, :double, # Cell size of grid
178
+ :cs_lat, :double # Cell size of grid
179
+ end
180
+
181
+ class PJ_INIT_INFO < FFI::Struct
182
+ layout :name, [:string, 32], # name init file
183
+ :filename, [:string, 260], # full path to the init file
184
+ :version, [:string, 32], # version of the init file
185
+ :origin, [:string, 32], # origin of the file, e.g. EPSG
186
+ :lastupdate, [:string, 16] # Date of last update in YYYY-MM-DD format
187
+ end
188
+
189
+ enum :PJ_LOG_LEVEL, [:PJ_LOG_NONE , 0,
190
+ :PJ_LOG_ERROR, 1,
191
+ :PJ_LOG_DEBUG, 2,
192
+ :PJ_LOG_TRACE, 3,
193
+ :PJ_LOG_TELL , 4,
194
+ :PJ_LOG_DEBUG_MAJOR, 2, # for proj_api.h compatibility
195
+ :PJ_LOG_DEBUG_MINOR, 3] # for proj_api.h compatibility
196
+
197
+ # Apply transformation to observation - in forward or inverse direction
198
+ enum :PJ_DIRECTION, [:PJ_FWD, 1, # Forward
199
+ :PJ_IDENT, 0, # Do nothing
200
+ :PJ_INV, -1] # Inverse
201
+
202
+ enum :PJ_CATEGORY, [:PJ_CATEGORY_ELLIPSOID,
203
+ :PJ_CATEGORY_PRIME_MERIDIAN,
204
+ :PJ_CATEGORY_DATUM,
205
+ :PJ_CATEGORY_CRS,
206
+ :PJ_CATEGORY_COORDINATE_OPERATION]
207
+
208
+ enum :PJ_TYPE, [:PJ_TYPE_UNKNOWN,
209
+ :PJ_TYPE_ELLIPSOID,
210
+ :PJ_TYPE_PRIME_MERIDIAN,
211
+ :PJ_TYPE_GEODETIC_REFERENCE_FRAME,
212
+ :PJ_TYPE_DYNAMIC_GEODETIC_REFERENCE_FRAME,
213
+ :PJ_TYPE_VERTICAL_REFERENCE_FRAME,
214
+ :PJ_TYPE_DYNAMIC_VERTICAL_REFERENCE_FRAME,
215
+ :PJ_TYPE_DATUM_ENSEMBLE,
216
+
217
+ # Abstract type, not returned by proj_get_type()
218
+ :PJ_TYPE_CRS,
219
+
220
+ :PJ_TYPE_GEODETIC_CRS,
221
+ :PJ_TYPE_GEOCENTRIC_CRS,
222
+
223
+ # proj_get_type() will never return that type, but
224
+ # :PJ_TYPE_GEOGRAPHIC_2D_CRS or :PJ_TYPE_GEOGRAPHIC_3D_CRS.
225
+ :PJ_TYPE_GEOGRAPHIC_CRS,
226
+
227
+ :PJ_TYPE_GEOGRAPHIC_2D_CRS,
228
+ :PJ_TYPE_GEOGRAPHIC_3D_CRS,
229
+ :PJ_TYPE_VERTICAL_CRS,
230
+ :PJ_TYPE_PROJECTED_CRS,
231
+ :PJ_TYPE_COMPOUND_CRS,
232
+ :PJ_TYPE_TEMPORAL_CRS,
233
+ :PJ_TYPE_ENGINEERING_CRS,
234
+ :PJ_TYPE_BOUND_CRS,
235
+ :PJ_TYPE_OTHER_CRS,
236
+
237
+ :PJ_TYPE_CONVERSION,
238
+ :PJ_TYPE_TRANSFORMATION,
239
+ :PJ_TYPE_CONCATENATED_OPERATION,
240
+ :PJ_TYPE_OTHER_COORDINATE_OPERATION]
241
+
242
+ enum :PJ_PROJ_STRING_TYPE, [:PJ_PROJ_5,
243
+ :PJ_PROJ_4]
244
+
245
+ enum :PJ_COORDINATE_SYSTEM_TYPE, [:PJ_CS_TYPE_UNKNOWN,
246
+ :PJ_CS_TYPE_CARTESIAN,
247
+ :PJ_CS_TYPE_ELLIPSOIDAL,
248
+ :PJ_CS_TYPE_VERTICAL,
249
+ :PJ_CS_TYPE_SPHERICAL,
250
+ :PJ_CS_TYPE_ORDINAL,
251
+ :PJ_CS_TYPE_PARAMETRIC,
252
+ :PJ_CS_TYPE_DATETIMETEMPORAL,
253
+ :PJ_CS_TYPE_TEMPORALCOUNT,
254
+ :PJ_CS_TYPE_TEMPORALMEASURE]
255
+
256
+ enum :PJ_WKT_TYPE, [:PJ_WKT2_2015,
257
+ :PJ_WKT2_2015_SIMPLIFIED,
258
+ :PJ_WKT2_2018,
259
+ :PJ_WKT2_2018_SIMPLIFIED,
260
+ :PJ_WKT1_GDAL,
261
+ :PJ_WKT1_ESRI]
262
+
263
+ attach_function :proj_info, [], PJ_INFO.by_value
264
+ attach_function :proj_pj_info, [:PJ], PJ_PROJ_INFO.by_value
265
+ attach_function :proj_grid_info, [:string], PJ_GRID_INFO.by_value
266
+ attach_function :proj_init_info, [:string], PJ_INIT_INFO.by_value
267
+
268
+ # Contexts
269
+ attach_function :proj_context_create, [], :PJ_CONTEXT
270
+ attach_function :proj_context_destroy, [:PJ_CONTEXT], :PJ_CONTEXT
271
+
272
+ # Error handling
273
+ attach_function :proj_context_errno, [:PJ_CONTEXT], :int
274
+ attach_function :proj_errno, [:PJ], :int
275
+ attach_function :proj_errno_set, [:PJ, :int], :int
276
+ attach_function :proj_errno_reset, [:PJ], :int
277
+ attach_function :proj_errno_restore, [:PJ, :int], :int
278
+
279
+ # Manage the transformation definition object PJ
280
+ attach_function :proj_create, [:PJ_CONTEXT, :string], :PJ
281
+ attach_function :proj_create_argv, [:PJ_CONTEXT, :int, :pointer], :PJ
282
+ attach_function :proj_create_crs_to_crs, [:PJ_CONTEXT, :string, :string, :PJ_AREA], :PJ
283
+ attach_function :proj_destroy, [:PJ], :PJ
284
+
285
+ attach_function :proj_trans, [:PJ, :PJ_DIRECTION, PJ_COORD.by_value], PJ_COORD.by_value
286
+
287
+ # Get lists of operations, ellipsoids, units and prime meridians
288
+ attach_function :proj_list_operations, [], :pointer #PJ_LIST
289
+ attach_function :proj_list_ellps, [], :pointer #PJ_ELLPS
290
+ attach_function :proj_list_units, [], :pointer #PJ_UNITS
291
+ attach_function :proj_list_prime_meridians, [], :pointer #PJ_PRIME_MERIDIANS
292
+
293
+ # Degrees/radians
294
+ attach_function :proj_torad, [:double], :double
295
+ attach_function :proj_todeg, [:double], :double
296
+ attach_function :proj_dmstor, [:string, :pointer], :double
297
+ attach_function :proj_rtodms, [:string, :double, :int, :int], :string
298
+ attach_function :proj_angular_input, [:PJ, :PJ_DIRECTION], :bool
299
+ attach_function :proj_angular_output, [:PJ, :PJ_DIRECTION], :bool
300
+ end
301
301
  end