Module: OGR::SpatialReferenceMixins::CoordinateSystemGetterSetters

Included in:
OGR::SpatialReference
Defined in:
lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb

Instance Method Summary collapse

Instance Method Details

#authority_code(target_key = nil) ⇒ String?

Parameters:

  • target_key (String) (defaults to: nil)

    The partial or complete path to the node to get an authority from (“PROJCS”, “GEOCS”, “GEOCS|UNIT”). Leave empty to search at the root element.

Returns:



208
209
210
211
212
213
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 208

def authority_code(target_key = nil)
  code, ptr = FFI::OGR::SRSAPI.OSRGetAuthorityCode(@c_pointer, target_key)
  ptr.autorelease = false

  code
end

#authority_name(target_key = nil) ⇒ String?

Parameters:

  • target_key (String) (defaults to: nil)

    The partial or complete path to the node to get an authority from (“PROJCS”, “GEOCS”, “GEOCS|UNIT”). Leave empty to search at the root element.

Returns:



219
220
221
222
223
224
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 219

def authority_name(target_key = nil)
  name, ptr = FFI::OGR::SRSAPI.OSRGetAuthorityName(@c_pointer, target_key)
  ptr.autorelease = false

  name
end

#axis(axis_number, target_key) ⇒ String?

Parameters:

  • axis_number (Integer)

    The Axis to query (0, 1, or 2)

  • target_key (String)

    ‘GEOGCS’ or ‘PROJCS’.

Returns:



322
323
324
325
326
327
328
329
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 322

def axis(axis_number, target_key)
  axis_orientation_ptr = FFI::MemoryPointer.new(:int)

  name = FFI::OGR::SRSAPI.OSRGetAxis(@c_pointer, target_key, axis_number, axis_orientation_ptr)
  ao_value = axis_orientation_ptr.read_int

  { name: name, orientation: FFI::OGR::SRSAPI::AxisOrientation[ao_value] }
end

#normalized_projection_parameter(name, default_value = 0.0) ⇒ Object

Parameters:

  • name (String)

    Name of the parameter to fetch; must be from the set of SRS_PP codes in ogr_srs_api.h.

  • default_value (Float) (defaults to: 0.0)

    The value to return if the parameter doesn’t exist.



276
277
278
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 276

def normalized_projection_parameter(name, default_value = 0.0)
  FFI::OGR::SRSAPI.OSRGetNormProjParm(@c_pointer, name, default_value, nil)
end

#projection_parameter(name, default_value = 0.0) ⇒ Object

Parameters:

  • name (String)
  • default_value (Float) (defaults to: 0.0)

    The value to return if the parameter doesn’t exist.

Raises:



248
249
250
251
252
253
254
255
256
257
258
259
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 248

def projection_parameter(name, default_value = 0.0)
  value = default_value

  OGR::ErrorHandling.handle_ogr_err("Unable to get projection parameter '#{name}'") do
    ogr_err_ptr = FFI::MemoryPointer.new(:int)
    value = FFI::OGR::SRSAPI.OSRGetProjParm(@c_pointer, name, default_value, ogr_err_ptr)
    ogr_err_int = ogr_err_ptr.null? ? 0 : ogr_err_ptr.read_int
    FFI::OGR::Core::Err[ogr_err_int]
  end

  value
end

#semi_major(return_wgs84_on_nil: false) ⇒ Float

Parameters:

  • return_wgs84_on_nil (Boolean) (defaults to: false)

    The C-API gives you the option to return the value for constant SRS_WGS84_SEMIMAJOR (6378137.0) if no semi-major is found. If set to true, this will return that value if the semi-major isn’t found.

Returns:



151
152
153
154
155
156
157
158
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 151

def semi_major(return_wgs84_on_nil: false)
  err_ptr = FFI::MemoryPointer.new(:int)
  value = FFI::OGR::SRSAPI.OSRGetSemiMajor(@c_pointer, err_ptr)
  ogr_err = FFI::OGR::Core::Err[err_ptr.read_int]
  wgs84_value = return_wgs84_on_nil ? value : nil

  ogr_err == :OGRERR_FAILURE ? wgs84_value : value
