spatial_features 2.9.3 → 2.10.0
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.
- checksums.yaml +4 -4
- data/app/models/aggregate_feature.rb +6 -13
- data/lib/spatial_features/importers/kml.rb +29 -6
- data/lib/spatial_features/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea21f56e0a79abcbf3f5da215067d6940e015303f8513d429ca4e6993930cc4a
|
4
|
+
data.tar.gz: f9af513209d24e7733e988cbf7348b5bde675348e34537924ea8e04132a684a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04e52b66630bd3092f6c56ea7da6265c844c3c037644f6fe611fa6b1507a286daca147f9b14498272da0d2c6d18bb9355a1da96ddd63346c4a7eadbdeff52684
|
7
|
+
data.tar.gz: 0ce4e3fa042d6129429bf1cc7aa7a70e3af3e4e9671f78a6380aea4f7aca9c9be5642e4a66d4f79944ad9bbd58e3e97cd14e24768ca0fe6a8694ea1cf2c21c10
|
@@ -7,24 +7,17 @@ class AggregateFeature < AbstractFeature
|
|
7
7
|
def refresh
|
8
8
|
feature_array_sql = <<~SQL
|
9
9
|
ARRAY[
|
10
|
-
(#{features.select('
|
11
|
-
(#{features.select('
|
12
|
-
(#{features.select('
|
10
|
+
(#{features.select('ST_UNION(ST_CollectionExtract(geog::geometry, 1))').to_sql}),
|
11
|
+
(#{features.select('ST_UNION(ST_CollectionExtract(geog::geometry, 2))').to_sql}),
|
12
|
+
(#{features.select('ST_UNION(ST_CollectionExtract(geog::geometry, 3))').to_sql})
|
13
13
|
]
|
14
14
|
SQL
|
15
15
|
|
16
16
|
# Remove empty features so ST_COLLECT doesn't choke. This seems to be a difference between PostGIS 2.x and 3.x
|
17
|
-
compacted_feature_array_sql = <<~SQL
|
18
|
-
array_remove(
|
19
|
-
array_remove(
|
20
|
-
array_remove(#{feature_array_sql},
|
21
|
-
ST_GeomFromText('MultiPoint EMPTY')),
|
22
|
-
ST_GeomFromText('MultiLinestring EMPTY')),
|
23
|
-
ST_GeomFromText('MultiPolygon EMPTY'))
|
24
|
-
SQL
|
25
|
-
|
26
17
|
self.geog = ActiveRecord::Base.connection.select_value <<~SQL
|
27
|
-
SELECT ST_Collect(
|
18
|
+
SELECT ST_Collect(unnest)::geography
|
19
|
+
FROM (SELECT unnest(#{feature_array_sql})) AS features
|
20
|
+
WHERE NOT ST_IsEmpty(unnest)
|
28
21
|
SQL
|
29
22
|
self.save!
|
30
23
|
end
|
@@ -8,12 +8,7 @@ module SpatialFeatures
|
|
8
8
|
def each_record(&block)
|
9
9
|
Nokogiri::XML(@data).css('Placemark').each do |placemark|
|
10
10
|
name = placemark.css('name').text
|
11
|
-
metadata =
|
12
|
-
placemark.css('ExtendedData SimpleData').each do |node|
|
13
|
-
metadata[node['name']] = node.text
|
14
|
-
end
|
15
|
-
metadata.delete_if {|key, value| value.blank? }
|
16
|
-
|
11
|
+
metadata = extract_metadata(placemark)
|
17
12
|
|
18
13
|
{'Polygon' => 'POLYGON', 'LineString' => 'LINE', 'Point' => 'POINT'}.each do |kml_type, sql_type|
|
19
14
|
placemark.css(kml_type).each do |placemark|
|
@@ -32,6 +27,34 @@ module SpatialFeatures
|
|
32
27
|
def geom_from_kml(kml)
|
33
28
|
ActiveRecord::Base.connection.select_value("SELECT ST_GeomFromKML(#{ActiveRecord::Base.connection.quote(kml.to_s)})")
|
34
29
|
end
|
30
|
+
|
31
|
+
def extract_metadata(placemark)
|
32
|
+
metadata = {}
|
33
|
+
metadata.merge! extract_table(placemark)
|
34
|
+
metadata.merge! extract_extended_data(placemark)
|
35
|
+
metadata.merge! :description => placemark.css('description').text if metadata.empty?
|
36
|
+
metadata.delete_if {|key, value| value.blank? }
|
37
|
+
|
38
|
+
return metadata
|
39
|
+
end
|
40
|
+
|
41
|
+
def extract_extended_data(placemark)
|
42
|
+
metadata = {}
|
43
|
+
placemark.css('ExtendedData SimpleData').each do |node|
|
44
|
+
metadata[node['name']] = node.text
|
45
|
+
end
|
46
|
+
return metadata
|
47
|
+
end
|
48
|
+
|
49
|
+
def extract_table(placemark)
|
50
|
+
metadata = {}
|
51
|
+
placemark.css('description').each do |description|
|
52
|
+
Nokogiri::XML(description.text).css('html table table td').each_slice(2) do |key, value|
|
53
|
+
metadata[key.text] = value.text
|
54
|
+
end
|
55
|
+
end
|
56
|
+
return metadata
|
57
|
+
end
|
35
58
|
end
|
36
59
|
end
|
37
60
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spatial_features
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Wallace
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-
|
12
|
+
date: 2020-04-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|