gmt 0.1.4 → 0.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.
Files changed (4) hide show
  1. checksums.yaml +5 -5
  2. data/ext/gmt/gmt.c +123 -39
  3. data/lib/gmt.rb +116 -78
  4. metadata +24 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c627752c3767952e0ffcf4fa5d8974091aee1ca7
4
- data.tar.gz: 744c75011fb4a4de173d3f61ff9f3f3c975c5377
2
+ SHA256:
3
+ metadata.gz: e7c16625a1784afc2bc4bea4595cedbe3625c278c74c1c8468a82a10b43530de
4
+ data.tar.gz: 1a506fcdc8edeeaddf2f7ad7da5ffbf7c6c23822e4d5164f8c70f24cef471d80
5
5
  SHA512:
6
- metadata.gz: 9bb70c503aea29a948bae0f133f3a1fb3259ee8521661c2b5933c0a669b35c2eadb467cc6c26bb439c4725ad7c551e91a445052ac53fa5c012ac49bdefec8584
7
- data.tar.gz: 999bbe921bf36319bccbaedf237f69216465100d5a39df8561b38d91fdfd80553cc57cfcebf7b573fe872f60821185752c2bf18b6205347dac4858ad0674dc9f
6
+ metadata.gz: 43dbd14bf6d41a49bd91c0afe5f210e35f4b5e914a2f71f7f958f75841fd5cda975d5ecbda503c42f25b048dda643e03cf79438f7443dff12e9d9a304103dff3
7
+ data.tar.gz: 5a9a237244a07dad68258d383863f44d526fb5397826f0b146bd3ed18aa4e172f1b345cb8e771c628ada316c8e4c44dd2b2d9647da82483a32cc5ceaed8419e0
data/ext/gmt/gmt.c CHANGED
@@ -106,7 +106,17 @@ static VALUE gmt_simple(const char *name, int argc, VALUE *argv, VALUE self)
106
106
  return Qtrue;
107
107
  }
108
108
 
109
- /* The GMT functions */
109
+ /*
110
+ The GMT functions
111
+
112
+ We take this list from the GMT documentation for the "classic mode"
113
+ https://docs.generic-mapping-tools.org/latest/modules-classic.html
114
+
115
+ The "modern mode" modules (which have a slicker way of routing and
116
+ combining postscript output) will probably need a different treatment,
117
+ possibly a more attractive on from the Ruby perspective; for now we
118
+ just limit ourselves to the classic mode.
119
+ */
110
120
 
111
121
  #define GMT_FUN(name) \
112
122
  static VALUE gmt_ ## name (int argc, VALUE *argv, VALUE self) \
@@ -114,15 +124,7 @@ static VALUE gmt_ ## name (int argc, VALUE *argv, VALUE self) \
114
124
  return gmt_simple(#name, argc, argv, self); \
115
125
  }
116
126
 
117
- /* Filtering of 1-D and 2-D Data */
118
-
119
- GMT_FUN(blockmean)
120
- GMT_FUN(blockmedian)
121
- GMT_FUN(blockmode)
122
- GMT_FUN(filter1d)
123
- GMT_FUN(grdfilter)
124
-
125
- /* Plotting of 1-D and 2-D Data */
127
+ /* Plotting */
126
128
 
127
129
  GMT_FUN(gmtlogo)
128
130
  GMT_FUN(grdcontour)
@@ -152,7 +154,23 @@ GMT_FUN(pssolar)
152
154
  GMT_FUN(psternary)
153
155
  #endif
154
156
 
155
- /* Gridding of Data Tables */
157
+ #if API_AT_LEAST(6, 0, 0)
158
+ GMT_FUN(psevents)
159
+ #endif
160
+
161
+ /* Filtering */
162
+
163
+ GMT_FUN(blockmean)
164
+ GMT_FUN(blockmedian)
165
+ GMT_FUN(blockmode)
166
+ GMT_FUN(filter1d)
167
+ GMT_FUN(grdfilter)
168
+
169
+ #if API_AT_LEAST(6, 0, 0)
170
+ GMT_FUN(dimfilter)
171
+ #endif
172
+
173
+ /* Gridding */
156
174
 
