ffi-gdal 1.0.4 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/.devcontainer/Dockerfile +9 -0
  3. data/.devcontainer/devcontainer.json +98 -0
  4. data/.github/CODEOWNERS +1 -0
  5. data/.github/workflows/codacy.yml +3 -3
  6. data/.github/workflows/codeql.yml +4 -4
  7. data/.github/workflows/continuous-integration.yml +30 -19
  8. data/.github/workflows/dependency-review.yml +2 -2
  9. data/.github/workflows/specs-in-docker.yml +12 -6
  10. data/.gitignore +4 -1
  11. data/Changelog.md +40 -5
  12. data/Gemfile +4 -2
  13. data/README.md +35 -0
  14. data/lib/ext/numeric_as_data_type.rb +1 -1
  15. data/lib/ffi/cpl/vsi.rb +10 -0
  16. data/lib/ffi/gdal/gdal.rb +9 -2
  17. data/lib/ffi/gdal/grid_data_metrics_options.rb +27 -5
  18. data/lib/ffi/gdal/grid_inverse_distance_to_a_power_options.rb +30 -10
  19. data/lib/ffi/gdal/grid_moving_average_options.rb +30 -5
  20. data/lib/ffi/gdal/grid_nearest_neighbor_options.rb +24 -4
  21. data/lib/ffi/gdal/internal_helpers/gdal_version.rb +15 -0
  22. data/lib/ffi/gdal/internal_helpers/layout_version.rb +9 -0
  23. data/lib/ffi/gdal/internal_helpers/layout_version_resolver.rb +24 -0
  24. data/lib/ffi/gdal/internal_helpers.rb +11 -0
  25. data/lib/ffi/gdal/utils.rb +984 -0
  26. data/lib/ffi/gdal/version.rb +1 -1
  27. data/lib/ffi/gdal.rb +3 -1
  28. data/lib/ffi/ogr/core.rb +1 -1
  29. data/lib/ffi/ogr/srs_api.rb +17 -0
  30. data/lib/gdal/cpl_error_handler.rb +30 -15
  31. data/lib/gdal/exceptions.rb +35 -16
  32. data/lib/gdal/extensions/color_table/extensions.rb +1 -1
  33. data/lib/gdal/extensions/gridder.rb +4 -0
  34. data/lib/gdal/geo_transform.rb +13 -0
  35. data/lib/gdal/grid_algorithms/algorithm_base.rb +35 -0
  36. data/lib/gdal/grid_algorithms/inverse_distance_to_a_power.rb +3 -7
  37. data/lib/gdal/grid_algorithms/metric_average_distance.rb +5 -4
  38. data/lib/gdal/grid_algorithms/metric_average_distance_pts.rb +5 -4
  39. data/lib/gdal/grid_algorithms/metric_count.rb +5 -4
  40. data/lib/gdal/grid_algorithms/metric_maximum.rb +5 -4
  41. data/lib/gdal/grid_algorithms/metric_minimum.rb +5 -4
  42. data/lib/gdal/grid_algorithms/metric_range.rb +5 -4
  43. data/lib/gdal/grid_algorithms/moving_average.rb +3 -7
  44. data/lib/gdal/grid_algorithms/nearest_neighbor.rb +3 -7
  45. data/lib/gdal/grid_algorithms.rb +2 -0
  46. data/lib/gdal/internal_helpers.rb +8 -5
  47. data/lib/gdal/major_object.rb +6 -0
  48. data/lib/gdal/raster_band.rb +16 -12
  49. data/lib/gdal/utils/dem/options.rb +52 -0
  50. data/lib/gdal/utils/dem.rb +108 -0
  51. data/lib/gdal/utils/grid/options.rb +52 -0
  52. data/lib/gdal/utils/grid.rb +72 -0
  53. data/lib/gdal/utils/helpers/dataset_list.rb +43 -0
  54. data/lib/gdal/utils/helpers/string_list.rb +47 -0
  55. data/lib/gdal/utils/helpers.rb +11 -0
  56. data/lib/gdal/utils/info/options.rb +52 -0
  57. data/lib/gdal/utils/info.rb +40 -0
  58. data/lib/gdal/utils/nearblack/options.rb +52 -0
  59. data/lib/gdal/utils/nearblack.rb +119 -0
  60. data/lib/gdal/utils/rasterize/options.rb +52 -0
  61. data/lib/gdal/utils/rasterize.rb +108 -0
  62. data/lib/gdal/utils/translate/options.rb +52 -0
  63. data/lib/gdal/utils/translate.rb +72 -0
  64. data/lib/gdal/utils/vector_translate/options.rb +52 -0
  65. data/lib/gdal/utils/vector_translate.rb +132 -0
  66. data/lib/gdal/utils/warp/options.rb +52 -0
  67. data/lib/gdal/utils/warp.rb +118 -0
  68. data/lib/gdal/utils.rb +22 -0
  69. data/lib/gdal/warp_options.rb +11 -2
  70. data/lib/gdal.rb +1 -0
  71. data/lib/ogr/extensions/layer/extensions.rb +1 -1
  72. data/lib/ogr/extensions/spatial_reference/extensions.rb +4 -4
  73. data/lib/ogr/geometry.rb +1 -6
  74. data/lib/ogr/layer.rb +1 -1
  75. data/lib/ogr/spatial_reference.rb +27 -2
  76. metadata +32 -5
  77. data/.ruby-version +0 -1
  78. data/lib/gdal/grid_algorithms/data_metrics_base.rb +0 -14
