Module: GDAL::MajorObject

Included in:
Dataset, Driver, RasterBand, VirtualDataset, OGR::DataSource, OGR::Driver, OGR::Layer
Defined in:
lib/gdal/major_object.rb

Instance Method Summary collapse

Instance Method Details

#all_metadataHash{domain => Array<String>}

Returns:

  • (Hash{domain => Array<String>})


61
62
63
64
65
66
67
68
# File 'lib/gdal/major_object.rb', line 61

def 
   = .each_with_object({}) do |subdomain, obj|
     = (subdomain)
    obj[subdomain] = 
  end

  { DEFAULT:  }.merge()
end

#descriptionString

Returns:



71
72
73
74
75
76
# File 'lib/gdal/major_object.rb', line 71

def description
  desc, ptr = FFI::GDAL::GDAL.GDALGetDescription(@c_pointer)
  ptr.autorelease = false

  desc
end

#metadata(domain = nil) ⇒ Hash

Parameters:

  • domain (String) (defaults to: nil)

    Name of the domain to get metadata for.

Returns:

  • (Hash)


25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/gdal/major_object.rb', line 25

def (domain = nil)
  return unless @c_pointer

  m = FFI::GDAL::GDAL.GDALGetMetadata(@c_pointer, domain)
  return {} if m.null?

  data_array = m.get_array_of_string(0)

  data_array.each_with_object({}) do |key_value_pair, obj|
    key, value = key_value_pair.split("=", 2)

    begin
      obj[key] = MultiXml.parse(value)
    rescue MultiXml::ParseError
      obj[key] = value
    end
  end
end

#metadata_domain_listArray<String>

Returns:



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/gdal/major_object.rb', line 9

def 
  unless defined? FFI::GDAL::GDAL.GDALGetMetadataDomainList
    warn "GDALGetMetadataDomainList is't defined. GDAL::MajorObject#metadata_domain_list disabled."
    return []
  end

  list_pointer = FFI::GDAL::GDAL.GDALGetMetadataDomainList(@c_pointer)
  return [] if list_pointer.null?

  strings = list_pointer.get_array_of_string(0)

  strings.compact.delete_if(&:empty?)
end

#metadata_item(name, domain = "") ⇒ String

Parameters:

Returns:



47
48
49
50
51
52
# File 'lib/gdal/major_object.rb', line 47

def (name, domain = "")
  item, ptr = FFI::GDAL::GDAL.GDALGetMetadataItem(@c_pointer, name, domain)
  ptr.autorelease = false

  item
end

#null?Boolean

Returns:

  • (Boolean)


78
79
80
# File 'lib/gdal/major_object.rb', line 78

def null?
  @c_pointer.null?
end

#set_metadata_item(name, value, domain = "") ⇒ Object



54
55
56
57
58
# File 'lib/gdal/major_object.rb', line 54

def (name, value, domain = "")
  GDAL::CPLErrorHandler.manually_handle("Unable to set metadata item") do
    FFI::GDAL::GDAL.GDALSetMetadataItem(@c_pointer, name, value.to_s, domain)
  end
end