end

#semi_minor(return_wgs84_on_nil: false) ⇒ Float

Parameters:

  • return_wgs84_on_nil (Boolean) (defaults to: false)

    The C-API gives you the option to return the value for constant SRS_WGS84_SEMIMAJOR (6378137.0) if no semi-major is found. If set to true, this will return that value if the semi-major isn’t found.

Returns:



165
166
167
168
169
170
171
172
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 165

def semi_minor(return_wgs84_on_nil: false)
  err_ptr = FFI::MemoryPointer.new(:int)
  value = FFI::OGR::SRSAPI.OSRGetSemiMinor(@c_pointer, err_ptr)
  ogr_err = FFI::OGR::Core::Err[err_ptr.read_int]
  wgs84_value = return_wgs84_on_nil ? value : nil

  ogr_err == :OGRERR_FAILURE ? wgs84_value : value
end

#set_aeObject

Raises:

  • (NotImplementedError)


336
337
338
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 336

def set_ae
  raise NotImplementedError
end

#set_albers_conic_equal_areaObject Also known as: set_acea

Raises:

  • (NotImplementedError)


331
332
333
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 331

def set_albers_conic_equal_area
  raise NotImplementedError
end

#set_authority(target_key, authority, code) ⇒ Object

Parameters:

  • target_key (String)

    The partial or complete path to the node to set an authority on (“PROJCS”, “GEOGCS|UNIT”).

  • authority (String)

    I.e. “EPSG”.

  • code (Integer)

    Code value for the authority.

Raises:



193
194
195
196
197
198
199
200
201
202
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 193

def set_authority(target_key, authority, code)
  OGR::ErrorHandling.handle_ogr_err("Unable to set authority: '#{target_key}', '#{authority}', '#{code}'") do
    FFI::OGR::SRSAPI.OSRSetAuthority(
      @c_pointer,
      target_key,
      authority,
      code
    )
  end
end

#set_bonneObject

Raises:

  • (NotImplementedError)


340
341
342
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 340

def set_bonne
  raise NotImplementedError
end

#set_ceaObject

Raises:

  • (NotImplementedError)


344
345
346
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 344

def set_cea
  raise NotImplementedError
end

#set_compound_cs(name, horizontal_spatial_ref, vertical_spatial_ref) ⇒ Object

Parameters:

Raises:



94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 94

def set_compound_cs(name, horizontal_spatial_ref, vertical_spatial_ref)
  horizontal_spatial_ref_ptr = GDAL._pointer(OGR::SpatialReference, horizontal_spatial_ref)
  vertical_spatial_ref_ptr = GDAL._pointer(OGR::SpatialReference, vertical_spatial_ref)

  OGR::ErrorHandling.handle_ogr_err("Unable to set compound CS '#{name}'") do
    FFI::OGR::SRSAPI.OSRSetCompoundCS(
      @c_pointer,
      name,
      horizontal_spatial_ref_ptr,
      vertical_spatial_ref_ptr
    )
  end
end

#set_csObject

Raises:

  • (NotImplementedError)


348
349
350
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 348

def set_cs
  raise NotImplementedError
end

#set_ecObject

Raises:

  • (NotImplementedError)


352
353
354
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 352

def set_ec
  raise NotImplementedError
end

#set_eckertObject

Raises:

  • (NotImplementedError)


356
357
358
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 356

def set_eckert
  raise NotImplementedError
end

#set_eckert_ivObject

Raises:

  • (NotImplementedError)


360
361
362
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 360

def set_eckert_iv
  raise NotImplementedError
end

#set_eckert_viObject

Raises:

  • (NotImplementedError)


364
365
366
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 364

def set_eckert_vi
  raise NotImplementedError
end

#set_equirectangularObject

Raises:

  • (NotImplementedError)


