nofxx-postgis_adapter 0.5.7 → 0.7.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.
data/README.rdoc CHANGED
@@ -79,7 +79,7 @@ Here are this fork additions. To use it:
79
79
 
80
80
 
81
81
  class Street < ActiveRecord::Base
82
- acts_as_geom :line
82
+ acts_as_geom :line => :line_string
83
83
  end
84
84
 
85
85
  ...
@@ -324,7 +324,7 @@ Postgis Adapter is released under the MIT license.
324
324
 
325
325
  == Support
326
326
 
327
- Tested using rails 2.2.2/2.3.0 / postgresql 8.3.5 / postgis 1.3.3 / linux / osx
327
+ Tested using rails 2.2.2/2.3.3 / postgresql 8.3.7 / postgis 1.3.3 / linux / osx
328
328
 
329
329
  Any questions, enhancement proposals, bug notifications or corrections:
330
330
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.7
1
+ 0.7.0
@@ -10,23 +10,28 @@ module PostgisFunctions
10
10
 
11
11
  module ClassMethods
12
12
 
13
- # acts_as_geom :geom
14
- def acts_as_geom(*columns)
13
+ # acts_as_geom :db_field => :geom_type
14
+ # Examples:
15
+ #
16
+ # acts_as_geom :data => :point
17
+ # acts_as_geom :geom => :line_string
18
+ # acts_as_geom :geom => :polygon
19
+ #
20
+ def acts_as_geom(*geom)
15
21
  cattr_accessor :postgis_geoms
16
- self.postgis_geoms = {:columns => columns}
17
- columns.map do |g|
18
- case get_geom_type(g)
19
- when :point then send :include, PointFunctions
20
- when :polygon then send :include, PolygonFunctions
21
- when :line_string then send :include, LineStringFunctions
22
- end
23
- end
22
+ self.postgis_geoms = geom[0] # {:columns => column
23
+ send :include, case geom[0].values[0]
24
+ when :point then PointFunctions
25
+ when :polygon then PolygonFunctions
26
+ when :line_string then LineStringFunctions
27
+ end unless geom[0].kind_of? Symbol
24
28
  end
25
29
 
26
30
  def get_geom_type(column)
27
- self.columns.select { |c| c.name == column.to_s }[0].geometry_type
28
- rescue ActiveRecord::StatementInvalid => e
29
- nil
31
+ self.postgis_geoms.values[0] rescue nil
32
+ # self.columns.select { |c| c.name == column.to_s }[0].geometry_type
33
+ # rescue ActiveRecord::StatementInvalid => e
34
+ # nil
30
35
  end
31
36
  end
32
37
  end
@@ -438,7 +438,7 @@ module PostgisFunctions
438
438
  # Return Geometry ST_Transform(geometry g1, integer srid);
439
439
  #
440
440
  def transform!(new_srid)
441
- self[geo_columns.first] = postgis_calculate("Transform", self.new_record? ? self.geom : self, new_srid)
441
+ self[postgis_geoms.keys[0]] = postgis_calculate("Transform", self.new_record? ? self.geom : self, new_srid)
442
442
  end
443
443
 
444
444
  def transform(new_srid)
@@ -461,7 +461,7 @@ module PostgisFunctions
461
461
  # Returns the instance`s geom srid
462
462
  #
463
463
  def srid
464
- self[geo_columns.first].srid
464
+ self[postgis_geoms.keys.first].srid
465
465
  end
466
466
 
467
467
  #
@@ -494,7 +494,7 @@ module PostgisFunctions
494
494
  # Return Geometry
495
495
  def to_utm!(utm=nil)
496
496
  utm ||= utm_zone
497
- self[geo_columns.first] = transform(utm)
497
+ self[postgis_geoms.keys.first] = transform(utm)
498
498
  end
499
499
 
500
500
  def to_utm
@@ -792,7 +792,7 @@ module PostgisFunctions
792
792
  # use 'length'. Measurements are in the units of the spatial reference system of
793
793
  # the geometry.
794
794
  #
795
- # Accepts optional parameter, the srid to transform to.
795
+ # Accepts optional parameter, the sridto transform to.
796
796
  #
797
797
  # Returns Float ST_Perimeter(geometry g1);
798
798
  #
@@ -22,8 +22,8 @@ module PostgisFunctions
22
22
  def postgis_calculate(operation, subjects, options = {})
23
23
  subjects = [subjects] unless subjects.respond_to?(:map)