157
175
  GMT_FUN(greenspline)
158
176
  GMT_FUN(nearneighbor)
@@ -160,20 +178,24 @@ GMT_FUN(sphinterpolate)
160
178
  GMT_FUN(surface)
161
179
  GMT_FUN(triangulate)
162
180
 
163
- /* Sampling of 1-D and 2-D Data */
181
+ #if API_AT_LEAST(6, 1, 0)
182
+ GMT_FUN(grdinterpolate)
183
+ #endif
184
+
185
+ /* Sampling of 1-D and 2-D data */
164
186
 
165
187
  GMT_FUN(gmtsimplify)
166
188
  GMT_FUN(grdsample)
167
189
  GMT_FUN(grdtrack)
168
190
  GMT_FUN(sample1d)
169
191
 
170
- /* Projection and Map-transformation */
192
+ /* Projection and map-transformation */
171
193
 
172
194
  GMT_FUN(grdproject)
173
195
  GMT_FUN(mapproject)
174
196
  GMT_FUN(project)
175
197
 
176
- /* Retrieve Information */
198
+ /* Information retrieval */
177
199
 
178
200
  GMT_FUN(gmtdefaults)
179
201
  GMT_FUN(gmtget)
@@ -181,7 +203,7 @@ GMT_FUN(gmtinfo)
181
203
  GMT_FUN(gmtset)
182
204
  GMT_FUN(grdinfo)
183
205
 
184
- /* Mathematical Operations on Tables or Grids */
206
+ /* Mathematical operations on tables or grids */
185
207
 
186
208
  GMT_FUN(gmtmath)
187
209
  GMT_FUN(makecpt)
@@ -190,14 +212,17 @@ GMT_FUN(sph2grd)
190
212
  GMT_FUN(sphdistance)
191
213
  GMT_FUN(sphtriangulate)
192
214
 
193
- /* Convert or Extract Subsets of Data */
215
+ /* Convert or extract subsets of data */
216
+
217
+ #if API_AT_LEAST(6, 2, 0)
218
+ GMT_FUN(gmtbinstats)
219
+ #endif
194
220
 
195
221
  GMT_FUN(gmtconnect)
196
222
  GMT_FUN(gmtconvert)
197
223
  GMT_FUN(gmtselect)
198
224
  GMT_FUN(gmtspatial)
199
225
  GMT_FUN(gmtvector)
200
- GMT_FUN(grd2rgb)
201
226
  GMT_FUN(grd2xyz)
202
227
  GMT_FUN(grdblend)
203
228
  GMT_FUN(grdconvert)
@@ -206,14 +231,24 @@ GMT_FUN(grdpaste)
206
231
  GMT_FUN(splitxyz)
207
232
  GMT_FUN(xyz2grd)
208
233
 
209
- /* Determine Trends in 1-D and 2-D Data */
234
+ #if API_AT_LEAST(6, 0, 0)
235
+ GMT_FUN(grd2kml)
236
+ #else
237
+ GMT_FUN(grd2rgb) /* https://github.com/GenericMappingTools/gmt/pull/425 */
238
+ #endif
239
+
240
+ /* trends in 1-D and 2-D data */
210
241
 
211
242
  GMT_FUN(fitcircle)
212
243
  GMT_FUN(gmtregress)
213
244
  GMT_FUN(trend1d)
214
245
  GMT_FUN(trend2d)
215
246
 
216
- /* Other Operations on 2-D Grids */
247
+ #if API_AT_LEAST(6, 0, 0)
248
+ GMT_FUN(grdtrend)
249
+ #endif
250
+
251
+ /* Grid operations */
217
252
 
218
253
  GMT_FUN(grd2cpt)
219
254
  GMT_FUN(grdclip)
@@ -226,12 +261,24 @@ GMT_FUN(grdmask)
226
261
  GMT_FUN(grdmath)
227
262
  GMT_FUN(grdvolume)
228
263
 