368
369
370
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 368

def set_equirectangular
  raise NotImplementedError
end

#set_equirectangular2Object

Raises:

  • (NotImplementedError)


372
373
374
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 372

def set_equirectangular2
  raise NotImplementedError
end

#set_from_user_input(definition) ⇒ Object

Parameters:

Raises:



52
53
54
55
56
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 52

def set_from_user_input(definition) # rubocop:disable Naming/AccessorMethodName
  OGR::ErrorHandling.handle_ogr_err("Invalid projection info given.") do
    FFI::OGR::SRSAPI.OSRSetFromUserInput(@c_pointer, definition)
  end
end

#set_gauss_schreiber_transverse_mercatorObject

Raises:

  • (NotImplementedError)


392
393
394
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 392

def set_gauss_schreiber_transverse_mercator
  raise NotImplementedError
end

#set_gcObject

Raises:

  • (NotImplementedError)


376
377
378
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 376

def set_gc
  raise NotImplementedError
end

#set_geoc_cs(name) ⇒ Object Also known as: geoc_cs=

Set the user-visible PROJCS name.

Parameters:

Raises:



32
33
34
35
36
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 32

def set_geoc_cs(name) # rubocop:disable Naming/AccessorMethodName
  OGR::ErrorHandling.handle_ogr_err("Unable to set GEOCCS to '#{name}'") do
    FFI::OGR::SRSAPI.OSRSetGeocCS(@c_pointer, name)
  end
end

#set_geog_cs(geog_name, datum_name, spheroid_name, semi_major, spheroid_inverse_flattening, prime_meridian, offset, angular_unit_label, transform_to_radians) ⇒ Object

Set the user-visible GEOGCS name.

Parameters:

Raises:



120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 120

def set_geog_cs(geog_name, datum_name, spheroid_name, semi_major, spheroid_inverse_flattening,
  prime_meridian, offset, angular_unit_label, transform_to_radians)
  OGR::ErrorHandling.handle_ogr_err("Unable to set GEOGCS '#{name}'") do
    FFI::OGR::SRSAPI.OSRSetGeogCS(
      @c_pointer,
      geog_name, datum_name, spheroid_name,
      semi_major, spheroid_inverse_flattening,
      prime_meridian, offset,
      angular_unit_label, transform_to_radians
    )
  end
end

#set_geosObject

Raises:

  • (NotImplementedError)


388
389
390
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 388

def set_geos
  raise NotImplementedError
end

#set_ghObject

Raises:

  • (NotImplementedError)


380
381
382
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 380

def set_gh
  raise NotImplementedError
end

#set_gnomonicObject

Raises:

  • (NotImplementedError)


396
397
398
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 396

def set_gnomonic
  raise NotImplementedError
end

#set_homObject

Raises:

  • (NotImplementedError)


404
405
406
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 404

def set_hom
  raise NotImplementedError
end

#set_hom_2_pnoObject

Raises:

  • (NotImplementedError)


408
409
410
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 408

def set_hom_2_pno
  raise NotImplementedError
end

#set_ighObject

Raises:

  • (NotImplementedError)


384
385
386
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 384

def set_igh
  raise NotImplementedError
end

#set_iwm_polyconicObject

Raises:

  • (NotImplementedError)


412
413
414
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 412

def set_iwm_polyconic
  raise NotImplementedError
end

#set_krovakObject

Raises:

  • (NotImplementedError)


416
417
418
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 416

def set_krovak
  raise NotImplementedError
end

#set_laeaObject

Raises:

  • (NotImplementedError)


420
421
422
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 420

def set_laea
  raise NotImplementedError
end

#set_lccObject

Raises:

  • (NotImplementedError)


424
425
426
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 424

def set_lcc
  raise NotImplementedError
end

#set_lcc_1spObject

Raises:

  • (NotImplementedError)


428
429
430
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 428

def set_lcc_1sp
  raise NotImplementedError
end

#set_lccbObject

Raises:

  • (NotImplementedError)