24
24
  return execute_geometrical_calculation(operation, subjects, options)
25
- rescue Exception => e
26
- raise StandardError, "#{e}"
25
+ #rescue Exception => e
26
+ #raise StandardError, "#{e}"
27
27
  end
28
28
 
29
29
  def geo_columns
@@ -44,7 +44,7 @@ module PostgisFunctions
44
44
 
45
45
  tables = on_db.map do |t| {
46
46
  :name => t.class.table_name,
47
- :column => t.geo_columns.first,
47
+ :column => t.postgis_geoms.keys[0],
48
48
  :uid => unique_identifier,
49
49
  :id => t[:id] }
50
50
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{postgis_adapter}
8
- s.version = "0.5.7"
8
+ s.version = "0.7.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Marcos Augusto"]
12
- s.date = %q{2009-08-14}
12
+ s.date = %q{2009-08-16}
13
13
  s.description = %q{Execute PostGIS functions on Active Record}
14
14
  s.email = %q{x@nofxx.com}
15
15
  s.extra_rdoc_files = [
@@ -41,21 +41,21 @@ class TableSrid4dPolygon < ActiveRecord::Base
41
41
  end
42
42
 
43
43
  class City < ActiveRecord::Base
44
- acts_as_geom :geom
44
+ acts_as_geom :geom => :polygon
45
45
  end
46
46
 
47
47
  class Position < ActiveRecord::Base
48
- acts_as_geom :geom
48
+ acts_as_geom :geom => :point
49
49
  end
50
50
 
51
51
  class Street < ActiveRecord::Base
52
- acts_as_geom :geom
52
+ acts_as_geom :geom => :line_string
53
53
  end
54
54
 
55
55
  class CommonGeo < ActiveRecord::Base
56
- acts_as_geom :geom
56
+ acts_as_geom :geom => :point
57
57
  end
58
58
 
59
59
  class DiffName < ActiveRecord::Base
60
- acts_as_geom :the_geom
60
+ acts_as_geom :the_geom => :point
61
61
  end
@@ -1,7 +1,7 @@
1
1
  require File.dirname(__FILE__) + '/../spec_helper.rb'
2
2
 
3
3
  class DiffColumn < ActiveRecord::Base
4
- acts_as_geom :ponto
4
+ acts_as_geom :ponto => :point
5
5
  end
6
6
 
7
7
  class NotInDb < ActiveRecord::Base
@@ -3,7 +3,8 @@ require File.dirname(__FILE__) + '/../spec_helper.rb'
3
3
  describe "Common Functions" do
4
4
 
5
5
  before(:all) do
6
- @c1 ||= City.create!(:data => "City1", :geom => Polygon.from_coordinates([[[12,45],[45,41],[4,1],[12,45]],[[2,5],[5,1],[14,1],[2,5]]],4326))
6
+ @poly = Polygon.from_coordinates([[[12,45],[45,41],[4,1],[12,45]],[[2,5],[5,1],[14,1],[2,5]]], 4326)
7
+ @c1 ||= City.create!(:data => "City1", :geom => @poly)
7
8
  @c2 ||= City.create!(:data => "City1", :geom => Polygon.from_coordinates([[[22,66],[65,65],[20,10],[22,66]],[[10,15],[15,11],[34,14],[10,15]]],4326))
8
9
  @c3 ||= City.create!(:data => "City3", :geom => Polygon.from_coordinates([[[12.4,-45.3],[45.4,41.6],[4.456,1.0698],[12.4,-45.3]],[[2.4,5.3],[5.4,1.4263],[14.46,1.06],[2.4,5.3]]],4326))
9
10
  @s1 ||= Street.create!(:data => "Street1", :geom => LineString.from_coordinates([[1,1],[2,2]],4326))
@@ -190,6 +191,14 @@ describe "Common Functions" do
190
191
  # @c1.disjoint?(@p2).should be_true
191
192
  # end
192
193
 
194
+ it "should check overlaps" do
195
+ @c2.contains?(@c1).should be_false
196
+ end
197
+
198
+ it "should check overlaps non saved" do
199
+ @c2.contains?(@poly).should be_false
200
+ end
201
+
193
202
  it "should find the UTM zone" do
194
203
  @c2.utm_zone.should eql(32737)
195
204
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nofxx-postgis_adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.7
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcos Augusto
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-08-14 00:00:00 -07:00
12
+ date: 2009-08-16 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15