229
- /* Miscellaneous Tools */
264
+ #if API_AT_LEAST(6, 0, 0)
265
+ GMT_FUN(grdfill)
266
+ #endif
267
+
268
+ #if API_AT_LEAST(6, 1, 0)
269
+ GMT_FUN(grdmix)
270
+ #endif
271
+
272
+ /* Miscellaneous */
230
273
 
231
274
  GMT_FUN(gmt2kml)
232
275
  GMT_FUN(kml2gmt)
233
276
  GMT_FUN(psconvert)
234
277
 
278
+ #if API_AT_LEAST(6, 1, 0)
279
+ GMT_FUN(grdgdal)
280
+ #endif
281
+
235
282
  #undef GMT_FUN
236
283
 
237
284
  #define RB_DPM(name) rb_define_private_method(cGMT, #name "_c", gmt_ ## name, -1)
@@ -244,15 +291,7 @@ void Init_gmt(void)
244
291
  rb_define_method(cGMT, "initialize", gmt_init, 0);
245
292
  rb_define_method(cGMT, "free", gmt_release, 0);
246
293
 
247
- /* Filtering of 1-D and 2-D Data */
248
-
249
- RB_DPM(blockmean);
250
- RB_DPM(blockmedian);
251
- RB_DPM(blockmode);
252
- RB_DPM(filter1d);
253
- RB_DPM(grdfilter);
254
-
255
- /* Plotting of 1-D and 2-D Data */
294
+ /* Plotting */
256
295
 
257
296
  RB_DPM(gmtlogo);
258
297
  RB_DPM(grdcontour);
@@ -282,7 +321,23 @@ void Init_gmt(void)
282
321
  RB_DPM(psternary);
283
322
  #endif
284
323
 
285
- /* Gridding of Data Tables */
324
+ #if API_AT_LEAST(6, 0, 0)
325
+ RB_DPM(psevents);
326
+ #endif
327
+
328
+ /* Filtering */
329
+
330
+ RB_DPM(blockmean);
331
+ RB_DPM(blockmedian);
332
+ RB_DPM(blockmode);
333
+ RB_DPM(filter1d);
334
+ RB_DPM(grdfilter);
335
+
336
+ #if API_AT_LEAST(6, 0, 0)
337
+ RB_DPM(dimfilter);
338
+ #endif
339
+
340
+ /* Gridding */
286
341
 
287
342
  RB_DPM(greenspline);
288
343
  RB_DPM(nearneighbor);
@@ -290,20 +345,24 @@ void Init_gmt(void)
290
345
  RB_DPM(surface);
291
346
  RB_DPM(triangulate);
292
347
 
293
- /* Sampling of 1-D and 2-D Data */
348
+ #if API_AT_LEAST(6, 1, 0)
349
+ RB_DPM(grdinterpolate);
350
+ #endif
351
+
352
+ /* Sampling of 1-D and 2-D data */
294
353
 
295
354
  RB_DPM(gmtsimplify);
296
355
  RB_DPM(grdsample);
297
356
  RB_DPM(grdtrack);
298
357
  RB_DPM(sample1d);
299
358
 
300
- /* Projection and Map-transformation */
359
+ /* Projection and map-transformation */
301
360
 
302
361
  RB_DPM(grdproject);
303
362
  RB_DPM(mapproject);
304
363
  RB_DPM(project);
305
364
 
306
- /* Retrieve Information */
365
+ /* Information retrieval */
307
366
 
308
367
  RB_DPM(gmtdefaults);
309
368
  RB_DPM(gmtget);
@@ -311,7 +370,7 @@ void Init_gmt(void)
311
370
  RB_DPM(gmtset);
312
371
  RB_DPM(grdinfo);
313
372
 
314
- /* Mathematical Operations on Tables or Grids */
373
+ /* Mathematical operations on tables or grids */
315
374
 
316
375
  RB_DPM(gmtmath);
317
376
  RB_DPM(makecpt);
@@ -320,14 +379,17 @@ void Init_gmt(void)
320
379
  RB_DPM(sphdistance);
321
380
  RB_DPM(sphtriangulate);