432
433
434
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 432

def set_lccb
  raise NotImplementedError
end

#set_local_cs(name) ⇒ Object Also known as: local_cs=

Set the user-visible LOCAL_CS name.

Parameters:

Raises:



10
11
12
13
14
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 10

def set_local_cs(name) # rubocop:disable Naming/AccessorMethodName
  OGR::ErrorHandling.handle_ogr_err("Unable to set LOCAL_CS to '#{name}'") do
    FFI::OGR::SRSAPI.OSRSetLocalCS(@c_pointer, name)
  end
end

#set_mcObject

Raises:

  • (NotImplementedError)


436
437
438
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 436

def set_mc
  raise NotImplementedError
end

#set_mercatorObject

Raises:

  • (NotImplementedError)


440
441
442
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 440

def set_mercator
  raise NotImplementedError
end

#set_mollweideObject

Raises:

  • (NotImplementedError)


444
445
446
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 444

def set_mollweide
  raise NotImplementedError
end

#set_normalized_projection_parameter(param_name, value) ⇒ Object

Parameters:

Raises:



264
265
266
267
268
269
270
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 264

def set_normalized_projection_parameter(param_name, value)
  msg = "Unable to set normalized projection parameter '#{param_name}' to '#{value}'"

  OGR::ErrorHandling.handle_ogr_err(msg) do
    FFI::OGR::SRSAPI.OSRSetNormProjParm(@c_pointer, param_name, value)
  end
end

#set_nzmgObject

Raises:

  • (NotImplementedError)


448
449
450
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 448

def set_nzmg
  raise NotImplementedError
end

#set_omObject

Raises:

  • (NotImplementedError)


400
401
402
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 400

def set_om
  raise NotImplementedError
end

#set_orthographicObject

Raises:

  • (NotImplementedError)


456
457
458
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 456

def set_orthographic
  raise NotImplementedError
end

#set_osObject

Raises:

  • (NotImplementedError)


452
453
454
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 452

def set_os
  raise NotImplementedError
end

#set_polyconicObject

Raises:

  • (NotImplementedError)


460
461
462
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 460

def set_polyconic
  raise NotImplementedError
end

#set_proj_cs(name) ⇒ Object Also known as: proj_cs=

Set the user-visible PROJCS name.

Parameters:

Raises:



21
22
23
24
25
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 21

def set_proj_cs(name) # rubocop:disable Naming/AccessorMethodName
  OGR::ErrorHandling.handle_ogr_err("Unable to set PROJCS to '#{name}'") do
    FFI::OGR::SRSAPI.OSRSetProjCS(@c_pointer, name)
  end
end

#set_projection(projection_name) ⇒ Object Also known as: projection=

Parameters:

Raises:



228
229
230
231
232
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 228

def set_projection(projection_name) # rubocop:disable Naming/AccessorMethodName
  OGR::ErrorHandling.handle_ogr_err("Unable to set projection to '#{projection_name}'") do
    FFI::OGR::SRSAPI.OSRSetProjection(@c_pointer, projection_name)
  end
end

#set_projection_parameter(param_name, value) ⇒ Object

Parameters:

Raises:



238
239
240
241
242
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 238

def set_projection_parameter(param_name, value)
  OGR::ErrorHandling.handle_ogr_err("Unable to set projection parameter '#{param_name}' to #{value}") do
    FFI::OGR::SRSAPI.OSRSetProjParm(@c_pointer, param_name, value)
  end
end

#set_psObject

Raises:

  • (NotImplementedError)


464
465
466
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 464

def set_ps
  raise NotImplementedError
end

#set_qscObject

Raises:

  • (NotImplementedError)


525
526
527
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 525

def set_qsc
  raise NotImplementedError
end

#set_robinsonObject

Raises:

  • (NotImplementedError)


468
469
470
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 468

def set_robinson
  raise NotImplementedError
end

#set_sinusoidalObject

Raises:

  • (NotImplementedError)


472
473
474
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 472

