Module: Stanford::Mods::Geospatial
- Included in:
- Record
- Defined in:
- lib/stanford-mods/concerns/geo_spatial.rb
Overview
NON-SearchWorks specific wranglings of MODS cartographics metadata
Constant Summary collapse
- GMLNS =
'http://www.opengis.net/gml/3.2/'.freeze
Instance Method Summary collapse
-
#coordinates ⇒ Array{String}
Subject cartographic coordinates values.
-
#coordinates_as_bbox ⇒ Array{String}
(also: #point_bbox)
With 4-part space-delimted strings, like “-16.0 -15.0 28.0 13.0”.
-
#coordinates_as_envelope ⇒ Array{String}
Values suitable for solr SRPT fields, like “ENVELOPE(-16.0, 28.0, 13.0, -15.0)”.
-
#coordinates_objects ⇒ Array{Stanford::Mods::Coordinate}
Valid coordinates as objects.
-
#geo_extensions_as_envelope ⇒ Array{String}
Values suitable for solr SRPT fields, like “ENVELOPE(-16.0, 28.0, 13.0, -15.0)”.
-
#geo_extensions_point_data ⇒ Array{String}
Values suitable for solr SRPT fields, like “-16.0 28.0”.
Instance Method Details
#coordinates ⇒ Array{String}
Returns subject cartographic coordinates values.
10 11 12 |
# File 'lib/stanford-mods/concerns/geo_spatial.rb', line 10 def coordinates Array(mods_ng_xml.subject.cartographics.coordinates).map(&:text) end |
#coordinates_as_bbox ⇒ Array{String} Also known as: point_bbox
Returns with 4-part space-delimted strings, like “-16.0 -15.0 28.0 13.0”.
60 61 62 |
# File 'lib/stanford-mods/concerns/geo_spatial.rb', line 60 def coordinates_as_bbox coordinates_objects.map(&:as_bbox).compact end |
#coordinates_as_envelope ⇒ Array{String}
Returns values suitable for solr SRPT fields, like “ENVELOPE(-16.0, 28.0, 13.0, -15.0)”.
55 56 57 |
# File 'lib/stanford-mods/concerns/geo_spatial.rb', line 55 def coordinates_as_envelope coordinates_objects.map(&:as_envelope).compact end |
#coordinates_objects ⇒ Array{Stanford::Mods::Coordinate}
Returns valid coordinates as objects.
50 51 52 |
# File 'lib/stanford-mods/concerns/geo_spatial.rb', line 50 def coordinates_objects coordinates.map { |n| Stanford::Mods::Coordinate.new(n) }.select(&:valid?) end |
#geo_extensions_as_envelope ⇒ Array{String}
example xml leaf nodes <gml:lowerCorner>-122.191292 37.4063388</gml:lowerCorner> <gml:upperCorner>-122.149475 37.4435369</gml:upperCorner>
Returns values suitable for solr SRPT fields, like “ENVELOPE(-16.0, 28.0, 13.0, -15.0)”.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/stanford-mods/concerns/geo_spatial.rb', line 18 def geo_extensions_as_envelope mods_ng_xml.extension .xpath( '//rdf:RDF/rdf:Description/gml:boundedBy/gml:Envelope', 'gml' => GMLNS, 'rdf' => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#' ).map do |v| uppers = v.xpath('gml:upperCorner', 'gml' => GMLNS).text.split lowers = v.xpath('gml:lowerCorner', 'gml' => GMLNS).text.split "ENVELOPE(#{lowers[0]}, #{uppers[0]}, #{uppers[1]}, #{lowers[1]})" end rescue RuntimeError [] end |
#geo_extensions_point_data ⇒ Array{String}
example xml leaf nodes <gml:pos>-122.191292 37.4063388</gml:pos>
Returns values suitable for solr SRPT fields, like “-16.0 28.0”.
36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/stanford-mods/concerns/geo_spatial.rb', line 36 def geo_extensions_point_data mods_ng_xml.extension .xpath( '//rdf:RDF/rdf:Description/gmd:centerPoint/gml:Point[gml:pos]', 'gml' => GMLNS, 'gmd' => 'http://www.isotc211.org/2005/gmd', 'rdf' => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#' ).map do |v| lat, long = v.xpath('gml:pos', 'gml' => GMLNS).text.split "#{long} #{lat}" end end |