322
381
 
323
- /* Convert or Extract Subsets of Data */
382
+ /* Convert or extract subsets of data */
383
+
384
+ #if API_AT_LEAST(6, 2, 0)
385
+ RB_DPM(gmtbinstats);
386
+ #endif
324
387
 
325
388
  RB_DPM(gmtconnect);
326
389
  RB_DPM(gmtconvert);
327
390
  RB_DPM(gmtselect);
328
391
  RB_DPM(gmtspatial);
329
392
  RB_DPM(gmtvector);
330
- RB_DPM(grd2rgb);
331
393
  RB_DPM(grd2xyz);
332
394
  RB_DPM(grdblend);
333
395
  RB_DPM(grdconvert);
@@ -336,14 +398,24 @@ void Init_gmt(void)
336
398
  RB_DPM(splitxyz);
337
399
  RB_DPM(xyz2grd);
338
400
 
339
- /* Determine Trends in 1-D and 2-D Data */
401
+ #if API_AT_LEAST(6, 0, 0)
402
+ RB_DPM(grd2kml);
403
+ #else
404
+ RB_DPM(grd2rgb); /* https://github.com/GenericMappingTools/gmt/pull/425 */
405
+ #endif
406
+
407
+ /* Trends in 1-D and 2-D data */
340
408
 
341
409
  RB_DPM(fitcircle);
342
410
  RB_DPM(gmtregress);
343
411
  RB_DPM(trend1d);
344
412
  RB_DPM(trend2d);
345
413
 
346
- /* Other Operations on 2-D Grids */
414
+ #if API_AT_LEAST(6, 0, 0)
415
+ RB_DPM(grdtrend);
416
+ #endif
417
+
418
+ /* Grid operations */
347
419
 
348
420
  RB_DPM(grd2cpt);
349
421
  RB_DPM(grdclip);
@@ -356,12 +428,24 @@ void Init_gmt(void)
356
428
  RB_DPM(grdmath);
357
429
  RB_DPM(grdvolume);
358
430
 
359
- /* Miscellaneous Tools */
431
+ #if API_AT_LEAST(6, 0, 0)
432
+ RB_DPM(grdfill);
433
+ #endif
434
+
435
+ #if API_AT_LEAST(6, 1, 0)
436
+ RB_DPM(grdmix);
437
+ #endif
438
+
439
+ /* Miscellaneous */
360
440
 
361
441
  RB_DPM(gmt2kml);
362
442
  RB_DPM(kml2gmt);
363
443
  RB_DPM(psconvert);
364
444
 
445
+ #if API_AT_LEAST(6, 1, 0)
446
+ RB_DPM(grdgdal);
447
+ #endif
448
+
365
449
  /* version constants */
366
450
 
367
451
  rb_define_const(cGMT, "VERSION_MAJOR", INT2NUM(GMT_MAJOR_VERSION));
data/lib/gmt.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # This class provides a native extension accessing the programs of
2
- # the {http://gmt.soest.hawaii.edu/home Generic Mapping Tools};
2
+ # the {https://docs.generic-mapping-tools.org Generic Mapping Tools};
3
3
  # an open source collection of about 80 command-line tools for
4
4
  # manipulating geographic and Cartesian data sets (including filtering,
5
5
  # trend fitting, gridding, projecting, etc.) and producing PostScript
@@ -13,16 +13,8 @@
13
13
  # common = { file: 'output.ps', R: '0/3/0/2', J: 'x1i' }
14
14
  #
15
15
  # GMT.session do |gmt|
16
- # gmt.psxy('dots.xy',
17
- # common.merge(
18
- # position: :first,
19
- # S: 'c0.50c',
20
- # G: 'blue'))
21
- # gmt.psxy('dots.xy',
22
- # common.merge(
23
- # position: :last,
24
- # S: 'c0.25c',
25
- # G: 'red'))
16
+ # gmt.psxy('dots.xy', position: :first, S: 'c0.50c', G: 'blue', **common)
17
+ # gmt.psxy('dots.xy', position: :last, S: 'c0.25c', G: 'red', **common)
26
18
  # end