def set_sinusoidal
  raise NotImplementedError
end

#set_socObject

Raises:

  • (NotImplementedError)


480
481
482
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 480

def set_soc
  raise NotImplementedError
end

#set_state_plane(zone, override_unit_label = nil, override_unit_transform = 0.0, nad83: true) ⇒ Object

Parameters:

  • zone (Integer)

    State plane zone number (USGS numbering scheme).

  • nad83 (Boolean) (defaults to: true)

    Use NAD83 zone definition or not.

Raises:



307
308
309
310
311
312
313
314
315
316
317
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 307

def set_state_plane(zone, override_unit_label = nil, override_unit_transform = 0.0, nad83: true)
  OGR::ErrorHandling.handle_ogr_err("Unable to set state plane to zone #{zone}") do
    FFI::OGR::SRSAPI.OSRSetStatePlaneWithUnits(
      @c_pointer,
      zone,
      nad83,
      override_unit_label,
      override_unit_transform
    )
  end
end

#set_stereographicObject

Raises:

  • (NotImplementedError)


476
477
478
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 476

def set_stereographic
  raise NotImplementedError
end

#set_tm_variantObject

Raises:

  • (NotImplementedError)


505
506
507
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 505

def set_tm_variant
  raise NotImplementedError
end

#set_tmgObject

Raises:

  • (NotImplementedError)


509
510
511
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 509

def set_tmg
  raise NotImplementedError
end

#set_tmsoObject

Raises:

  • (NotImplementedError)


513
514
515
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 513

def set_tmso
  raise NotImplementedError
end

#set_towgs84(x_distance: nil, y_distance: nil, z_distance: 0.0, x_rotation: 0.0, y_rotation: 0.0, z_rotation: 0.0, scaling_factor: 0.0) ⇒ Object

Parameters:

  • x_distance (Float) (defaults to: nil)

    (In meters.)

  • y_distance (Float) (defaults to: nil)

    (In meters.)

  • z_distance (Float) (defaults to: 0.0)

    (In meters.)

  • x_rotation (Float) (defaults to: 0.0)

    (In arc seconds.)

  • y_rotation (Float) (defaults to: 0.0)

    (In arc seconds.)

  • z_rotation (Float) (defaults to: 0.0)

    (In arc seconds.)

  • scaling_factor (Float) (defaults to: 0.0)

    (In parts-per-million.)

Raises:



78
79
80
81
82
83
84
85
86
87
88
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 78

def set_towgs84(x_distance: nil, y_distance: nil, z_distance: 0.0,
  x_rotation: 0.0, y_rotation: 0.0, z_rotation: 0.0, scaling_factor: 0.0)
  OGR::ErrorHandling.handle_ogr_err("No existing DATUM node") do
    FFI::OGR::SRSAPI.OSRSetTOWGS84(
      @c_pointer,
      x_distance, y_distance, z_distance,
      x_rotation, y_rotation, z_rotation,
      scaling_factor
    )
  end
end

#set_transverse_mercator(center_lat, center_long, scale, false_easting, false_northing) ⇒ Object Also known as: set_tm

Parameters:

Raises:



490
491
492
493
494
495
496
497
498
499
500
501
502
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 490

def set_transverse_mercator(center_lat, center_long, scale, false_easting, false_northing)
  msg = "Unable to set transverse mercator: " \
        "#{center_lat}, #{center_long}, #{scale}, #{false_easting}, #{false_northing}"

  OGR::ErrorHandling.handle_ogr_err(msg) do
    FFI::OGR::SRSAPI.OSRSetTM(
      @c_pointer,
      center_lat, center_long,
      scale,
      false_easting, false_northing
    )
  end
end

#set_utm(zone, north: true) ⇒ Object

Parameters:

  • zone (Integer)
  • north (Boolean) (defaults to: true)

    True for northern hemisphere, false for southern.

Raises:



283
284
285
286
287
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 283

