spatial_features 1.2.9 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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