27
19
  #
28
20
  # Those familiar with GMT will recognise the +-R+ (range) and +-J+ (projection)
@@ -50,23 +42,30 @@
50
42
  # single options hash. The options hash corresponds to the command-line
51
43
  # options of the GMT program; hence the shell command
52
44
  #
53
- # gmt makecpt -Cgebco depths.txt -i2 -Z -E24 > my_depths.cpt
45
+ # gmt makecpt -Cgebco depths.txt -i2 -Z -E24 > bath.cpt
54
46
  #
55
47
  # would be replicated by the Ruby
56
48
  #
57
49
  # gmt = GMT.new
58
- # gmt.makecpt('depths.txt',
59
- # :C => 'gebco', :i => 2, :Z => nil, :E => 24, :> => 'my_depths.cpt')
50
+ # gmt.makecpt('depths.txt', C: 'gebco', i: 2, Z: nil, E: 24, :> => 'bath.cpt')
60
51
  #
61
52
  # Note that
62
53
  # - the argument(s) (the input file <code>'depths.txt'</code>) preceed(s)
63
54
  # the options hash
64
55
  # - the options hash has keys which are symbols
65
56
  # - options which lack arguments correspond to hash keys with nil values
66
- # <code>:Z => nil</code>.
57
+ # <code>Z: nil</code>.
67
58
  # - the output redirection is _also_ treated as hash option, with key
68
59
  # <code>:></code> and value which is the output file.
69
60
  #
61
+ # The options without argument can also be specifed by a symbol
62
+ # _argument_, but recall that arguments must proceed the options hash,
63
+ # so the above would be
64
+ #
65
+ # gmt.makecpt('depths.txt', :Z, C: 'gebco', i: 2, E: 24, :> => 'bath.cpt')
66
+ #
67
+ # using this format.
68
+ #
70
69
  # == PostScript functions
71
70
  #
72
71
  # When creating complex PostScript plots one needs to make several calls to
@@ -75,17 +74,17 @@
75
74
  # and error-prone on the command-line, and more so in the "options hash"
76
75
  # representation in the Ruby module.
77
76
  #
78
- # So we add some syntatactic sugar for these PostScript functions: if the
77
+ # So we add some syntactic sugar for these PostScript functions: if the
79
78
  # options hash has the keys +:position+ (with values one of +:first+, +:middle+,
80
79
  # or +:last+) and +:file+ (with the value of the ouptut file), then the
81
80
  # +-O+ and +-K+ options and the output redirection are handled by the class.
82
81
  # So one might write
83
82
  #
84
83
  # gmt = GMT.new
85
- # gmt.psbasemap( …, :file => 'map.ps', :position => :first)
86
- # gmt.pstext( …, :file => 'map.ps', :position => :middle)
87
- # gmt.psxy( …, :file => 'map.ps', :position => :middle)
88
- # gmt.pslogo( …, :file => 'map.ps', :position => :last)
84
+ # gmt.psbasemap( ..., file: 'map.ps', position: :first)
85
+ # gmt.pstext( ..., file: 'map.ps', position: :middle)
86
+ # gmt.psxy( ..., file: 'map.ps', position: :middle)
87
+ # gmt.pslogo( ..., file: 'map.ps', position: :last)
89
88
  #
90
89
  class GMT
91
90
 
@@ -133,13 +132,13 @@ class GMT
133
132
  # @param [Array<String>] files The input files
134
133
  # @param [Hash] options The GMT command-line options in hash form
135
134
  # @return [Boolean] +true+ on success
136
- # @see http://gmt.soest.hawaii.edu/doc/latest/$1.html
135
+ # @see https://docs.generic-mapping-tools.org/latest/$1.html
137
136
  def wrapper_ps(method)
138
- define_method(method) do |*args, **options|
139
- coerce_string_arguments!(args)
140
- coerce_postscript_options!(options)
141
- coerce_append_option!(options)
142
- self.send(api_function(method), *args, options_as_pairs(options))
137
+ define_method(method) do |*args, **opts|
138
+ args, opts = arg_opt_normalise(args, opts)
139
+ coerce_postscript_options!(opts)
140
+ coerce_append_option!(opts)
141
+ self.send(api_function(method), *args, options_as_pairs(opts))
143
142
  end