@@ -0,0 +1,984 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "ffi"
4
+ require_relative "../../ext/ffi_library_function_checks"
5
+
6
+ module FFI
7
+ module GDAL
8
+ module Utils
9
+ extend FFI::Library
10
+ ffi_lib [::FFI::CURRENT_PROCESS, ::FFI::GDAL.gdal_library_path]
11
+
12
+ # -----------------------------------------------------------------------
13
+ # Typedefs
14
+ # -----------------------------------------------------------------------
15
+
16
+ ##############################################
17
+ ### Common arguments for utility functions ###
18
+ ##############################################
19
+
20
+ # GDALDatasetH -- the dataset handle (typical result of GDAL Utils).
21
+ typedef FFI::GDAL::GDAL.find_type(:GDALDatasetH), :GDALDatasetH
22
+
23
+ # papszArgv -- NULL terminated list of options (potentially including filename and open options too), or NULL.
24
+ # The accepted options are the ones of the according gdal* utility.
25
+ typedef :pointer, :papszArgv
26
+
27
+ # psOptionsForBinary -- (output) may be NULL (and should generally be NULL).
28
+ # NOTE: We don't use it in the Ruby-fied API. Keeping for documentation purposes.
29
+ typedef :pointer, :psOptionsForBinary
30
+
31
+ # pszDest -- the destination dataset path.
32
+ typedef :string, :pszDest
33
+
34
+ # hDataset -- the dataset handle.
35
+ typedef :GDALDatasetH, :hDataset
36
+
37
+ # hSrcDataset -- the source dataset handle
38
+ typedef :GDALDatasetH, :hSrcDataset
39
+
40
+ # hDstDS -- the destination dataset handle.
41
+ typedef :GDALDatasetH, :hDstDS
42
+
43
+ # nSrcCount -- the number of input datasets.
44
+ typedef :int, :nSrcCount
45
+
46
+ # pahSrcDS -- the list of input datasets.
47
+ typedef :pointer, :pahSrcDS
48
+
49
+ # pszProcessing -- the processing to apply
50
+ # (one of "hillshade", "slope", "aspect", "color-relief", "TRI", "TPI", "Roughness")
51
+ # NOTE: Only used by GDALDEMProcessing.
52
+ typedef :string, :pszProcessing
53
+
54
+ # pszColorFilename -- color file (mandatory for "color-relief" processing, should be NULL otherwise)
55
+ # NOTE: Only used by GDALDEMProcessing.
56
+ typedef :string, :pszColorFilename
57
+
58
+ # pbUsageError -- pointer to a integer output variable to store if any usage error has occurred or NULL.
59
+ typedef :pointer, :pbUsageError
60
+
61
+ ########################################
62
+ ### Pointers to GDAL Options Structs ###
63
+ ########################################
64
+
65
+ # https://gdal.org/api/gdal_utils.html#_CPPv415GDALInfoOptions
66
+ typedef :pointer, :GDALInfoOptions
67
+
68
+ # https://gdal.org/api/gdal_utils.html#_CPPv420GDALTranslateOptions
69
+ typedef :pointer, :GDALTranslateOptions
70
+
71
+ # https://gdal.org/api/gdal_utils.html#_CPPv418GDALWarpAppOptions
72
+ typedef :pointer, :GDALWarpAppOptions
73
+
74
+ # # https://gdal.org/api/gdal_utils.html#_CPPv426GDALVectorTranslateOptions
75
+ typedef :pointer, :GDALVectorTranslateOptions
76
+
77
+ # # https://gdal.org/api/gdal_utils.html#_CPPv424GDALDEMProcessingOptions
78
+ typedef :pointer, :GDALDEMProcessingOptions
79
+
80
+ # # https://gdal.org/api/gdal_utils.html#_CPPv420GDALNearblackOptions
81
+ typedef :pointer, :GDALNearblackOptions
82
+
83
+ # # https://gdal.org/api/gdal_utils.html#_CPPv415GDALGridOptions
84
+ typedef :pointer, :GDALGridOptions
85
+
86
+ # # https://gdal.org/api/gdal_utils.html#_CPPv420GDALRasterizeOptions
87
+ typedef :pointer, :GDALRasterizeOptions
88
+
89
+ # # https://gdal.org/api/gdal_utils.html#_CPPv420GDALFootprintOptions
90
+ typedef :pointer, :GDALFootprintOptions
91
+
92
+ # # https://gdal.org/api/gdal_utils.html#_CPPv419GDALBuildVRTOptions
93
+ typedef :pointer, :GDALBuildVRTOptions
94
+
95
+ # https://gdal.org/api/gdal_utils.html#_CPPv423GDALMultiDimInfoOptions
96
+ typedef :pointer, :GDALMultiDimInfoOptions
97
+
98
+ # https://gdal.org/api/gdal_utils.html#_CPPv428GDALMultiDimTranslateOptions
99
+ typedef :pointer, :GDALMultiDimTranslateOptions
100
+
101
+ # https://gdal.org/api/gdal_utils.html#_CPPv421GDALVectorInfoOptions
102
+ typedef :pointer, :GDALVectorInfoOptions
103
+
104
+ # https://gdal.org/api/gdal_utils.html#_CPPv420GDALTileIndexOptions
105
+ typedef :pointer, :GDALTileIndexOptions
106
+
107
+ # -----------------------------------------------------------------------
108
+ # Functions
109
+ # -----------------------------------------------------------------------
110
+
111
+ ################
112
+ ### GDALInfo ###
113
+ ################
114
+
115
+ # https://gdal.org/api/gdal_utils.html#_CPPv418GDALInfoOptionsNewPPcP24GDALInfoOptionsForBinary
116
+ # GDALInfoOptions *GDALInfoOptionsNew(char **papszArgv, GDALInfoOptionsForBinary *psOptionsForBinary)
117
+ #
118
+ # Allocates a GDALInfoOptions struct.
119
+ #
120
+ # Since
121
+ # GDAL 2.1
122
+ # Parameters:
123
+ # papszArgv -- NULL terminated list of options (potentially including filename and open options too), or NULL.
124
+ # The accepted options are the ones of the gdalinfo utility.
125
+ # psOptionsForBinary -- (output) may be NULL (and should generally be NULL), otherwise (gdalinfo_bin.cpp
126
+ # use case) must be allocated with GDALInfoOptionsForBinaryNew() prior to this function.
127
+ # Will be filled with potentially present filename, open options, subdataset number...
128
+ # Returns:
129
+ # pointer to the allocated GDALInfoOptions struct. Must be freed with GDALInfoOptionsFree().
130
+ attach_function :GDALInfoOptionsNew, %i[papszArgv psOptionsForBinary], :GDALInfoOptions
131
+
132
+ # https://gdal.org/api/gdal_utils.html#_CPPv419GDALInfoOptionsFreeP15GDALInfoOptions
133
+ # void GDALInfoOptionsFree(GDALInfoOptions *psOptions)
134
+ #
135
+ # Frees the GDALInfoOptions struct.
136
+ #
137
+ # Since
138
+ # GDAL 2.1
139
+ # Parameters:
140
+ # psOptions -- the options struct for GDALInfo().
141
+ attach_function :GDALInfoOptionsFree, [:GDALInfoOptions], :void
142
+
143
+ # https://gdal.org/api/gdal_utils.html#_CPPv48GDALInfo12GDALDatasetHPK15GDALInfoOptions
144
+ # char *GDALInfo(GDALDatasetH hDataset, const GDALInfoOptions *psOptions)
145
+ #
146
+ # Lists various information about a GDAL supported raster dataset.
147
+ # This is the equivalent of the gdalinfo utility.
148
+ # GDALInfoOptions* must be allocated and freed with GDALInfoOptionsNew() and GDALInfoOptionsFree() respectively.
149
+ #
150
+ # Since
151
+ # GDAL 2.1
152
+ # Parameters:
153
+ # hDataset -- the dataset handle.
154
+ # psOptions -- the options structure returned by GDALInfoOptionsNew() or NULL.
155
+ # Returns:
156
+ # string corresponding to the information about the raster dataset (must be freed with CPLFree()), or NULL
157
+ # in case of error.
158
+ attach_function :GDALInfo,
159
+ %i[hDataset GDALInfoOptions],
160
+ :strptr
161
+
162
+ #####################
163
+ ### GDALTranslate ###
164
+ #####################
165
+
166
+ # https://gdal.org/api/gdal_utils.html#_CPPv423GDALTranslateOptionsNewPPcP29GDALTranslateOptionsForBinary
167
+ # GDALTranslateOptions *GDALTranslateOptionsNew(
168
+ # char **papszArgv,
169
+ # GDALTranslateOptionsForBinary *psOptionsForBinary
170
+ # )
171
+ #
172
+ # Allocates a GDALTranslateOptions struct.
173
+ #
174
+ # Since
175
+ # GDAL 2.1
176
+ # Parameters:
177
+ # papszArgv -- NULL terminated list of options (potentially including filename and open options too), or NULL.
178
+ # The accepted options are the ones of the gdal_translate utility.
179
+ # psOptionsForBinary -- (output) may be NULL (and should generally be NULL), otherwise (gdal_translate_bin.cpp
180
+ # use case) must be allocated with GDALTranslateOptionsForBinaryNew() prior to this function.
181
+ # Will be filled with potentially present filename, open options,...
182
+ # Returns:
183
+ # pointer to the allocated GDALTranslateOptions struct. Must be freed with GDALTranslateOptionsFree().
184
+ attach_function :GDALTranslateOptionsNew, %i[papszArgv psOptionsForBinary], :GDALTranslateOptions
185
+
186
+ # https://gdal.org/api/gdal_utils.html#_CPPv424GDALTranslateOptionsFreeP20GDALTranslateOptions
187
+ # void GDALTranslateOptionsFree(GDALTranslateOptions *psOptions)
188
+ #
189
+ # Frees the GDALTranslateOptions struct.
190
+ #
191
+ # Since
192
+ # GDAL 2.1
193
+ # Parameters:
194
+ # psOptions -- the options struct for GDALTranslate().
195
+ attach_function :GDALTranslateOptionsFree, [:GDALTranslateOptions], :void
196
+
197
+ # https://gdal.org/api/gdal_utils.html#_CPPv413GDALTranslatePKc12GDALDatasetHPK20GDALTranslateOptionsPi
198
+ # GDALDatasetH GDALTranslate(
199
+ # const char *pszDestFilename,
200
+ # GDALDatasetH hSrcDataset,
201
+ # const GDALTranslateOptions *psOptions,
202
+ # int *pbUsageError
203
+ # )
204
+ #
205
+ # Converts raster data between different formats.
206
+ # This is the equivalent of the gdal_translate utility.
207
+ # GDALTranslateOptions* must be allocated and freed with GDALTranslateOptionsNew() and
208
+ # GDALTranslateOptionsFree() respectively.
209
+ #
210
+ # Since
211
+ # GDAL 2.1
212
+ # Parameters:
213
+ # pszDest -- the destination dataset path.
214
+ # hSrcDataset -- the source dataset handle.
215
+ # psOptionsIn -- the options struct returned by GDALTranslateOptionsNew() or NULL.
216
+ # pbUsageError -- pointer to a integer output variable to store if any usage error has occurred or NULL.
217
+ # Returns:
218
+ # the output dataset (new dataset that must be closed using GDALClose()) or NULL in case of error.
219
+ # If the output format is a VRT dataset, then the returned VRT dataset has a reference to hSrcDataset.
220
+ # Hence hSrcDataset should be closed after the returned dataset if using GDALClose().
221
+ # A safer alternative is to use GDALReleaseDataset() instead of using GDALClose(),
222
+ # in which case you can close datasets in any order.
223
+ attach_function :GDALTranslate,
224
+ %i[pszDest hSrcDataset GDALTranslateOptions pbUsageError],
225
+ :GDALDatasetH
226
+
227
+ ################
228
+ ### GDALWarp ###
229
+ ################
230
+
231
+ # https://gdal.org/api/gdal_utils.html#_CPPv421GDALWarpAppOptionsNewPPcP27GDALWarpAppOptionsForBinary
232
+ # GDALWarpAppOptions *GDALWarpAppOptionsNew(char **papszArgv, GDALWarpAppOptionsForBinary *psOptionsForBinary)
233
+ #
234
+ # Allocates a GDALWarpAppOptions struct.
235
+ #
236
+ # Since
237
+ # GDAL 2.1
238
+ # Parameters:
239
+ # papszArgv -- NULL terminated list of options (potentially including filename and open options too), or NULL.
240
+ # The accepted options are the ones of the gdalwarp utility.
241
+ # psOptionsForBinary -- (output) may be NULL (and should generally be NULL), otherwise (gdal_translate_bin.cpp
242
+ # use case) must be allocated with GDALWarpAppOptionsForBinaryNew() prior to this function.
243
+ # Will be filled with potentially present filename, open options,...
244
+ # Returns:
245
+ # pointer to the allocated GDALWarpAppOptions struct. Must be freed with GDALWarpAppOptionsFree().
246
+ attach_function :GDALWarpAppOptionsNew, %i[papszArgv psOptionsForBinary], :GDALWarpAppOptions
247
+
248
+ # https://gdal.org/api/gdal_utils.html#_CPPv422GDALWarpAppOptionsFreeP18GDALWarpAppOptions
249
+ # void GDALWarpAppOptionsFree(GDALWarpAppOptions *psOptions)
250
+ #
251
+ # Frees the GDALWarpAppOptions struct.
252
+ #
253
+ # Since
254
+ # GDAL 2.1
255
+ # Parameters:
256
+ # psOptions -- the options struct for GDALWarp().
257
+ attach_function :GDALWarpAppOptionsFree, [:GDALWarpAppOptions], :void
258
+
259
+ # https://gdal.org/api/gdal_utils.html#_CPPv48GDALWarpPKc12GDALDatasetHiP12GDALDatasetHPK18GDALWarpAppOptionsPi
260
+ # GDALDatasetH GDALWarp(
261
+ # const char *pszDest,
262
+ # GDALDatasetH hDstDS,
263
+ # int nSrcCount,
264
+ # GDALDatasetH *pahSrcDS,
265
+ # const GDALWarpAppOptions *psOptions,
266
+ # int *pbUsageError
267
+ # )
268
+ #
269
+ # Image reprojection and warping function.
270
+ # This is the equivalent of the gdalwarp utility.
271
+ # GDALWarpAppOptions* must be allocated and freed with GDALWarpAppOptionsNew() and
272
+ # GDALWarpAppOptionsFree() respectively. pszDest and hDstDS cannot be used at the same time.
273
+ #
274
+ # Since
275
+ # GDAL 2.1
276
+ # Parameters:
277
+ # pszDest -- the destination dataset path or NULL.
278
+ # hDstDS -- the destination dataset or NULL.
279
+ # nSrcCount -- the number of input datasets.
280
+ # pahSrcDS -- the list of input datasets. For practical purposes, the type of this argument should be
281
+ # considered as "const GDALDatasetH* const*", that is neither the array nor its values are mutated by
282
+ # this function.
283
+ # psOptionsIn -- the options struct returned by GDALWarpAppOptionsNew() or NULL.
284
+ # pbUsageError -- pointer to a integer output variable to store if any usage error has occurred, or NULL.
285
+ # Returns:
286
+ # the output dataset (new dataset that must be closed using GDALClose(), or hDstDS if not NULL) or NULL
287
+ # in case of error. If the output format is a VRT dataset, then the returned VRT dataset has
288
+ # a reference to pahSrcDS[0]. Hence pahSrcDS[0] should be closed after the returned dataset if
289
+ # using GDALClose(). A safer alternative is to use GDALReleaseDataset() instead of using GDALClose(), in
290
+ # which case you can close datasets in any order.
291
+ attach_function :GDALWarp,
292
+ %i[pszDest hDstDS nSrcCount pahSrcDS GDALWarpAppOptions pbUsageError],
293
+ :GDALDatasetH
294
+
295
+ ###########################
296
+ ### GDALVectorTranslate ###
297
+ ###########################
298
+
299
+ # https://gdal.org/api/gdal_utils.html#_CPPv429GDALVectorTranslateOptionsNewPPcP35GDALVectorTranslateOptionsForBinary
300
+ # GDALVectorTranslateOptions *GDALVectorTranslateOptionsNew(
301
+ # char **papszArgv,
302
+ # GDALVectorTranslateOptionsForBinary *psOptionsForBinary
303
+ # )
304
+ #
305
+ # Allocates a GDALVectorTranslateOptions struct.
306
+ #
307
+ # Since
308
+ # GDAL 2.1
309
+ # Parameters:
310
+ # papszArgv -- NULL terminated list of options (potentially including filename and open options too), or NULL.
311
+ # The accepted options are the ones of the ogr2ogr utility.
312
+ # psOptionsForBinary -- (output) may be NULL (and should generally be NULL), otherwise (gdal_translate_bin.cpp
313
+ # use case) must be allocated with GDALVectorTranslateOptionsForBinaryNew() prior to this function.
314
+ # Will be filled with potentially present filename, open options,...
315
+ # Returns:
316
+ # pointer to the allocated GDALVectorTranslateOptions struct. Must be freed with
317
+ # GDALVectorTranslateOptionsFree().
318
+ attach_function :GDALVectorTranslateOptionsNew, %i[papszArgv psOptionsForBinary], :GDALVectorTranslateOptions
319
+
320
+ # https://gdal.org/api/gdal_utils.html#_CPPv430GDALVectorTranslateOptionsFreeP26GDALVectorTranslateOptions
321
+ # void GDALVectorTranslateOptionsFree(GDALVectorTranslateOptions *psOptions)
322
+ #
323
+ # Frees the GDALVectorTranslateOptions struct.
324
+ #
325
+ # Since
326
+ # GDAL 2.1
327
+ # Parameters:
328
+ # psOptions -- the options struct for GDALVectorTranslate().
329
+ attach_function :GDALVectorTranslateOptionsFree, [:GDALVectorTranslateOptions], :void
330
+
331
+ # https://gdal.org/api/gdal_utils.html#_CPPv419GDALVectorTranslatePKc12GDALDatasetHiP12GDALDatasetHPK26GDALVectorTranslateOptionsPi
332
+ # GDALDatasetH GDALVectorTranslate(
333
+ # const char *pszDest,
334
+ # GDALDatasetH hDstDS,
335
+ # int nSrcCount,
336
+ # GDALDatasetH *pahSrcDS,
337
+ # const GDALVectorTranslateOptions *psOptions,
338
+ # int *pbUsageError
339
+ # )
340
+ #
341
+ # Converts vector data between file formats.
342
+ # This is the equivalent of the ogr2ogr utility.
343
+ # GDALVectorTranslateOptions* must be allocated and freed with GDALVectorTranslateOptionsNew() and
344
+ # GDALVectorTranslateOptionsFree() respectively. pszDest and hDstDS cannot be used at the same time.
345
+ #
346
+ # Since
347
+ # GDAL 2.1
348
+ # Parameters:
349
+ # pszDest -- the destination dataset path or NULL.
350
+ # hDstDS -- the destination dataset or NULL.
351
+ # nSrcCount -- the number of input datasets (only 1 supported currently)
352
+ # pahSrcDS -- the list of input datasets.
353
+ # psOptionsIn -- the options struct returned by GDALVectorTranslateOptionsNew() or NULL.
354
+ # pbUsageError -- pointer to a integer output variable to store if any usage error has occurred, or NULL.
355
+ # Returns:
356
+ # the output dataset (new dataset that must be closed using GDALClose(), or hDstDS is not NULL) or NULL
357
+ # in case of error.
358
+ attach_function :GDALVectorTranslate,
359
+ %i[pszDest hDstDS nSrcCount pahSrcDS GDALVectorTranslateOptions pbUsageError],
360
+ :GDALDatasetH
361
+
362
+ #########################
363
+ ### GDALDEMProcessing ###
364
+ #########################
365
+
366
+ # https://gdal.org/api/gdal_utils.html#_CPPv427GDALDEMProcessingOptionsNewPPcP33GDALDEMProcessingOptionsForBinary
367
+ # GDALDEMProcessingOptions *GDALDEMProcessingOptionsNew(
368
+ # char **papszArgv,
369
+ # GDALDEMProcessingOptionsForBinary *psOptionsForBinary
370
+ # )
371
+ #
372
+ # Allocates a GDALDEMProcessingOptions struct.
373
+ #
374
+ # Since
375
+ # GDAL 2.1
376
+ # Parameters:
377
+ # papszArgv -- NULL terminated list of options (potentially including filename and open options too), or NULL.
378
+ # The accepted options are the ones of the gdaldem utility.
379
+ # psOptionsForBinary -- (output) may be NULL (and should generally be NULL), otherwise (gdal_translate_bin.cpp
380
+ # use case) must be allocated with GDALDEMProcessingOptionsForBinaryNew() prior to this function.
381
+ # Will be filled with potentially present filename, open options,...
382
+ # Returns:
383
+ # pointer to the allocated GDALDEMProcessingOptions struct. Must be freed with GDALDEMProcessingOptionsFree().
384
+ attach_function :GDALDEMProcessingOptionsNew, %i[papszArgv psOptionsForBinary], :GDALDEMProcessingOptions
385
+
386
+ # https://gdal.org/api/gdal_utils.html#_CPPv428GDALDEMProcessingOptionsFreeP24GDALDEMProcessingOptions
387
+ # void GDALDEMProcessingOptionsFree(GDALDEMProcessingOptions *psOptions)
388
+ #
389
+ # Frees the GDALDEMProcessingOptions struct.
390
+ #
391
+ # Since
392
+ # GDAL 2.1
393
+ # Parameters:
394
+ # psOptions -- the options struct for GDALDEMProcessing().
395
+ attach_function :GDALDEMProcessingOptionsFree, [:GDALDEMProcessingOptions], :void
396
+
397
+ # https://gdal.org/api/gdal_utils.html#_CPPv417GDALDEMProcessingPKc12GDALDatasetHPKcPKcPK24GDALDEMProcessingOptionsPi
398
+ # GDALDatasetH GDALDEMProcessing(
399
+ # const char *pszDestFilename,
400
+ # GDALDatasetH hSrcDataset,
401
+ # const char *pszProcessing,
402
+ # const char *pszColorFilename,
403
+ # const GDALDEMProcessingOptions *psOptions,
404
+ # int *pbUsageError
405
+ # )
406
+ #
407
+ # Apply a DEM processing.
408
+ # This is the equivalent of the gdaldem utility.
409
+ # GDALDEMProcessingOptions* must be allocated and freed with GDALDEMProcessingOptionsNew() and
410
+ # GDALDEMProcessingOptionsFree() respectively.
411
+ #
412
+ # Since
413
+ # GDAL 2.1
414
+ # Parameters:
415
+ # pszDest -- the destination dataset path.
416
+ # hSrcDataset -- the source dataset handle.
417
+ # pszProcessing -- the processing to apply (one of "hillshade", "slope", "aspect", "color-relief", "TRI",
418
+ # "TPI", "Roughness")
419
+ # pszColorFilename -- color file (mandatory for "color-relief" processing, should be NULL otherwise)
420
+ # psOptionsIn -- the options struct returned by GDALDEMProcessingOptionsNew() or NULL.
421
+ # pbUsageError -- pointer to a integer output variable to store if any usage error has occurred or NULL.
422
+ # Returns:
423
+ # the output dataset (new dataset that must be closed using GDALClose()) or NULL in case of error.
424
+ attach_function :GDALDEMProcessing,
425
+ %i[pszDest hSrcDataset pszProcessing pszColorFilename GDALDEMProcessingOptions pbUsageError],
426
+ :GDALDatasetH
427
+
428
+ #####################
429
+ ### GDALNearblack ###
430
+ #####################
431
+
432
+ # https://gdal.org/api/gdal_utils.html#_CPPv423GDALNearblackOptionsNewPPcP29GDALNearblackOptionsForBinary
433
+ # GDALNearblackOptions *GDALNearblackOptionsNew(
434
+ # char **papszArgv,
435
+ # GDALNearblackOptionsForBinary *psOptionsForBinary
436
+ # )
437
+ #
438
+ # Allocates a GDALNearblackOptions struct.
439
+ #
440
+ # Since
441
+ # GDAL 2.1
442
+ # Parameters:
443
+ # papszArgv -- NULL terminated list of options (potentially including filename and open options too), or NULL.
444
+ # The accepted options are the ones of the nearblack utility.
445
+ # psOptionsForBinary -- (output) may be NULL (and should generally be NULL), otherwise (gdal_translate_bin.cpp
446
+ # use case) must be allocated with GDALNearblackOptionsForBinaryNew() prior to this function.
447
+ # Will be filled with potentially present filename, open options,...
448
+ # Returns:
449
+ # pointer to the allocated GDALNearblackOptions struct. Must be freed with GDALNearblackOptionsFree().
450
+ attach_function :GDALNearblackOptionsNew, %i[papszArgv psOptionsForBinary], :GDALNearblackOptions
451
+
452
+ # https://gdal.org/api/gdal_utils.html#_CPPv424GDALNearblackOptionsFreeP20GDALNearblackOptions
453
+ # void GDALNearblackOptionsFree(GDALNearblackOptions *psOptions)
454
+ #
455
+ # Frees the GDALNearblackOptions struct.
456
+ #
457
+ # Since
458
+ # GDAL 2.1
459
+ # Parameters:
460
+ # psOptions -- the options struct for GDALNearblack().
461
+ attach_function :GDALNearblackOptionsFree, [:GDALNearblackOptions], :void
462
+
463
+ # https://gdal.org/api/gdal_utils.html#_CPPv413GDALNearblackPKc12GDALDatasetH12GDALDatasetHPK20GDALNearblackOptionsPi
464
+ # GDALDatasetH GDALNearblack(
465
+ # const char *pszDest,
466
+ # GDALDatasetH hDstDS,
467
+ # GDALDatasetH hSrcDS,
468
+ # const GDALNearblackOptions *psOptions,
469
+ # int *pbUsageError
470
+ # )
471
+ #
472
+ # Convert nearly black/white borders to exact value.
473
+ # This is the equivalent of the nearblack utility.
474
+ # GDALNearblackOptions* must be allocated and freed with GDALNearblackOptionsNew()
475
+ # and GDALNearblackOptionsFree() respectively. pszDest and hDstDS cannot be used at the same time.
476
+ # In-place update (i.e. hDstDS == hSrcDataset) is possible for formats that support it,
477
+ # and if the dataset is opened in update mode.
478
+ #
479
+ # Since
480
+ # GDAL 2.1
481
+ # Parameters:
482
+ # pszDest -- the destination dataset path or NULL.
483
+ # hDstDS -- the destination dataset or NULL. Might be equal to hSrcDataset.
484
+ # hSrcDataset -- the source dataset handle.
485
+ # psOptionsIn -- the options struct returned by GDALNearblackOptionsNew() or NULL.
486
+ # pbUsageError -- pointer to a integer output variable to store if any usage error has occurred or NULL.
487
+ # Returns:
488
+ # the output dataset (new dataset that must be closed using GDALClose(), or hDstDS when it is not NULL) or NULL
489
+ # in case of error.
490
+ attach_function :GDALNearblack,
491
+ %i[pszDest hDstDS hSrcDataset GDALNearblackOptions pbUsageError],
492
+ :GDALDatasetH
493
+
494
+ ################
495
+ ### GDALGrid ###
496
+ ################
497
+
498
+ # https://gdal.org/api/gdal_utils.html#_CPPv418GDALGridOptionsNewPPcP24GDALGridOptionsForBinary
499
+ # GDALGridOptions *GDALGridOptionsNew(char **papszArgv, GDALGridOptionsForBinary *psOptionsForBinary)
500
+ #
501
+ # Allocates a GDALGridOptions struct.
502
+ #
503
+ # Since
504
+ # GDAL 2.1
505
+ # Parameters:
506
+ # papszArgv -- NULL terminated list of options (potentially including filename and open options too), or NULL.
507
+ # The accepted options are the ones of the gdal_translate utility.
508
+ # psOptionsForBinary -- (output) may be NULL (and should generally be NULL), otherwise (gdal_translate_bin.cpp
509
+ # use case) must be allocated with GDALGridOptionsForBinaryNew() prior to this function.
510
+ # Will be filled with potentially present filename, open options,...
511
+ # Returns:
512
+ # pointer to the allocated GDALGridOptions struct. Must be freed with GDALGridOptionsFree().
513
+ attach_function :GDALGridOptionsNew, %i[papszArgv psOptionsForBinary], :GDALGridOptions
514
+
515
+ # https://gdal.org/api/gdal_utils.html#_CPPv419GDALGridOptionsFreeP15GDALGridOptions
516
+ # void GDALGridOptionsFree(GDALGridOptions *psOptions)
517
+ #
518
+ # Frees the GDALGridOptions struct.
519
+ #
520
+ # Since
521
+ # GDAL 2.1
522
+ # Parameters:
523
+ # psOptions -- the options struct for GDALGrid().
524
+ attach_function :GDALGridOptionsFree, [:GDALGridOptions], :void
525
+
526
+ # https://gdal.org/api/gdal_utils.html#_CPPv48GDALGridPKc12GDALDatasetHPK15GDALGridOptionsPi
527
+ # GDALDatasetH GDALGrid(
528
+ # const char *pszDest,
529
+ # GDALDatasetH hSrcDS,
530
+ # const GDALGridOptions *psOptions,
531
+ # int *pbUsageError
532
+ # )
533
+ #
534
+ # Create raster from the scattered data.
535
+ # This is the equivalent of the gdal_grid utility.
536
+ # GDALGridOptions* must be allocated and freed with GDALGridOptionsNew() and GDALGridOptionsFree() respectively.
537
+ #
538
+ # Since
539
+ # GDAL 2.1
540
+ # Parameters:
541
+ # pszDest -- the destination dataset path.
542
+ # hSrcDataset -- the source dataset handle.
543
+ # psOptionsIn -- the options struct returned by GDALGridOptionsNew() or NULL.
544
+ # pbUsageError -- pointer to a integer output variable to store if any usage error has occurred or NULL.
545
+ # Returns:
546
+ # the output dataset (new dataset that must be closed using GDALClose()) or NULL in case of error.
547
+ attach_function :GDALGrid,
548
+ %i[pszDest hSrcDataset GDALGridOptions pbUsageError],
549
+ :GDALDatasetH
550
+
551
+ #####################
552
+ ### GDALRasterize ###
553
+ #####################
554
+
555
+ # https://gdal.org/api/gdal_utils.html#_CPPv423GDALRasterizeOptionsNewPPcP29GDALRasterizeOptionsForBinary
556
+ # GDALRasterizeOptions *GDALRasterizeOptionsNew(
557
+ # char **papszArgv,
558
+ # GDALRasterizeOptionsForBinary *psOptionsForBinary
559
+ # )
560
+ #
561
+ # Allocates a GDALRasterizeOptions struct.
562
+ #
563
+ # Since
564
+ # GDAL 2.1
565
+ # Parameters:
566
+ # papszArgv -- NULL terminated list of options (potentially including filename and open options too), or NULL.
567
+ # The accepted options are the ones of the gdal_rasterize utility.
568
+ # psOptionsForBinary -- (output) may be NULL (and should generally be NULL), otherwise (gdal_translate_bin.cpp
569
+ # use case) must be allocated with GDALRasterizeOptionsForBinaryNew() prior to this function.
570
+ # Will be filled with potentially present filename, open options,...
571
+ # Returns:
572
+ # pointer to the allocated GDALRasterizeOptions struct. Must be freed with GDALRasterizeOptionsFree().
573
+ attach_function :GDALRasterizeOptionsNew, %i[papszArgv psOptionsForBinary], :GDALRasterizeOptions
574
+
575
+ # https://gdal.org/api/gdal_utils.html#_CPPv424GDALRasterizeOptionsFreeP20GDALRasterizeOptions
576
+ # void GDALRasterizeOptionsFree(GDALRasterizeOptions *psOptions)
577
+ #
578
+ # Frees the GDALRasterizeOptions struct.
579
+ #
580
+ # Since
581
+ # GDAL 2.1
582
+ # Parameters:
583
+ # psOptions -- the options struct for GDALRasterize().
584
+ attach_function :GDALRasterizeOptionsFree, [:GDALRasterizeOptions], :void
585
+
586
+ # https://gdal.org/api/gdal_utils.html#_CPPv413GDALRasterizePKc12GDALDatasetH12GDALDatasetHPK20GDALRasterizeOptionsPi
587
+ # GDALDatasetH GDALRasterize(
588
+ # const char *pszDest,
589
+ # GDALDatasetH hDstDS,
590
+ # GDALDatasetH hSrcDS,
591
+ # const GDALRasterizeOptions *psOptions,
592
+ # int *pbUsageError
593
+ # )
594
+ #
595
+ # Burns vector geometries into a raster.
596
+ # This is the equivalent of the gdal_rasterize utility.
597
+ # GDALRasterizeOptions* must be allocated and freed with GDALRasterizeOptionsNew() and
598
+ # GDALRasterizeOptionsFree() respectively. pszDest and hDstDS cannot be used at the same time.
599
+ #
600
+ # Since
601
+ # GDAL 2.1
602
+ # Parameters:
603
+ # pszDest -- the destination dataset path or NULL.
604
+ # hDstDS -- the destination dataset or NULL.
605
+ # hSrcDataset -- the source dataset handle.
606
+ # psOptionsIn -- the options struct returned by GDALRasterizeOptionsNew() or NULL.
607
+ # pbUsageError -- pointer to a integer output variable to store if any usage error has occurred or NULL.
608
+ # Returns:
609
+ # the output dataset (new dataset that must be closed using GDALClose(), or hDstDS is not NULL) or NULL
610
+ # in case of error.
611
+ attach_function :GDALRasterize,
612
+ %i[pszDest hDstDS hSrcDataset GDALRasterizeOptions pbUsageError],
613
+ :GDALDatasetH
614
+
615
+ #####################
616
+ ### GDALFootprint ###
617
+ #####################
618
+
619
+ # https://gdal.org/api/gdal_utils.html#_CPPv423GDALFootprintOptionsNewPPcP29GDALFootprintOptionsForBinary
620
+ # GDALFootprintOptions *GDALFootprintOptionsNew(
621
+ # char **papszArgv,
622
+ # GDALFootprintOptionsForBinary *psOptionsForBinary
623
+ # )
624
+ #
625
+ # Allocates a GDALFootprintOptions struct.
626
+ #
627
+ # Since
628
+ # GDAL 3.8
629
+ # Parameters:
630
+ # papszArgv -- NULL terminated list of options (potentially including filename and open options too), or NULL.
631
+ # The accepted options are the ones of the gdal_rasterize utility.
632
+ # psOptionsForBinary -- (output) may be NULL (and should generally be NULL), otherwise (gdal_translate_bin.cpp
633
+ # use case) must be allocated with GDALFootprintOptionsForBinaryNew() prior to this function.
634
+ # Will be filled with potentially present filename, open options,...
635
+ # Returns:
636
+ # pointer to the allocated GDALFootprintOptions struct. Must be freed with GDALFootprintOptionsFree().
637
+ attach_function :GDALFootprintOptionsNew, %i[papszArgv psOptionsForBinary], :GDALFootprintOptions
638
+
639
+ # https://gdal.org/api/gdal_utils.html#_CPPv424GDALFootprintOptionsFreeP20GDALFootprintOptions
640
+ # void GDALFootprintOptionsFree(GDALFootprintOptions *psOptions)
641
+ #
642
+ # Frees the GDALFootprintOptions struct.
643
+ #
644
+ # Since
645
+ # GDAL 3.8
646
+ # Parameters:
647
+ # psOptions -- the options struct for GDALFootprint().
648
+ attach_function :GDALFootprintOptionsFree, [:GDALFootprintOptions], :void
649
+
650
+ # https://gdal.org/api/gdal_utils.html#_CPPv413GDALFootprintPKc12GDALDatasetH12GDALDatasetHPK20GDALFootprintOptionsPi
651
+ # GDALDatasetH GDALFootprint(
652
+ # const char *pszDest,
653
+ # GDALDatasetH hDstDS,
654
+ # GDALDatasetH hSrcDS,
655
+ # const GDALFootprintOptions *psOptions,
656
+ # int *pbUsageError
657
+ # )
658
+ #
659
+ # Computes the footprint of a raster.
660
+ # This is the equivalent of the gdal_footprint utility.
661
+ # GDALFootprintOptions* must be allocated and freed with GDALFootprintOptionsNew() and
662
+ # GDALFootprintOptionsFree() respectively. pszDest and hDstDS cannot be used at the same time.
663
+ #
664
+ # Since
665
+ # GDAL 3.8
666
+ # Parameters:
667
+ # pszDest -- the vector destination dataset path or NULL.
668
+ # hDstDS -- the vector destination dataset or NULL.
669
+ # hSrcDataset -- the raster source dataset handle.
670
+ # psOptionsIn -- the options struct returned by GDALFootprintOptionsNew() or NULL.
671
+ # pbUsageError -- pointer to a integer output variable to store if any usage error has occurred or NULL.
672
+ # Returns:
673
+ # the output dataset (new dataset that must be closed using GDALClose(), or hDstDS is not NULL) or NULL
674
+ # in case of error.
675
+ attach_function :GDALFootprint,
676
+ %i[pszDest hDstDS hSrcDataset GDALFootprintOptions pbUsageError],
677
+ :GDALDatasetH
678
+
679
+ ####################
680
+ ### GDALBuildVRT ###
681
+ ####################
682
+
683
+ # https://gdal.org/api/gdal_utils.html#_CPPv422GDALBuildVRTOptionsNewPPcP28GDALBuildVRTOptionsForBinary
684
+ # GDALBuildVRTOptions *GDALBuildVRTOptionsNew(char **papszArgv, GDALBuildVRTOptionsForBinary *psOptionsForBinary)
685
+ #
686
+ # Allocates a GDALBuildVRTOptions struct.
687
+ #
688
+ # Since
689
+ # GDAL 2.1
690
+ # Parameters:
691
+ # papszArgv -- NULL terminated list of options (potentially including filename and open options too), or NULL.
692
+ # The accepted options are the ones of the gdalbuildvrt utility.
693
+ # psOptionsForBinary -- (output) may be NULL (and should generally be NULL), otherwise (gdalbuildvrt_bin.cpp
694
+ # use case) must be allocated with GDALBuildVRTOptionsForBinaryNew() prior to this function.
695
+ # Will be filled with potentially present filename, open options,...
696
+ # Returns:
697
+ # pointer to the allocated GDALBuildVRTOptions struct. Must be freed with GDALBuildVRTOptionsFree().
698
+ attach_function :GDALBuildVRTOptionsNew, %i[papszArgv psOptionsForBinary], :GDALBuildVRTOptions
699
+
700
+ # https://gdal.org/api/gdal_utils.html#_CPPv423GDALBuildVRTOptionsFreeP19GDALBuildVRTOptions
701
+ # void GDALBuildVRTOptionsFree(GDALBuildVRTOptions *psOptions)
702
+ #
703
+ # Frees the GDALBuildVRTOptions struct.
704
+ #
705
+ # Since
706
+ # GDAL 2.1
707
+ # Parameters:
708
+ # psOptions -- the options struct for GDALBuildVRT().
709
+ attach_function :GDALBuildVRTOptionsFree, [:GDALBuildVRTOptions], :void
710
+
711
+ # https://gdal.org/api/gdal_utils.html#_CPPv412GDALBuildVRTPKciP12GDALDatasetHPPCKcPK19GDALBuildVRTOptionsPi
712
+ # GDALDatasetH GDALBuildVRT(
713
+ # const char *pszDest,
714
+ # int nSrcCount,
715
+ # GDALDatasetH *pahSrcDS,
716
+ # const char *const *papszSrcDSNames,
717
+ # const GDALBuildVRTOptions *psOptions,
718
+ # int *pbUsageError
719
+ # )
720
+ #
721
+ # Build a VRT from a list of datasets.
722
+ # This is the equivalent of the gdalbuildvrt utility.
723
+ # GDALBuildVRTOptions* must be allocated and freed with GDALBuildVRTOptionsNew()
724
+ # and GDALBuildVRTOptionsFree() respectively. pahSrcDS and papszSrcDSNames cannot be used at the same time.
725
+ #
726
+ # Since
727
+ # GDAL 2.1
728
+ # Parameters:
729
+ # pszDest -- the destination dataset path.
730
+ # nSrcCount -- the number of input datasets.
731
+ # pahSrcDS -- the list of input datasets (or NULL, exclusive with papszSrcDSNames).
732
+ # For practical purposes, the type of this argument should be considered as "const GDALDatasetH* const*",
733
+ # that is neither the array nor its values are mutated by this function.
734
+ # papszSrcDSNames -- the list of input dataset names (or NULL, exclusive with pahSrcDS)
735
+ # psOptionsIn -- the options struct returned by GDALBuildVRTOptionsNew() or NULL.
736
+ # pbUsageError -- pointer to a integer output variable to store if any usage error has occurred.
737
+ # Returns:
738
+ # the output dataset (new dataset that must be closed using GDALClose()) or NULL in case of error.
739
+ # If using pahSrcDS, the returned VRT dataset has a reference to each pahSrcDS[] element.
740
+ # Hence pahSrcDS[] elements should be closed after the returned dataset if using GDALClose().
741
+ # A safer alternative is to use GDALReleaseDataset() instead of using GDALClose(), in which case
742
+ # you can close datasets in any order.
743
+ attach_function :GDALBuildVRT,
744
+ %i[pszDest nSrcCount pahSrcDS pointer GDALBuildVRTOptions pbUsageError],
745
+ :GDALDatasetH
746
+
747
+ ########################
748
+ ### GDALMultiDimInfo ###
749
+ ########################
750
+
751
+ # https://gdal.org/api/gdal_utils.html#_CPPv426GDALMultiDimInfoOptionsNewPPcP32GDALMultiDimInfoOptionsForBinary
752
+ # GDALMultiDimInfoOptions *GDALMultiDimInfoOptionsNew(
753
+ # char **papszArgv,
754
+ # GDALMultiDimInfoOptionsForBinary *psOptionsForBinary
755
+ # )
756
+ #
757
+ # Allocates a GDALMultiDimInfoOptions struct.
758
+ #
759
+ # Since
760
+ # GDAL 3.1
761
+ # Parameters:
762
+ # papszArgv -- NULL terminated list of options (potentially including filename and open options too), or NULL.
763
+ # The accepted options are the ones of the gdalmdiminfo utility.
764
+ # psOptionsForBinary -- should be nullptr, unless called from gdalmultidiminfo_bin.cpp
765
+ # Returns:
766
+ # pointer to the allocated GDALMultiDimInfoOptions struct. Must be freed with GDALMultiDimInfoOptionsFree().
767
+ attach_function :GDALMultiDimInfoOptionsNew, %i[papszArgv psOptionsForBinary], :GDALMultiDimInfoOptions
768
+
769
+ # https://gdal.org/api/gdal_utils.html#_CPPv427GDALMultiDimInfoOptionsFreeP23GDALMultiDimInfoOptions
770
+ # void GDALMultiDimInfoOptionsFree(GDALMultiDimInfoOptions *psOptions)
771
+ #
772
+ # Frees the GDALMultiDimInfoOptions struct.
773
+ #
774
+ # Since
775
+ # GDAL 3.1
776
+ # Parameters:
777
+ # psOptions -- the options struct for GDALMultiDimInfo().
778
+ attach_function :GDALMultiDimInfoOptionsFree, [:GDALMultiDimInfoOptions], :void
779
+
780
+ # https://gdal.org/api/gdal_utils.html#_CPPv416GDALMultiDimInfo12GDALDatasetHPK23GDALMultiDimInfoOptions
781
+ # char *GDALMultiDimInfo(GDALDatasetH hDataset, const GDALMultiDimInfoOptions *psOptions)
782
+ #
783
+ # Lists various information about a GDAL multidimensional dataset.
784
+ # This is the equivalent of the gdalmdiminfoutility.
785
+ # GDALMultiDimInfoOptions* must be allocated and freed with GDALMultiDimInfoOptionsNew() and
786
+ # GDALMultiDimInfoOptionsFree() respectively.
787
+ #
788
+ # Since
789
+ # GDAL 3.1
790
+ # Parameters:
791
+ # hDataset -- the dataset handle.
792
+ # psOptionsIn -- the options structure returned by GDALMultiDimInfoOptionsNew() or NULL.
793
+ # Returns:
794
+ # string corresponding to the information about the raster dataset (must be freed with CPLFree()), or NULL
795
+ # in case of error.
796
+ attach_function :GDALMultiDimInfo,
797
+ %i[hDataset GDALMultiDimInfoOptions],
798
+ :strptr
799
+
800
+ #############################
801
+ ### GDALMultiDimTranslate ###
802
+ #############################
803
+
804
+ # https://gdal.org/api/gdal_utils.html#_CPPv431GDALMultiDimTranslateOptionsNewPPcP37GDALMultiDimTranslateOptionsForBinary
805
+ # GDALMultiDimTranslateOptions *GDALMultiDimTranslateOptionsNew(
806
+ # char **papszArgv,
807
+ # GDALMultiDimTranslateOptionsForBinary *psOptionsForBinary
808
+ # )
809
+ #
810
+ # Allocates a GDALMultiDimTranslateOptions struct.
811
+ #
812
+ # Since
813
+ # GDAL 3.1
814
+ # Parameters:
815
+ # papszArgv -- NULL terminated list of options (potentially including filename and open options too), or NULL.
816
+ # The accepted options are the ones of the gdalmdimtranslate utility.
817
+ # psOptionsForBinary -- should be nullptr, unless called from gdalmdimtranslate_bin.cpp
818
+ # Returns:
819
+ # pointer to the allocated GDALMultiDimTranslateOptions struct. Must be freed with
820
+ # GDALMultiDimTranslateOptionsFree().
821
+ attach_function :GDALMultiDimTranslateOptionsNew, %i[papszArgv psOptionsForBinary], :GDALMultiDimTranslateOptions
822
+
823
+ # https://gdal.org/api/gdal_utils.html#_CPPv432GDALMultiDimTranslateOptionsFreeP28GDALMultiDimTranslateOptions
824
+ # void GDALMultiDimTranslateOptionsFree(GDALMultiDimTranslateOptions *psOptions)
825
+ #
826
+ # Frees the GDALMultiDimTranslateOptions struct.
827
+ #
828
+ # Since
829
+ # GDAL 3.1
830
+ # Parameters:
831
+ # psOptions -- the options struct for GDALMultiDimTranslate().
832
+ attach_function :GDALMultiDimTranslateOptionsFree, [:GDALMultiDimTranslateOptions], :void
833
+
834
+ # https://gdal.org/api/gdal_utils.html#_CPPv421GDALMultiDimTranslatePKc12GDALDatasetHiP12GDALDatasetHPK28GDALMultiDimTranslateOptionsPi
835
+ # GDALDatasetH GDALMultiDimTranslate(
836
+ # const char *pszDest,
837
+ # GDALDatasetH hDstDataset,
838
+ # int nSrcCount,
839
+ # GDALDatasetH *pahSrcDS,
840
+ # const GDALMultiDimTranslateOptions *psOptions,
841
+ # int *pbUsageError
842
+ # )
843
+ #
844
+ # Converts raster data between different formats.
845
+ # This is the equivalent of the gdalmdimtranslate utility.
846
+ # GDALMultiDimTranslateOptions* must be allocated and freed with GDALMultiDimTranslateOptionsNew()
847
+ # and GDALMultiDimTranslateOptionsFree() respectively. pszDest and hDstDS cannot be used at the same time.
848
+ #
849
+ # Since
850
+ # GDAL 3.1
851
+ # Parameters:
852
+ # pszDest -- the destination dataset path or NULL.
853
+ # hDstDS -- the destination dataset or NULL.
854
+ # nSrcCount -- the number of input datasets.
855
+ # pahSrcDS -- the list of input datasets.
856
+ # psOptions -- the options struct returned by GDALMultiDimTranslateOptionsNew() or NULL.
857
+ # pbUsageError -- pointer to a integer output variable to store if any usage error has occurred or NULL.
858
+ # Returns:
859
+ # the output dataset (new dataset that must be closed using GDALClose(), or hDstDS is not NULL) or NULL
860
+ # in case of error.
861
+ attach_function :GDALMultiDimTranslate,
862
+ %i[pszDest hDstDS nSrcCount pahSrcDS GDALMultiDimTranslateOptions pbUsageError],
863
+ :GDALDatasetH
864
+
865
+ ######################
866
+ ### GDALVectorInfo ###
867
+ ######################
868
+
869
+ # https://gdal.org/api/gdal_utils.html#_CPPv424GDALVectorInfoOptionsNewPPcP30GDALVectorInfoOptionsForBinary
870
+ # GDALVectorInfoOptions *GDALVectorInfoOptionsNew(
871
+ # char **papszArgv,
872
+ # GDALVectorInfoOptionsForBinary *psOptionsForBinary
873
+ # )
874
+ #
875
+ # Allocates a GDALVectorInfoOptions struct.
876
+ #
877
+ # Since
878
+ # GDAL 3.7
879
+ # Parameters:
880
+ # papszArgv -- NULL terminated list of options (potentially including filename and open options too), or NULL.
881
+ # The accepted options are the ones of the ogrinfo utility.
882
+ # psOptionsForBinary -- (output) may be NULL (and should generally be NULL), otherwise (ogrinfo_bin.cpp
883
+ # use case) must be allocated with GDALVectorInfoOptionsForBinaryNew() prior to this function.
884
+ # Will be filled with potentially present filename, open options, subdataset number...
885
+ # Returns:
886
+ # pointer to the allocated GDALVectorInfoOptions struct. Must be freed with GDALVectorInfoOptionsFree().
887
+ attach_function :GDALVectorInfoOptionsNew, %i[papszArgv psOptionsForBinary], :GDALVectorInfoOptions
888
+
889
+ # https://gdal.org/api/gdal_utils.html#_CPPv425GDALVectorInfoOptionsFreeP21GDALVectorInfoOptions
890
+ # void GDALVectorInfoOptionsFree(GDALVectorInfoOptions *psOptions)
891
+ #
892
+ # Frees the GDALVectorInfoOptions struct.
893
+ #
894
+ # Since
895
+ # GDAL 3.7
896
+ # Parameters:
897
+ # psOptions -- the options struct for GDALVectorInfo().
898
+ attach_function :GDALVectorInfoOptionsFree, [:GDALVectorInfoOptions], :void
899
+
900
+ # https://gdal.org/api/gdal_utils.html#_CPPv414GDALVectorInfo12GDALDatasetHPK21GDALVectorInfoOptions
901
+ # char *GDALVectorInfo(GDALDatasetH hDataset, const GDALVectorInfoOptions *psOptions)
902
+ #
903
+ # Lists various information about a GDAL supported vector dataset.
904
+ # This is the equivalent of the ogrinfo utility.
905
+ # GDALVectorInfoOptions* must be allocated and freed with GDALVectorInfoOptionsNew()
906
+ # and GDALVectorInfoOptionsFree() respectively.
907
+ #
908
+ # Since
909
+ # GDAL 3.7
910
+ # Parameters:
911
+ # hDataset -- the dataset handle.
912
+ # psOptions -- the options structure returned by GDALVectorInfoOptionsNew() or NULL.
913
+ # Returns:
914
+ # string corresponding to the information about the raster dataset (must be freed with CPLFree()), or NULL
915
+ # in case of error.
916
+ attach_function :GDALVectorInfo,
917
+ %i[hDataset GDALVectorInfoOptions],
918
+ :strptr
919
+
920
+ #####################
921
+ ### GDALTileIndex ###
922
+ #####################
923
+
924
+ # https://gdal.org/api/gdal_utils.html#_CPPv423GDALTileIndexOptionsNewPPcP29GDALTileIndexOptionsForBinary
925
+ # GDALTileIndexOptions *GDALTileIndexOptionsNew(
926
+ # char **papszArgv,
927
+ # GDALTileIndexOptionsForBinary *psOptionsForBinary
928
+ # )
929
+ #
930
+ # Allocates a GDALTileIndexOptions struct.
931
+ #
932
+ # Since
933
+ # GDAL 3.9
934
+ # Parameters:
935
+ # papszArgv -- NULL terminated list of options (potentially including filename and open options too), or NULL.
936
+ # The accepted options are the ones of the gdaltindex utility.
937
+ # psOptionsForBinary -- (output) may be NULL (and should generally be NULL), otherwise (gdaltindex_bin.cpp
938
+ # use case) must be allocated with GDALTileIndexOptionsForBinaryNew() prior to this function.
939
+ # Will be filled with potentially present filename, open options,...
940
+ # Returns:
941
+ # pointer to the allocated GDALTileIndexOptions struct. Must be freed with GDALTileIndexOptionsFree().
942
+ attach_function :GDALTileIndexOptionsNew, %i[papszArgv psOptionsForBinary], :GDALTileIndexOptions
943
+
944
+ # https://gdal.org/api/gdal_utils.html#_CPPv424GDALTileIndexOptionsFreeP20GDALTileIndexOptions
945
+ # void GDALTileIndexOptionsFree(GDALTileIndexOptions *psOptions)
946
+ #
947
+ # Frees the GDALTileIndexOptions struct.
948
+ #
949
+ # Since
950
+ # GDAL 3.9
951
+ # Parameters:
952
+ # psOptions -- the options struct for GDALTileIndex().
953
+ attach_function :GDALTileIndexOptionsFree, [:GDALTileIndexOptions], :void
954
+
955
+ # https://gdal.org/api/gdal_utils.html#_CPPv413GDALTileIndexPKciPPCKcPK20GDALTileIndexOptionsPi
956
+ # GDALDatasetH GDALTileIndex(
957
+ # const char *pszDest,
958
+ # int nSrcCount,
959
+ # const char *const *papszSrcDSNames,
960
+ # const GDALTileIndexOptions *psOptions,
961
+ # int *pbUsageError
962
+ # )
963
+ #
964
+ # Build a tile index from a list of datasets.
965
+ # This is the equivalent of the gdaltindex utility.
966
+ # GDALTileIndexOptions* must be allocated and freed with GDALTileIndexOptionsNew()
967
+ # and GDALTileIndexOptionsFree() respectively.
968
+ #
969
+ # Since
970
+ # GDAL 3.9
971
+ # Parameters:
972
+ # pszDest -- the destination dataset path.
973
+ # nSrcCount -- the number of input datasets.
974
+ # papszSrcDSNames -- the list of input dataset names
975
+ # psOptionsIn -- the options struct returned by GDALTileIndexOptionsNew() or NULL.
976
+ # pbUsageError -- pointer to a integer output variable to store if any usage error has occurred.
977
+ # Returns:
978
+ # the output dataset (new dataset that must be closed using GDALClose()) or NULL in case of error.
979
+ attach_function :GDALTileIndex,
980
+ %i[pszDest nSrcCount pointer GDALTileIndexOptions pbUsageError],
981
+ :GDALDatasetH
982
+ end
983
+ end
984
+ end