Skip to content

Commit beb9a55

Browse files
committed
Infer geometry type if subjects include a geometry type
Closes #35
1 parent 39befb5 commit beb9a55

2 files changed

Lines changed: 18 additions & 0 deletions

File tree

lib/geo_combine/geoblacklight.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ def enhance_metadata
4242
metadata.each do |key, value|
4343
translate_formats(key, value)
4444
enhance_subjects(key, value)
45+
infer_geometry_type_from_subject(key, value)
4546
format_proper_date(key, value)
4647
fields_should_be_array(key, value)
4748
translate_geometry_type(key, value)
@@ -115,6 +116,17 @@ def translate_geometry_type(key, value)
115116
metadata[key] = geometry_types[value]
116117
end
117118

119+
##
120+
# Enhances empty 'layer_geom_type_s' field by populating from related subject
121+
def infer_geometry_type_from_subject(key, value)
122+
return unless key == 'layer_geom_type_s' && value.blank?
123+
124+
# If any subjects match a known geometry type, use the first that does as the geometry type
125+
metadata['dc_subject_sm'].find { |subject| geometry_types.value?(subject.capitalize) }&.tap do |subject|
126+
metadata[key] = subject.capitalize
127+
end
128+
end
129+
118130
##
119131
# Enhances the 'dc_subject_sm' field by translating subjects to ISO topic
120132
# categories

spec/lib/geo_combine/geoblacklight_spec.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,12 @@
6161
it 'formats the geometry type field' do
6262
expect(enhanced_geobl.metadata['layer_geom_type_s']).to eq 'Polygon'
6363
end
64+
65+
it 'populates the geometry type field from the subject field if not set' do
66+
enhanced_from_subject_geobl = described_class.new(basic_geoblacklight, 'dc_subject_sm' => ['polygon'])
67+
enhanced_from_subject_geobl.enhance_metadata
68+
expect(enhanced_from_subject_geobl.metadata['layer_geom_type_s']).to eq 'Polygon'
69+
end
6470
end
6571

6672
describe '#validate!' do

0 commit comments

Comments
 (0)