def set_utm(zone, north: true)
  OGR::ErrorHandling.handle_ogr_err("Unable to set UTM to zome #{zone} (north: #{north})") do
    FFI::OGR::SRSAPI.OSRSetUTM(@c_pointer, zone, north)
  end
end

#set_vdgObject

Raises:

  • (NotImplementedError)


517
518
519
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 517

def set_vdg
  raise NotImplementedError
end

#set_vert_cs(name, datum_name, datum_type) ⇒ Object

Set the vertical coordinate system.

Parameters:

  • name (String)

    User-visible name of the CS.

  • datum_name (String)

    User-visible name of the datum. It’s helpful to have this match the EPSG name.

  • datum_type (Integer)

    The OGC datum type, usually 2005.

Raises:



140
141
142
143
144
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 140

def set_vert_cs(name, datum_name, datum_type)
  OGR::ErrorHandling.handle_ogr_err("Unable to set vertical CS '#{name}'") do
    FFI::OGR::SRSAPI.OSRSetVertCS(@c_pointer, name, datum_name, datum_type)
  end
end

#set_wagnerObject

Raises:

  • (NotImplementedError)


521
522
523
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 521

def set_wagner
  raise NotImplementedError
end

#set_well_known_geog_cs(name) ⇒ Object Also known as: well_known_geog_cs=

Set the GEOGCS based on a well-known name.

Parameters:

Raises:



43
44
45
46
47
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 43

def set_well_known_geog_cs(name) # rubocop:disable Naming/AccessorMethodName
  OGR::ErrorHandling.handle_ogr_err("Unable to set GEOGCS to '#{name}'") do
    FFI::OGR::SRSAPI.OSRSetWellKnownGeogCS(@c_pointer, name)
  end
end

#spheroid_inverse_flattening(return_wgs84_on_nil: false) ⇒ Float

Parameters:

  • return_wgs84_on_nil (Boolean) (defaults to: false)

    The C-API gives you the option to return the value for constant SRS_WGS84_INVFLATTENING (298.257223563) if no semi-major is found. If set to true, this will return that value if the semi-major isn’t found.

Returns:



179
180
181
182
183
184
185
186
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 179

def spheroid_inverse_flattening(return_wgs84_on_nil: false)
  err_ptr = FFI::MemoryPointer.new(:int)
  value = FFI::OGR::SRSAPI.OSRGetInvFlattening(@c_pointer, err_ptr)
  ogr_err = FFI::OGR::Core::Err[err_ptr.read_int]
  wgs84_value = return_wgs84_on_nil ? value : nil

  ogr_err == :OGRERR_FAILURE ? wgs84_value : value
end

#towgs84Array<Float>

Returns:

Raises:



60
61
62
63
64
65
66
67
68
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 60

def towgs84
  coefficients = FFI::MemoryPointer.new(:double, 7)

  OGR::ErrorHandling.handle_ogr_err("No TOWGS84 node available") do
    FFI::OGR::SRSAPI.OSRGetTOWGS84(@c_pointer, coefficients, 7)
  end

  coefficients.get_array_of_double(0, 7)
end

#utm_zone(hemisphere = :north) ⇒ Integer

Returns The zone, or 0 if this isn’t a UTM definition.

Parameters:

  • hemisphere (Symbol) (defaults to: :north)

    :north or :south.

Returns:

  • (Integer)

    The zone, or 0 if this isn’t a UTM definition.



291
292
293
294
295
296
297
298
299
300
301
302
# File 'lib/ogr/spatial_reference_mixins/coordinate_system_getter_setters.rb', line 291

def utm_zone(hemisphere = :north)
  north =
    case hemisphere
    when :north then 1
    when :south then 0
    else raise "Unknown hemisphere type #{hemisphere}. Please choose :north or :south."
    end
  north_ptr = FFI::MemoryPointer.new(:bool)
  north_ptr.write_bytes(north.to_s)

  FFI::OGR::SRSAPI.OSRGetUTMZone(@c_pointer, north_ptr)
end