144
143
  end
145
144
 
@@ -148,12 +147,12 @@ class GMT
148
147
  # @param [Array<String>] arguments The arguments
149
148
  # @param [Hash] options The GMT command-line options in hash form
150
149
  # @return [Boolean] +true+ on success
151
- # @see http://gmt.soest.hawaii.edu/doc/latest/$1.html
150
+ # @see https://docs.generic-mapping-tools.org/latest/$1.html
152
151
  def wrapper_other(method)
153
- define_method(method) do |*args, **options|
154
- coerce_string_arguments!(args)
155
- coerce_append_option!(options)
156
- self.send(api_function(method), *args, options_as_pairs(options))
152
+ define_method(method) do |*args, **opts|
153
+ args, opts = arg_opt_normalise(args, opts)
154
+ coerce_append_option!(opts)
155
+ self.send(api_function(method), *args, options_as_pairs(opts))
157
156
  end
158
157
  end
159
158
 
@@ -176,10 +175,22 @@ class GMT
176
175
  [method.to_s, 'c'].join('_').to_sym
177
176
  end
178
177
 
179
- # convert arguments to strings
180
-
181
- def coerce_string_arguments!(arguments)
182
- arguments.map!(&:to_s)
178
+ # convert symbol arguments to nil-valued options, and
179
+ # call :to_s on the remaining arguments, so
180
+ #
181
+ # arg_opt_normalise(['a', :b, Pathname('/c')], {d: 'e'})
182
+ #
183
+ # becomes
184
+ #
185
+ # [['a', '/c'], {b: nil, d: 'e'}]
186
+ #
187
+ # returns the normalised arguments and options, does not
188
+ # modify the inputs
189
+
190
+ def arg_opt_normalise(args, opts)
191
+ syms, strs = args.partition { |x| x.is_a? Symbol }
192
+ syms.each { |sym| opts[sym] = nil }
193
+ [strs.map(&:to_s), opts]
183
194
  end
184
195
 
185
196
  # for GMT modules which produce PostScript, convert the
@@ -187,43 +198,43 @@ class GMT
187
198
  # equivalent of the -K, -O options, and the creation of
188
199
  # or appending to the PostScript output file
189
200
 
190
- def coerce_postscript_options!(options)
191
- file = options.delete(:file)
192
- position = options.delete(:position)
201
+ def coerce_postscript_options!(opts)
202
+ file = opts.delete(:file)
203
+ position = opts.delete(:position)
193
204
  if file && position then
194
- file_options =
205
+ file_opts =
195
206
  case position
196
207
  when :first, 'first'
197
- { :K => nil, :> => file }
208
+ { K: nil, :> => file }
198
209
  when :middle, 'middle'
199
- { :O => nil, :K => nil, :>> => file }
210
+ { O: nil, K: nil, :>> => file }
200
211
  when :last, 'last'
201
- { :O => nil, :>> => file }
212
+ { O: nil, :>> => file }
202
213
  else
203
214
  raise ArgumentError, 'position should be :first, :middle or :last'
204
215
  end
205
- options.merge!(file_options)
216
+ opts.merge!(file_opts)
206
217
  end
207
218
  end
208
219
 
209
220
  # handle the :>> option
210
221
 
211
- def coerce_append_option!(options)
212
- if file = options.delete(:>>) then
213
- options[:>] = '>' + file
222
+ def coerce_append_option!(opts)
223
+ if file = opts.delete(:>>) then
224
+ opts[:>] = '>' + file
214
225
  end
215
226
  end
216
227
 
217
228
  # convert non-nil argument to string
218
229
 
219
- def string_unless_nil(argument)
220
- argument.to_s unless argument.nil?
230
+ def string_unless_nil(arg)
231
+ arg.to_s unless arg.nil?
221
232
  end
222
233
 
