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 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.