spatial_features 1.0.1 → 1.0.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: 10fa0bff76bebbb1e6bbf5d8ac7bf122e6391991
4
- data.tar.gz: 4e6659a9e0d6b97027cd5b2b8ee3d13ac86273c5
3
+ metadata.gz: 2502710a77234436e9df31b696307aec48406c4c
4
+ data.tar.gz: 256709db267694b3313f8b848f4b8273e0d1ae40
5
5
  SHA512:
6
- metadata.gz: 961114c59850e022b0401d3a9e8d276e75882eac8c4d0e5db11d0003e625cabeefa7a549bce9099bf21c48bf28db48c8df6358e96696ffe07d4cecd956c37ca9
7
- data.tar.gz: 8c95c131992d11849aa2ae5b4af9b300eff5b735de0a015b64b6cc9b3dfd025db3f919f2bed64561e8185ff059b1610eb2df79d461c89c4fbee6ee35a2b97c71
6
+ metadata.gz: def0c22906ea9400a2b5985e53af034bb83b23f1d554cedc1400e0ca3e39265ea7900c8f10366d44bf1a2f29a26fe879f5230a3b06638ef1157faf61cc8f745d
7
+ data.tar.gz: cdf4ca117eee31b4885fda6a1267b1284ebaed3efbc29202ceeacaef2e679c49e079c203df09af6af1446c201f9e9d7d86cc23ce84a439dd3489046d83645298
@@ -14,7 +14,7 @@ module SpatialExtensions
14
14
  end
15
15
 
16
16
  def abstract_venn_polygons_action(scope, target, &block)
17
- @venn_polygons = SpatialFeatures.venn_polygons(scope_for_search(scope).intersecting(target), target.class.where(:id => target), :simplified => false)
17
+ @venn_polygons = SpatialFeatures.venn_polygons(scope_for_search(scope).intersecting(target), target.class.where(:id => target), :target => target)
18
18
  @klass = klass_for_search(scope)
19
19
  @target = target
20
20
 
@@ -32,4 +32,4 @@ module SpatialExtensions
32
32
  def scope_for_search(scope)
33
33
  params.key?(:ids) ? scope.where(:id => params[:ids]) : scope
34
34
  end
35
- end
35
+ end
@@ -3,13 +3,12 @@ module SpatialFeatures
3
3
  # with kml for the overlapping area and a list of the record ids whose kml overlapped within that area
4
4
  def self.venn_polygons(*scopes)
5
5
  options = scopes.extract_options!
6
- column = options[:simplified] ? 'geog_lowres' : 'geog'
7
6
  scope = scopes.collect do |scope|
8
- scope.klass.from(scope, scope.klass.table_name).joins(:features).where('features.feature_type = ?', 'polygon').select("features.#{column}::geometry AS the_geom").to_sql
7
+ scope.klass.from(scope, scope.klass.table_name).joins(:features).where('features.feature_type = ?', 'polygon').select("features.geom AS the_geom").to_sql
9
8
  end.join(' UNION ')
10
9
 
11
10
  sql = "
12
- SELECT scope.id, scope.type, ST_AsKML(geom) AS kml FROM ST_Dump((
11
+ SELECT scope.id, scope.type, ST_AsKML(venn_polygons.geom) AS kml FROM ST_Dump((
13
12
  SELECT ST_Polygonize(the_geom) AS the_geom FROM (
14
13
 
15
14
  SELECT ST_Union(the_geom) AS the_geom FROM (
@@ -26,13 +25,20 @@ module SpatialFeatures
26
25
  )) AS venn_polygons
27
26
  "
28
27
 
28
+ # If we have a target model, throw away all venn_polygons not bounded by the target
29
+ if options[:target]
30
+ sql <<
31
+ "INNER JOIN features
32
+ ON features.spatial_model_type = '#{options[:target].class}' AND features.spatial_model_id = #{options[:target].id} AND ST_Intersects(features.geom, venn_polygons.geom)"
33
+ end
34
+
29
35
  # Join with the original polygons so we can determine which original polygons each venn polygon came from
30
36
  scope = scopes.collect do |scope|
31
- scope.klass.from(scope, scope.klass.table_name).joins(:features).where('features.feature_type = ?', 'polygon').select("#{scope.klass.table_name}.id, features.spatial_model_type AS type, features.#{column}").to_sql
37
+ scope.klass.from(scope, scope.klass.table_name).joins(:features).where('features.feature_type = ?', 'polygon').select("#{scope.klass.table_name}.id, features.spatial_model_type AS type, features.geom").to_sql
32
38
  end.join(' UNION ')
33
39
  sql <<
34
40
  "INNER JOIN (#{scope}) AS scope
35
- ON ST_Covers(scope.#{column}, ST_PointOnSurface(venn_polygons.geom)) -- Shrink the venn polygons so they don't share edges with the original polygons which could cause varying results due to tiny inaccuracy"
41
+ ON ST_Covers(scope.geom, ST_PointOnSurface(venn_polygons.geom)) -- Shrink the venn polygons so they don't share edges with the original polygons which could cause varying results due to tiny inaccuracy"
36
42
 
37
43
  # Eager load the records for each venn polygon
38
44
  eager_load_hash = Hash.new {|hash, key| hash[key] = []}
@@ -53,4 +59,4 @@ module SpatialFeatures
53
59
  OpenStruct.new(:kml => kml, :records => records)
54
60
  end
55
61
  end
56
- end
62
+ end
@@ -1,3 +1,3 @@
1
1
  module SpatialFeatures
2
- VERSION = "1.0.1"
2
+ VERSION = "1.0.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.0.1
4
+ version: 1.0.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: 2014-11-28 00:00:00.000000000 Z
12
+ date: 2015-01-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -117,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
117
  version: '0'
118
118
  requirements: []
119
119
  rubyforge_project:
120
- rubygems_version: 2.4.1
120
+ rubygems_version: 2.2.2
121
121
  signing_key:
122
122
  specification_version: 4
123
123
  summary: Adds spatial methods to a model.