223
234
  # convert the options hash to an array of pairs
224
235
 
225
- def options_as_pairs(options)
226
- options.each_with_object(Array.new) do |(key, values), result|
236
+ def options_as_pairs(opts)
237
+ opts.each_with_object(Array.new) do |(key, values), result|
227
238
  if values.respond_to? :each then
228
239
  values.each do |value|
229
240
  result << [key, string_unless_nil(value)]
@@ -236,25 +247,7 @@ class GMT
236
247
 
237
248
  public
238
249
 
239
- # @!group Filtering of 1-D and 2-D Data
240
-
241
- # L2 (x,y,z) table data filter/decimator
242
- wrapper_other :blockmean
243
-
244
- # L1 (x,y,z) table data filter/decimator
245
- wrapper_other :blockmedian
246
-
247
- # Mode estimate (x,y,z) table data filter/decimator
248
- wrapper_other :blockmode
249
-
250
- # Time domain filtering of 1-D data tables
251
- wrapper_other :filter1d
252
-
253
- # Filter 2-D gridded data sets in the space domain
254
- wrapper_other :grdfilter
255
-
256
-
257
- # @!group Plotting of 1-D and 2-D Data
250
+ # @!group Plotting
258
251
 
259
252
  # Plot the GMT logo on maps
260
253
  wrapper_ps :gmtlogo
@@ -319,8 +312,32 @@ class GMT
319
312
  # Plot data on ternary diagrams
320
313
  wrapper_ps :psternary
321
314
 
315
+ # Plot event symbols and labels for a moment in time
316
+ wrapper_ps :psevents
322
317
 
323
- # @!group Gridding of Data Tables
318
+
319
+ # @!group Filtering
320
+
321
+ # L2 (x,y,z) table data filter/decimator
322
+ wrapper_other :blockmean
323
+
324
+ # L1 (x,y,z) table data filter/decimator
325
+ wrapper_other :blockmedian
326
+
327
+ # Mode estimate (x,y,z) table data filter/decimator
328
+ wrapper_other :blockmode
329
+
330
+ # Time domain filtering of 1-D data tables
331
+ wrapper_other :filter1d
332
+
333
+ # Filter 2-D gridded data sets in the space domain
334
+ wrapper_other :grdfilter
335
+
336
+ # Directional filtering of grids in the space domain
337
+ wrapper_other :dimfilter
338
+
339
+
340
+ # @!group Gridding
324
341
 
325
342
  # Interpolation with Green’s functions for splines in 1–3 D
326
343
  wrapper_other :greenspline
@@ -337,8 +354,11 @@ class GMT
337
354
  # Perform optimal Delauney triangulation and gridding
338
355
  wrapper_other :triangulate
339
356
 
357
+ # Interpolate 2-D grids or 1-D series from a 3-D data cube
358
+ wrapper_other :grdinterpolate
359
+
340
360
 
341
- # @!group Sampling of 1-D and 2-D Data
361
+ # @!group Sampling of 1-D and 2-D data
342
362
 
343
363
  # Line reduction using the Douglas-Peucker algorithm
344
364
  wrapper_other :gmtsimplify
@@ -353,7 +373,7 @@ class GMT
353
373
  wrapper_other :sample1d
354
374
 
355
375
 
356
- # @!group Projection and Map-transformation
376
+ # @!group Projection and map-transformation
357
377
 
358
378
  # Project gridded data sets onto a new coordinate system
359
379
  wrapper_other :grdproject
@@ -365,7 +385,7 @@ class GMT
365
385
  wrapper_other :project
366
386
 
367
387
 
368
- # @!group Retrieve Information
388
+ # @!group Information retrieval
369
389
 
370
390
  # List the current default settings
371
391
  wrapper_other :gmtdefaults
@@ -383,7 +403,7 @@ class GMT
383
403
  wrapper_other :grdinfo
384
404
 
385
405
 
386
- # @!group Mathematical Operations on Tables or Grids
406
+ # @!group Mathematical operations on tables or grids
387
407
 
388
408
  # Mathematical operations on table data
389
409
  wrapper_other :gmtmath
