spatial_features 1.4.0 → 1.4.2

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