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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8587f98bdfed1f6729115073db7230737abad60c
4
- data.tar.gz: 8559ebfda494aa30f91d7417de20dfa0d8b54055
3
+ metadata.gz: 03c5e26e1a155abd0c2403c164e8dd32ac3f055d
4
+ data.tar.gz: 2b99647cea1d277c9fe0dc5f6672c44d29718e60
5
5
  SHA512:
6
- metadata.gz: 6b7cc30cc9d23061e92a41a131c22c46524fc5d17594b96ce97b70911bc424d9a4f5abde750c3326607a04611b5f7ef052a6b6bf1e972b91e97b7eee65e9ef37
7
- data.tar.gz: 692f673fe044720ad66bbf07f9b0629e163e173342a2c0810ed1233d577d193d86b7da53a0e30666ca86c983f6c6930a1d89ea6e8b5ad10bb025556536a86133
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
- private
43
+ def self.cache_derivatives(options = {})
44
+ options.reverse_merge! :lowres_simplification => 0.0001, :lowres_precision => 5
52
45
 
53
- def cache_derivatives
54
- self.class.connection.execute "UPDATE features SET geog_lowres = ST_SimplifyPreserveTopology(geog::geometry, 0.0001) WHERE id = #{self.id}"
55
- self.class.connection.execute "UPDATE features SET geom = ST_Transform(geog::geometry, 26910) WHERE id = #{self.id}"
56
- self.class.connection.execute "UPDATE features SET kml = ST_AsKML(geog_lowres::geometry, 5) WHERE id = #{self.id}"
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
@@ -1,3 +1,3 @@
1
1
  module SpatialFeatures
2
- VERSION = "1.2.9"
2
+ VERSION = "1.3.0"
3
3
  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: 1.2.9
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-05-08 00:00:00.000000000 Z
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.rdoc
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.6
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
@@ -1,3 +0,0 @@
1
- = Spatial Features
2
-
3
- Adds spatial methods to a model.