@@ -404,7 +424,10 @@ class GMT
404
424
  wrapper_other :sphtriangulate
405
425
 
406
426
 
407
- # @!group Convert or Extract Subsets of Data
427
+ # @!group Convert or extract subsets of data
428
+
429
+ # Bin spatial data and determine statistics per bin
430
+ wrapper_other :gmtbinstats
408
431
 
409
432
  # Connect segments into more complete lines or polygons
410
433
  wrapper_other :gmtconnect
@@ -445,8 +468,11 @@ class GMT
445
468
  # Convert an equidistant table xyz file to a 2-D grid file
446
469
  wrapper_other :xyz2grd
447
470
 
471
+ # Create KML image quadtree from single grid
472
+ wrapper_other :grd2kml
448
473
 
449
- # @!group Determine Trends in 1-D and 2-D Data
474
+
475
+ # @!group Trends in 1-D and 2-D data
450
476
 
451
477
  # Finds the best-fitting great or small circle for a set of points
452
478
  wrapper_other :fitcircle
@@ -460,8 +486,11 @@ class GMT
460
486
  # Fits polynomial trends to z = f(x,y) series
461
487
  wrapper_other :trend2d
462
488
 
489
+ # Fit trend surface to grids and compute residuals
490
+ wrapper_other :grdtrend
491
+
463
492
 
464
- # @!group Other Operations on 2-D Grids
493
+ # @!group Grid operations
465
494
 
466
495
  # Make color palette table from a grid files
467
496
  wrapper_other :grd2cpt
@@ -475,6 +504,9 @@ class GMT
475
504
  # Perform operations on grid files in the frequency domain
476
505
  wrapper_other :grdfft
477
506
 
507
+ # Interpolate across holes in a grid
508
+ wrapper_other :grdfill
509
+
478
510
  # Compute directional gradient from grid files
479
511
  wrapper_other :grdgradient
480
512
 
@@ -490,11 +522,14 @@ class GMT
490
522
  # Mathematical operations on grid files
491
523
  wrapper_other :grdmath
492
524
 
525
+ # Blending and transforming grids and images
526
+ wrapper_other :grdmix
527
+
493
528
  # Calculate volumes under a surface within specified contour
494
529
  wrapper_other :grdvolume
495
530
 
496
531
 
497
- # @!group Miscellaneous Tools
532
+ # @!group Miscellaneous
498
533
 
499
534
  # Like psxy but plots KML for use in Google Earth
500
535
  wrapper_other :gmt2kml
@@ -505,6 +540,9 @@ class GMT
505
540
  # Crop and convert PostScript files to raster images, EPS, and PDF
506
541
  wrapper_other :psconvert
507
542
 
543
+ # Execute GDAL raster programs from GMT
544
+ wrapper_other :grdgdal
545
+
508
546
  end
509
547
 
510
548
  require 'gmt/gmt'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gmt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - J.J. Green
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-07 00:00:00.000000000 Z
11
+ date: 2021-07-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1'
19
+ version: '2'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1'
26
+ version: '2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '12.0'
33
+ version: '13.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '12.0'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -80,8 +80,22 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.2.4
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake-compiler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1'
83
97
  description: |
84
- A Ruby extension for the Generic Mapping Tools (GMT5)
98
+ A Ruby extension for the Generic Mapping Tools (GMT5/6)
85
99
  cartographic toolset.
86
100
  email: j.j.green@gmx.co.uk
87
101
  executables: []
@@ -114,11 +128,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
128
  - !ruby/object:Gem::Version
115
129
  version: '0'
116
130
  requirements:
117
- - GMT5 development libraries (compile)
118
- - GMT5 installation (test)
131
+ - GMT5/6 development libraries (compile)
132
+ - GMT5/6 installation (test)
119
133
  - ghostscript (test)
120
- rubyforge_project:
121
- rubygems_version: 2.5.2.1
134
+ rubygems_version: 3.1.2
122
135
  signing_key:
123
136
  specification_version: 4
124
137
  summary: Generic Mapping Tools (GMT)