spatial_features 1.2.9 → 1.3.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/README.md +22 -0
- data/lib/spatial_features/import/arcgis_kmz_features.rb +2 -1
- data/lib/spatial_features/models/feature.rb +14 -13
- data/lib/spatial_features/version.rb +1 -1
- metadata +4 -4
- data/README.rdoc +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 03c5e26e1a155abd0c2403c164e8dd32ac3f055d
|
4
|
+
data.tar.gz: 2b99647cea1d277c9fe0dc5f6672c44d29718e60
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a67cfb7b171a90a08c0427d62558c7ba016883909a1bb0bb0f729b1b7ae2ce16a33df64ffee6d57c56a77a85b8ba70327f03ed80df066408318d294b55f42ba7
|
7
|
+
data.tar.gz: e4f55c73c6f2703c09c77554ca8733be9b1d56110beb53893c2b6f2ae265a9b0b8dee7e340730e5856599c201247c43f468bfef31574d908f07302cc92f692ad
|
data/README.md
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# Spatial Features
|
2
|
+
|
3
|
+
Adds spatial methods to a model.
|
4
|
+
|
5
|
+
## Migration
|
6
|
+
```ruby
|
7
|
+
execute("
|
8
|
+
CREATE TABLE features (
|
9
|
+
id integer NOT NULL,
|
10
|
+
spatial_model_type character varying(255),
|
11
|
+
spatial_model_id integer,
|
12
|
+
name character varying(255),
|
13
|
+
feature_type character varying(255),
|
14
|
+
geog geography,
|
15
|
+
geog_lowres geography(Geometry,4326),
|
16
|
+
geom geometry(Geometry,26910),
|
17
|
+
kml text,
|
18
|
+
kml_lowres text,
|
19
|
+
metadata hstore
|
20
|
+
);
|
21
|
+
")
|
22
|
+
```
|
@@ -3,6 +3,7 @@ module ArcGISKmzFeatures
|
|
3
3
|
require 'digest/md5'
|
4
4
|
|
5
5
|
def update_features!(options = {})
|
6
|
+
@skip_invalid = options[:skip_invalid]
|
6
7
|
@make_valid = options[:make_valid]
|
7
8
|
@feature_error_messages = []
|
8
9
|
kml_array = []
|
@@ -49,7 +50,7 @@ module ArcGISKmzFeatures
|
|
49
50
|
self.clear_association_cache # clear_association_cache so after_feature_update knows about the new features
|
50
51
|
|
51
52
|
@feature_error_messages.concat new_features.collect {|feature| "Feature #{feature.name}: #{feature.errors.full_messages.to_sentence}" if feature.errors.present? }.compact.flatten
|
52
|
-
if @feature_error_messages.present?
|
53
|
+
if @feature_error_messages.present? && !@skip_invalid
|
53
54
|
raise UpdateError, "Error updating #{self.class} #{self.id}. #{@feature_error_messages.to_sentence}"
|
54
55
|
end
|
55
56
|
end
|
@@ -27,14 +27,6 @@ class Feature < ActiveRecord::Base
|
|
27
27
|
where(:feature_type => 'point')
|
28
28
|
end
|
29
29
|
|
30
|
-
def self.for_kml(options = {})
|
31
|
-
if options[:simplified]
|
32
|
-
select("features.name, features.kml, features.metadata").where("features.name IS NULL OR features.name NOT IN ('s', 't')")
|
33
|
-
else
|
34
|
-
select("features.name, ST_AsKML(features.geog, 6) AS kml, features.metadata")
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
30
|
def self.invalid
|
39
31
|
select('features.*, ST_IsValidReason(geog::geometry) AS invalid_geometry_message').where.not('ST_IsValid(geog::geometry)')
|
40
32
|
end
|
@@ -48,14 +40,23 @@ class Feature < ActiveRecord::Base
|
|
48
40
|
return envelope_json.values_at(0,2)
|
49
41
|
end
|
50
42
|
|
51
|
-
|
43
|
+
def self.cache_derivatives(options = {})
|
44
|
+
options.reverse_merge! :lowres_simplification => 0.0001, :lowres_precision => 5
|
52
45
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
46
|
+
update_all("geom = ST_Transform(geog::geometry, 26910),
|
47
|
+
geog_lowres = ST_SimplifyPreserveTopology(geog::geometry, #{options[:lowres_simplification]})"
|
48
|
+
.squish)
|
49
|
+
update_all("kml = ST_AsKML(features.geog, 6),
|
50
|
+
kml_lowres = ST_AsKML(geog_lowres::geometry, #{options[:lowres_precision]})"
|
51
|
+
.squish)
|
57
52
|
end
|
58
53
|
|
54
|
+
def cache_derivatives(*args)
|
55
|
+
self.class.where(:id => self.id).cache_derivatives(*args)
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
59
60
|
def geometry_is_valid
|
60
61
|
if geog?
|
61
62
|
instance = self.class.unscoped.invalid.from("(SELECT '#{sanitize_input_for_sql(self.geog)}'::geometry AS geog) #{self.class.table_name}").to_a.first
|
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: 1.
|
4
|
+
version: 1.3.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: 2015-
|
12
|
+
date: 2015-06-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -61,7 +61,7 @@ extensions: []
|
|
61
61
|
extra_rdoc_files: []
|
62
62
|
files:
|
63
63
|
- MIT-LICENSE
|
64
|
-
- README.
|
64
|
+
- README.md
|
65
65
|
- Rakefile
|
66
66
|
- config/initializers/register_oids.rb
|
67
67
|
- lib/spatial_features.rb
|
@@ -132,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
132
132
|
version: '0'
|
133
133
|
requirements: []
|
134
134
|
rubyforge_project:
|
135
|
-
rubygems_version: 2.4.
|
135
|
+
rubygems_version: 2.4.7
|
136
136
|
signing_key:
|
137
137
|
specification_version: 4
|
138
138
|
summary: Adds spatial methods to a model.
|
data/README.rdoc
DELETED