spatial_features 1.4.0 → 1.4.2

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: 4825ec1877a47df3ef4c5ccb0d83ee648e093322
4
- data.tar.gz: a9aa87b0eed16d9e1a12a629ece02ec164365b2c
3
+ metadata.gz: 99790dcf4cfb676fe6c09d44c7e244485a2043bc
4
+ data.tar.gz: a566293dbcd0bf269819193e83793f7f409805e0
5
5
  SHA512:
6
- metadata.gz: c5b3b9952c83e2010e6138be8784b87047c11a8694a7ecf4178617415d253bbf39978ebd985b079e9dacc3bacedcb312e70467314f31bd12af27f18606c9bf0a
7
- data.tar.gz: 88244ebe9df2c9d123de36aac02f9fe23cbebe946918fea36ac74c51f90bb74b7f044511ff5034aefb29851b158aa6392ffb765b41536ca66c3d1807efe61fb3
6
+ metadata.gz: d76515d5e9ae92f24658aa1cb40f1db5b2e99160d0da699a42257587bf5df096fed536c6797387cd4ee293a8a4c489787226c53af2dd91fe3ee7608ffa279ec9
7
+ data.tar.gz: 653517f9b24614809b50e19f6d9d2c7c8f0e192f13ece4109db321c5ff6dbb47f77b41a7ebb82c4949c517c6dd0d356ff381ebe68ca397e3d912931020a3db03
@@ -28,13 +28,10 @@ module SpatialFeatures
28
28
  end
29
29
 
30
30
  def within_buffer(other, buffer_in_meters = 0, options = {})
31
- if options[:cache] != false # CACHED
31
+ if options[:cache] != false && other.is_a?(ActiveRecord::Base) # CACHED
32
32
  return all.extending(UncachedRelation) unless class_for(other).spatial_cache_for?(self, buffer_in_meters) # Don't use the cache if it doesn't exist
33
33
 
34
- scope = cached_spatial_join(other)
35
- .select("#{table_name}.*, spatial_proximities.distance_in_meters, spatial_proximities.intersection_area_in_square_meters")
36
- .group("#{table_name}.#{primary_key}")
37
-
34
+ scope = cached_spatial_join(other).select("#{table_name}.*, spatial_proximities.distance_in_meters, spatial_proximities.intersection_area_in_square_meters")
38
35
  scope = scope.where("spatial_proximities.distance_in_meters <= ?", buffer_in_meters) if buffer_in_meters
39
36
  else # NON-CACHED
40
37
  scope = joins_features_for(other)
@@ -80,6 +77,9 @@ module SpatialFeatures
80
77
  end
81
78
  end
82
79
 
80
+ def intersection_area_in_square_meters(other)
81
+ features.intersection_area_in_square_meters(other.features)
82
+ end
83
83
 
84
84
  def features
85
85
  Feature.where(:spatial_model_type => self, :spatial_model_id => all)
@@ -35,6 +35,13 @@ class Feature < ActiveRecord::Base
35
35
  where('ST_IsValid(geog::geometry)')
36
36
  end
37
37
 
38
+ def self.intersection_area_in_square_meters(other_features)
39
+ self_geom = all.select('ST_Union(geog_lowres::geometry)').to_sql
40
+ other_geom = Feature.unscoped.where(:id => other_features).select('ST_Union(geog_lowres::geometry)').to_sql
41
+
42
+ connection.select_value "SELECT ST_Area(ST_Intersection((#{self_geom}), (#{other_geom})))"
43
+ end
44
+
38
45
  def envelope(buffer_in_meters = 0)
39
46
  envelope_json = JSON.parse(self.class.select("ST_AsGeoJSON(ST_Envelope(ST_Buffer(features.geog, #{buffer_in_meters})::geometry)) AS result").where(:id => id).first.result)
40
47
  envelope_json = envelope_json["coordinates"].first
@@ -1,3 +1,3 @@
1
1
  module SpatialFeatures
2
- VERSION = "1.4.0"
2
+ VERSION = "1.4.2"
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.4.0
4
+ version: 1.4.2
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-08 00:00:00.000000000 Z
12
+ date: 2015-12-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -59,6 +59,34 @@ dependencies:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rspec
64
+ requirement: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ type: :development
70
+ prerelease: false
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ - !ruby/object:Gem::Dependency
77
+ name: rspec-nc
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ type: :development
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
62
90
  description: Adds spatial methods to a model.
63
91
  email:
64
92
  - contact@culturecode.ca