postgis_adapter 0.5.1 → 0.7.1

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
@@ -7,6 +7,7 @@ It also provides a way to manage these columns in migrations.
7
7
  This fork adds handy methods to make geometrical calculations on postgis.
8
8
  Based on http://georuby.rubyforge.org Spatial Adapter
9
9
 
10
+ RDocs - http://docs.github.com/nofxx/postgis_adapter
10
11
  Postgis Manual - http://postgis.refractions.net/documentation/manual-svn
11
12
 
12
13
  *PostGIS and Rails 2+ only*.
@@ -32,6 +33,7 @@ Rails:
32
33
 
33
34
  config.gem "postgis_adapter"
34
35
 
36
+
35
37
  Github version:
36
38
 
37
39
 
@@ -77,20 +79,29 @@ model and the table defined above :
77
79
 
78
80
  Here are this fork additions. To use it:
79
81
 
82
+ acts_as_geom [column_name] => [geom_type]
83
+
84
+
85
+ Examples:
86
+
87
+ class POI < ActiveRecord::Base
88
+ acts_as_geom :geom => :point
89
+ end
80
90
 
81
91
  class Street < ActiveRecord::Base
82
- acts_as_geom :line
92
+ acts_as_geom :line => :line_string
83
93
  end
84
94
 
85
95
  ...
86
96
 
87
- @place = Poi.new( :data => **Point** )
88
- @park = Park.new( :area => **Polygon** )
89
- @street = Street.new( :line => **LineString** )
90
97
 
91
98
 
92
99
  == Play!
93
100
 
101
+ @place = Poi.new( :geom => Point.from_x_y(10,20) )
102
+ @park = Park.new( :area => **Polygon** )
103
+ @street = Street.new( :line => **LineString** )
104
+
94
105
  @place.inside?(@park)
95
106
  => true
96
107
 
@@ -98,10 +109,9 @@ Here are this fork additions. To use it:
98
109
  => false
99
110
 
100
111
  @place.outside?(@park)
101
-
102
112
  @street.crosses?(@park)
103
-
104
113
  @area.contains?(@place)
114
+ ...
105
115
 
106
116
 
107
117
  === Polygons:
@@ -121,7 +131,7 @@ Supports transform (useful to transform SRID to UTM for area in Km^2)
121
131
  => Area with new SRID
122
132
 
123
133
 
124
- === Line Strings:
134
+ === LineStrings:
125
135
 
126
136
  @street_east.intersects?(@street_west)
127
137
  => false
@@ -129,9 +139,6 @@ Supports transform (useful to transform SRID to UTM for area in Km^2)
129
139
  @street_central.length
130
140
  => 4508.53636
131
141
 
132
- @street_central.length(:miles)
133
- => 2.81798593
134
-
135
142
  @street.length_spheroid
136
143
  => 4.40853636
137
144
 
@@ -147,7 +154,7 @@ Supports transform (useful to transform SRID to UTM for area in Km^2)
147
154
  Country.contain(@point)
148
155
  => The Conutry that contains the point
149
156
 
150
- Areas.contains(@point)
157
+ Area.contains(@point)
151
158
  => [Array of areas contains the point...
152
159
 
153
160
 
@@ -183,7 +190,6 @@ Or use a (almost) PostGIS like notation:
183
190
  @area.bbox "@", @park
184
191
 
185
192
 
186
-
187
193
  === Warning
188
194
 
189
195
  *To be fixed:*
@@ -194,12 +200,6 @@ implement a multi geom.
194
200
  http://nofxx.lighthouseapp.com/projects/20712/tickets/3-multiple-geoms-in-model
195
201
 
196
202
 
197
- === Wiki
198
-
199
- Check out the wiki pages (http://github.com/nofxx/postgis_adapter/wikis).
200
- For all functions.
201
-
202
-
203
203
  === Find_by
204
204
 
205
205
  find_by_*column* has been redefined when column is of a geometric type.
@@ -237,16 +237,29 @@ geometric column in PostGIS, along with the addition of a spatial
237
237
  index on the column :
238
238
 
239
239
  ActiveRecord::Schema.define do
240
- create_table :places do |t|
241
- t.string :name
242
- t.point :geom, :srid => 123, :with_z => true, :null => false
240
+ create_table :places do |t|
241
+ t.string :name
242
+ t.point :geom, :srid => 4326, :with_z => true, :null => false
243
243
 
244
244
  t.timestamps
245
245
  end
246
- add_index :table_points, :geom, :spatial=>true
246
+
247
+ add_index :places, :geom, :spatial => true
247
248
  end
248
249
 
249
250
 
251
+ Types:
252
+
253
+ point
254
+ polygon
255
+ line_string
256
+ multi_point
257
+ multi_polygon
258
+ multi_line_string
259
+ geometry
260
+ geometry_collection
261
+
262
+
250
263
  === Fixtures
251
264
 
252
265
  If you use fixtures for your unit tests, at some point,
@@ -311,14 +324,14 @@ Postgis Adapter is released under the MIT license.
311
324
 
312
325
  == Support
313
326
 
314
- 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
315
328
 
316
329
  Any questions, enhancement proposals, bug notifications or corrections:
317
330
 
318
331
 
319
332
  === PostgisAdapter
320
333
 
321
- Project Tracker http://nofxx.lighthouseapp.com/projects/20712-postgis_adapter
334
+ http://github.com/nofxx/postgis_adapter/issues
322
335
 
323
336
 
324
337
  === SpatialAdapter
data/Rakefile CHANGED
@@ -34,11 +34,37 @@ task :default => :spec
34
34
 
35
35
  require 'rake/rdoctask'
36
36
  Rake::RDocTask.new do |rdoc|
37
- config = YAML.load(File.read('VERSION.yml'))
38
- version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
39
-
37
+ version = File.exist?('VERSION') ? File.read('VERSION').chomp : ""
40
38
  rdoc.rdoc_dir = 'rdoc'
41
39
  rdoc.title = "postgis_adapter #{version}"
42
40
  rdoc.rdoc_files.include('README*')
43
41
  rdoc.rdoc_files.include('lib/**/*.rb')
44
42
  end
43
+
44
+ #
45
+ # Reek & Roodi
46
+ #
47
+ begin
48
+ require 'reek/rake_task'
49
+ Reek::RakeTask.new do |t|
50
+ t.fail_on_error = true
51
+ t.verbose = false
52
+ t.source_files = 'lib/**/*.rb'
53
+ end
54
+ rescue LoadError
55
+ task :reek do
56
+ abort "Reek is not available. In order to run reek, you must: sudo gem install reek"
57
+ end
58
+ end
59
+
60
+ begin
61
+ require 'roodi'
62
+ require 'roodi_task'
63
+ RoodiTask.new do |t|
64
+ t.verbose = false
65
+ end
66
+ rescue LoadError
67
+ task :roodi do
68
+ abort "Roodi is not available. In order to run roodi, you must: sudo gem install roodi"
69
+ end
70
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.7.1
@@ -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
@@ -60,8 +60,10 @@ ActiveRecord::SchemaDumper.class_eval do
60
60
  else
61
61
  tbl.print " t.column #{column.name.inspect}, #{column.type.inspect}"
62
62
  end
63
- tbl.print ", :limit => #{column.limit.inspect}" if column.limit != @types[column.type][:limit]
64
- tbl.print ", :default => #{column.default.inspect}" if !column.default.nil?
63
+ tbl.print ", :limit => #{column.limit.inspect}" if column.limit != @types[column.type][:limit] && column.precision.blank? && column.scale.blank?
64
+ tbl.print ", :precision => #{column.precision.inspect}" if column.precision != @types[column.type][:precision]
65
+ tbl.print ", :scale => #{column.scale.inspect}" if column.scale != @types[column.type][:scale]
66
+ tbl.print ", :default => #{default_string(column.default)}" if !column.default.nil?
65
67
  tbl.print ", :null => false" if !column.null
66
68
  tbl.puts
67
69
  end
@@ -29,35 +29,73 @@ GeoRuby::SimpleFeatures::Geometry.class_eval do
29
29
  end
30
30
 
31
31
  ActiveRecord::Base.class_eval do
32
- require 'active_record/version'
33
-
34
- #Vit Ondruch & Tilmann Singer 's patch
35
- def self.get_conditions(attrs)
36
- attrs.map do |attr, value|
37
- attr = attr.to_s
38
- column_name = connection.quote_column_name(attr)
39
- if columns_hash[attr].is_a?(SpatialColumn)
40
- if value.is_a?(Array)
41
- attrs[attr.to_sym]= "BOX3D(" + value[0].join(" ") + "," + value[1].join(" ") + ")"
42
- "#{table_name}.#{column_name} && SetSRID(?::box3d, #{value[2] || @@default_srid || DEFAULT_SRID} ) "
43
- elsif value.is_a?(Envelope)
44
- attrs[attr.to_sym]= "BOX3D(" + value.lower_corner.text_representation + "," + value.upper_corner.text_representation + ")"
45
- "#{table_name}.#{column_name} && SetSRID(?::box3d, #{value.srid} ) "
46
- else
47
- "#{table_name}.#{column_name} && ? "
48
- end
32
+
33
+ #Vit Ondruch & Tilmann Singer 's patch
34
+ def self.get_conditions(attrs)
35
+ attrs.map do |attr, value|
36
+ attr = attr.to_s
37
+ column_name = connection.quote_column_name(attr)
38
+ if columns_hash[attr].is_a?(SpatialColumn)
39
+ if value.is_a?(Array)
40
+ attrs[attr.to_sym]= "BOX3D(" + value[0].join(" ") + "," + value[1].join(" ") + ")"
41
+ "#{table_name}.#{column_name} && SetSRID(?::box3d, #{value[2] || @@default_srid || DEFAULT_SRID} ) "
42
+ elsif value.is_a?(Envelope)
43
+ attrs[attr.to_sym]= "BOX3D(" + value.lower_corner.text_representation + "," + value.upper_corner.text_representation + ")"
44
+ "#{table_name}.#{column_name} && SetSRID(?::box3d, #{value.srid} ) "
49
45
  else
50
- "#{table_name}.#{attribute_condition(column_name, value)}"
46
+ "#{table_name}.#{column_name} && ? "
51
47
  end
52
- end.join(' AND ')
53
- end
48
+ else
49
+ attribute_condition("#{table_name}.#{column_name}", value)
50
+ end
51
+ end.join(' AND ')
52
+ end
54
53
 
55
- #For Rails >= 2
54
+ #For Rails >= 2
55
+ if method(:sanitize_sql_hash_for_conditions).arity == 1
56
+ # Before Rails 2.3.3, the method had only one argument
56
57
  def self.sanitize_sql_hash_for_conditions(attrs)
57
58
  conditions = get_conditions(attrs)
58
59
  replace_bind_variables(conditions, expand_range_bind_variables(attrs.values))
59
60
  end
61
+ elsif method(:sanitize_sql_hash_for_conditions).arity == -2
62
+ # After Rails 2.3.3, the method had only two args, the last one optional
63
+ def self.sanitize_sql_hash_for_conditions(attrs, table_name = quoted_table_name)
64
+ attrs = expand_hash_conditions_for_aggregates(attrs)
65
+
66
+ conditions = attrs.map do |attr, value|
67
+ unless value.is_a?(Hash)
68
+ attr = attr.to_s
69
+
70
+ # Extract table name from qualified attribute names.
71
+ if attr.include?('.')
72
+ table_name, attr = attr.split('.', 2)
73
+ table_name = connection.quote_table_name(table_name)
74
+ end
75
+
76
+ if columns_hash[attr].is_a?(SpatialColumn)
77
+ if value.is_a?(Array)
78
+ attrs[attr.to_sym]= "BOX3D(" + value[0].join(" ") + "," + value[1].join(" ") + ")"
79
+ "#{table_name}.#{connection.quote_column_name(attr)} && SetSRID(?::box3d, #{value[2] || DEFAULT_SRID} ) "
80
+ elsif value.is_a?(Envelope)
81
+ attrs[attr.to_sym]= "BOX3D(" + value.lower_corner.text_representation + "," + value.upper_corner.text_representation + ")"
82
+ "#{table_name}.#{connection.quote_column_name(attr)} && SetSRID(?::box3d, #{value.srid} ) "
83
+ else
84
+ "#{table_name}.#{connection.quote_column_name(attr)} && ? "
85
+ end
86
+ else
87
+ attribute_condition("#{table_name}.#{connection.quote_column_name(attr)}", value)
88
+ end
89
+ else
90
+ sanitize_sql_hash_for_conditions(value, connection.quote_table_name(attr.to_s))
91
+ end
92
+ end.join(' AND ')
60
93
 
94
+ replace_bind_variables(conditions, expand_range_bind_variables(attrs.values))
95
+ end
96
+ else
97
+ raise "Spatial Adapter will not work with this version of Rails"
98
+ end
61
99
  end
62
100
 
63
101
  ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.class_eval do
@@ -81,11 +119,15 @@ ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.class_eval do
81
119
 
82
120
  alias :original_tables :tables
83
121
  def tables(name = nil) #:nodoc:
122
+ original_tables(name) + views(name)
123
+ end
124
+
125
+ def views(name = nil) #:nodoc:
84
126
  schemas = schema_search_path.split(/,/).map { |p| quote(p.strip) }.join(',')
85
- original_tables(name) + query(<<-SQL, name).map { |row| row[0] }
127
+ query(<<-SQL, name).map { |row| row[0] }
86
128
  SELECT viewname
87
- FROM pg_views
88
- WHERE schemaname IN (#{schemas})
129
+ FROM pg_views
130
+ WHERE schemaname IN (#{schemas})
89
131
  SQL
90
132
  end
91
133
 
@@ -145,14 +187,12 @@ ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.class_eval do
145
187
  # <table_name>_<column_name>_spatial_index unless
146
188
  # the key :name is present in the options hash, in which case its
147
189
  # value is taken as the name of the index.
148
- def add_index(table_name,column_name,options = {})
190
+ def add_index(table_name, column_name, options = {})
149
191
  index_name = options[:name] || index_name(table_name,:column => Array(column_name))
150
192
  if options[:spatial]
151
193
  execute "CREATE INDEX #{index_name} ON #{table_name} USING GIST (#{Array(column_name).join(", ")} GIST_GEOMETRY_OPS)"
152
194
  else
153
- index_type = options[:unique] ? "UNIQUE" : ""
154
- #all together
155
- execute "CREATE #{index_type} INDEX #{index_name} ON #{table_name} (#{Array(column_name).join(", ")})"
195
+ super
156
196
  end
157
197
  end
158
198
 
@@ -198,12 +238,12 @@ ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.class_eval do
198
238
  if type =~ /geometry/i
199
239
  raw_geom_info = raw_geom_infos[name]
200
240
  if raw_geom_info.nil?
201
- ActiveRecord::ConnectionAdapters::SpatialPostgreSQLColumn.create_simplified(name,default,notnull == "f")
241
+ ActiveRecord::ConnectionAdapters::SpatialPostgreSQLColumn.create_simplified(name, default, notnull == "f")
202
242
  else
203
243
  ActiveRecord::ConnectionAdapters::SpatialPostgreSQLColumn.new(name, default,raw_geom_info.type, notnull == "f", raw_geom_info.srid, raw_geom_info.with_z, raw_geom_info.with_m)
204
244
  end
205
245
  else
206
- ActiveRecord::ConnectionAdapters::Column.new(name, ActiveRecord::ConnectionAdapters::PostgreSQLColumn.extract_value_from_default( default), type,notnull == "f")
246
+ ActiveRecord::ConnectionAdapters::PostgreSQLColumn.new(name, ActiveRecord::ConnectionAdapters::PostgreSQLColumn.extract_value_from_default( default), type, notnull == "f")
207
247
  end
208
248
  end
209
249
  end
@@ -235,7 +235,7 @@ module PostgisFunctions
235
235
 
236
236
  def simplify!(tolerance=0.1)
237
237
  #FIXME: not good..
238
- self.update_attribute(get_column_name, simplify)
238
+ self.update_attribute(geo_columns.first, simplify)
239
239
  end
240
240
 
241
241
  #
@@ -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[get_column_name] = postgis_calculate("Transform", 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[get_column_name].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[get_column_name] = transform(utm)
497
+ self[postgis_geoms.keys.first] = transform(utm)
498
498
  end
499
499
 
500
500
  def to_utm
@@ -502,6 +502,15 @@ module PostgisFunctions
502
502
  end
503
503
 
504
504
  #
505
+ # Returns Geometry as GeoJSON
506
+ #
507
+ # http://geojson.org/
508
+ #
509
+ def as_geo_json
510
+ postgis_calculate(:AsGeoJSON, self)
511
+ end
512
+
513
+
505
514
  #
506
515
  #
507
516
  # LINESTRING
@@ -519,7 +528,7 @@ module PostgisFunctions
519
528
  # Returns Float
520
529
  #
521
530
  def length
522
- dis = postgis_calculate(:length, self).to_f
531
+ postgis_calculate(:length, self).to_f
523
532
  end
524
533
 
525
534
  #
@@ -530,7 +539,7 @@ module PostgisFunctions
530
539
  # Returns Float
531
540
  #
532
541
  def length_3d
533
- dis = postgis_calculate(:length3d, self).to_f
542
+ postgis_calculate(:length3d, self).to_f
534
543
  end
535
544
 
536
545
  #
@@ -551,7 +560,7 @@ module PostgisFunctions
551
560
  # Returns Float length_spheroid(geometry linestring, spheroid);
552
561
  #
553
562
  def length_spheroid(spheroid = EARTH_SPHEROID)
554
- dis = postgis_calculate(:length_spheroid, self, spheroid).to_f
563
+ postgis_calculate(:length_spheroid, self, spheroid).to_f
555
564
  end
556
565
 
557
566
  #
@@ -594,6 +603,14 @@ module PostgisFunctions
594
603
  postgis_calculate(:crosses, [self, other])
595
604
  end
596
605
 
606
+ #
607
+ # Warning: PostGIS 1.4+
608
+ #
609
+ # Return crossing direction
610
+ def line_crossing_direction(other)
611
+ postgis_calculate(:lineCrossingDirection, [self, other])
612
+ end
613
+
597
614
  #
598
615
  # Returns a float between 0 and 1 representing the location of the closest point
599
616
  # on LineString to the given Point, as a fraction of total 2d line length.
@@ -709,7 +726,7 @@ module PostgisFunctions
709
726
  # Returns Float ST_Distance_Sphere(geometry pointlonlatA, geometry pointlonlatB);
710
727
  #
711
728
  def distance_sphere_to(other)
712
- dis = postgis_calculate(:distance_sphere, [self, other]).to_f
729
+ postgis_calculate(:distance_sphere, [self, other]).to_f
713
730
  end
714
731
 
715
732
  #
@@ -792,7 +809,7 @@ module PostgisFunctions
792
809
  # use 'length'. Measurements are in the units of the spatial reference system of
793
810
  # the geometry.
794
811
  #
795
- # Accepts optional parameter, the srid to transform to.
812
+ # Accepts optional parameter, the sridto transform to.
796
813
  #
797
814
  # Returns Float ST_Perimeter(geometry g1);
798
815
  #
@@ -5,8 +5,8 @@
5
5
  # Hope you enjoy this plugin.
6
6
  #
7
7
  #
8
- # Post any bugs/suggestions to the lighthouse tracker:
9
- # http://nofxx.lighthouseapp.com/projects/20712-postgisadapter
8
+ # Post any bugs/suggestions to GitHub issues tracker:
9
+ # http://github.com/nofxx/postgis_adapter/issues
10
10
  #
11
11
  #
12
12
  # Some links:
@@ -21,17 +21,15 @@ module PostgisFunctions
21
21
 
22
22
  def postgis_calculate(operation, subjects, options = {})
23
23
  subjects = [subjects] unless subjects.respond_to?(:map)
24
- return execute_geometrical_calculation(operation, subjects, options)
25
- rescue Exception => e
26
- raise StandardError, "#{e}"
24
+ execute_geometrical_calculation(operation, subjects, options)
27
25
  end
28
26
 
29
- private
30
-
31
- def get_column_name
32
- @geo_column ||= postgis_geoms[:columns][0]
27
+ def geo_columns
28
+ @geo_columns ||= postgis_geoms[:columns]
33
29
  end
34
30
 
31
+ private
32
+
35
33
  #
36
34
  # Construct the PostGIS SQL query
37
35
  #
@@ -44,6 +42,7 @@ module PostgisFunctions
44
42
 
45
43
  tables = on_db.map do |t| {
46
44
  :name => t.class.table_name,
45
+ :column => t.postgis_geoms.keys[0],
47
46
  :uid => unique_identifier,
48
47
  :id => t[:id] }
49
48
  end
@@ -54,7 +53,7 @@ module PostgisFunctions
54
53
  options = nil
55
54
  end
56
55
 
57
- fields = tables.map { |f| "#{f[:uid]}.#{get_column_name}" } # W1.geom
56
+ fields = tables.map { |f| "#{f[:uid]}.#{f[:column]}" } # W1.geom
58
57
  fields << not_db.map { |g| "'#{g.as_hex_ewkb}'::geometry"} unless not_db.empty?
59
58
  fields.map! { |f| "ST_Transform(#{f}, #{transform})" } if transform # ST_Transform(W1.geom,x)
60
59
  conditions = tables.map { |f| "#{f[:uid]}.id = #{f[:id]}" } # W1.id = 5
@@ -74,10 +73,10 @@ module PostgisFunctions
74
73
  fields = fields.join(" #{options} ")
75
74
  end
76
75
 
77
- sql = "SELECT #{opcode}(#{fields}) "
78
- sql << "FROM #{tables.join(",")} " if tables
79
- sql << "WHERE #{conditions.join(" AND ")}" if conditions
80
- #p sql; sql
76
+ sql = "SELECT #{opcode}(#{fields}) "
77
+ sql << "FROM #{tables.join(",")} " unless tables.empty?
78
+ sql << "WHERE #{conditions.join(" AND ")}" unless conditions.empty?
79
+ sql
81
80
  end
82
81
 
83
82
  #
@@ -92,11 +91,16 @@ module PostgisFunctions
92
91
  def execute_geometrical_calculation(operation, subject, options) #:nodoc:
93
92
  value = connection.select_value(construct_geometric_sql(operation, subject, options))
94
93
  return nil unless value
95
- if value =~ /t|f/
94
+ # TODO: bench case vs if here
95
+ if value =~ /^[tf]$/
96
96
  {"f" => false, "t" => true}[value]
97
+ elsif value =~ /^\{/
98
+ value
97
99
  else
98
100
  GeoRuby::SimpleFeatures::Geometry.from_hex_ewkb(value) rescue value
99
101
  end
102
+ rescue Exception => e
103
+ raise StandardError, "#{e}"
100
104
  end
101
105
 
102
106
  # Get a unique ID for tables
@@ -1,12 +1,15 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
1
4
  # -*- encoding: utf-8 -*-
2
5
 
3
6
  Gem::Specification.new do |s|
4
7
  s.name = %q{postgis_adapter}
5
- s.version = "0.5.1"
8
+ s.version = "0.7.1"
6
9
 
7
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
11
  s.authors = ["Marcos Augusto"]
9
- s.date = %q{2009-05-21}
12
+ s.date = %q{2009-10-10}
10
13
  s.description = %q{Execute PostGIS functions on Active Record}
11
14
  s.email = %q{x@nofxx.com}
12
15
  s.extra_rdoc_files = [
@@ -16,12 +19,10 @@ Gem::Specification.new do |s|
16
19
  ".gitignore",
17
20
  "History.txt",
18
21
  "MIT-LICENSE",
19
- "Manifest.txt",
20
22
  "README.rdoc",
21
23
  "Rakefile",
22
- "VERSION.yml",
24
+ "VERSION",
23
25
  "init.rb",
24
- "install.rb",
25
26
  "lib/postgis_adapter.rb",
26
27
  "lib/postgis_adapter/acts_as_geom.rb",
27
28
  "lib/postgis_adapter/common_spatial_adapter.rb",
@@ -31,10 +32,6 @@ Gem::Specification.new do |s|
31
32
  "lib/postgis_functions/common.rb",
32
33
  "postgis_adapter.gemspec",
33
34
  "rails/init.rb",
34
- "script/console",
35
- "script/destroy",
36
- "script/generate",
37
- "spec/db/database_postgis.yml",
38
35
  "spec/db/models_postgis.rb",
39
36
  "spec/db/schema_postgis.rb",
40
37
  "spec/postgis_adapter/acts_as_geom_spec.rb",
@@ -45,26 +42,25 @@ Gem::Specification.new do |s|
45
42
  "spec/postgis_functions/common_spec.rb",
46
43
  "spec/postgis_functions_spec.rb",
47
44
  "spec/spec.opts",
48
- "spec/spec_helper.rb",
49
- "uninstall.rb"
45
+ "spec/spec_helper.rb"
50
46
  ]
51
47
  s.homepage = %q{http://github.com/nofxx/postgis_adapter}
52
48
  s.rdoc_options = ["--charset=UTF-8"]
53
49
  s.require_paths = ["lib"]
54
50
  s.rubyforge_project = %q{postgis_adapter}
55
- s.rubygems_version = %q{1.3.3}
51
+ s.rubygems_version = %q{1.3.5}
56
52
  s.summary = %q{PostGIS Adapter for Active Record}
57
53
  s.test_files = [
58
- "spec/postgis_functions_spec.rb",
59
- "spec/postgis_functions/class_spec.rb",
60
- "spec/postgis_functions/bbox_spec.rb",
61
- "spec/postgis_functions/common_spec.rb",
62
- "spec/db/models_postgis.rb",
54
+ "spec/db/models_postgis.rb",
63
55
  "spec/db/schema_postgis.rb",
64
- "spec/postgis_adapter_spec.rb",
65
- "spec/postgis_adapter/common_spatial_adapter_spec.rb",
66
56
  "spec/postgis_adapter/acts_as_geom_spec.rb",
67
- "spec/spec_helper.rb"
57
+ "spec/postgis_adapter/common_spatial_adapter_spec.rb",
58
+ "spec/postgis_functions_spec.rb",
59
+ "spec/spec_helper.rb",
60
+ "spec/postgis_adapter_spec.rb",
61
+ "spec/postgis_functions/class_spec.rb",
62
+ "spec/postgis_functions/common_spec.rb",
63
+ "spec/postgis_functions/bbox_spec.rb"
68
64
  ]
69
65
 
70
66
  if s.respond_to? :specification_version then
@@ -31,27 +31,31 @@ end
31
31
  class Table3dmPoint < ActiveRecord::Base
32
32
  end
33
33
 
34
- class Table4dPoint < ActiveRecord::Base
34
+ class Table4dPoint < ActiveRecord::Base
35
35
  end
36
36
 
37
- class TableSridLineString < ActiveRecord::Base
37
+ class TableSridLineString < ActiveRecord::Base
38
38
  end
39
39
 
40
- class TableSrid4dPolygon < ActiveRecord::Base
40
+ 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
+ end
58
+
59
+ class DiffName < ActiveRecord::Base
60
+ acts_as_geom :the_geom => :point
57
61
  end
@@ -1,4 +1,3 @@
1
-
2
1
  #add some postgis specific tables
3
2
  ActiveRecord::Schema.define() do
4
3
 
@@ -62,27 +61,32 @@ ActiveRecord::Schema.define() do
62
61
  end
63
62
 
64
63
  create_table :cities, :force => true do |t|
65
- t.string :data, :limit => 100
66
- t.integer :value
67
- t.polygon :geom,:null=>false,:srid=>4326
64
+ t.string :data, :limit => 100
65
+ t.integer :value
66
+ t.polygon :geom, :null => false, :srid => 4326
68
67
  end
69
68
 
70
69
  create_table :positions, :force => true do |t|
71
- t.string :data, :limit => 100
72
- t.integer :value
73
- t.point :geom,:null=>false,:srid=>4326
70
+ t.string :data, :limit => 100
71
+ t.integer :value
72
+ t.point :geom, :null => false, :srid => 4326
74
73
  end
75
74
 
76
75
  create_table :streets, :force => true do |t|
77
- t.string :data, :limit => 100
78
- t.integer :value
79
- t.line_string :geom,:null=>false,:srid=>4326
76
+ t.string :data, :limit => 100
77
+ t.integer :value
78
+ t.line_string :geom, :null => false, :srid => 4326
80
79
  end
81
80
 
82
81
  create_table :common_geos, :force => true do |t|
83
- t.string :data, :limit => 100
84
- t.integer :value
85
- t.point :geom,:null=>false,:srid=>4326
82
+ t.string :data, :limit => 100
83
+ t.integer :value
84
+ t.point :geom, :null => false, :srid => 4326
85
+ end
86
+
87
+ create_table :diff_names, :force => true do |t|
88
+ t.string :data
89
+ t.point :the_geom, :null => false, :srid => 4326
86
90
  end
87
91
 
88
92
  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
@@ -11,7 +11,7 @@ end
11
11
  describe "ActsAsGeom" do
12
12
 
13
13
  it "should get the geom type" do
14
- p City.connection.columns("cities").select { |c| c.name == "geom" }[0]
14
+ City.connection.columns("cities").select { |c| c.name == "geom" }[0]
15
15
  City.get_geom_type(:geom).should eql(:polygon)
16
16
  end
17
17
 
@@ -13,7 +13,7 @@ describe "CommonSpatialAdapter" do
13
13
  create_table "parks", :force => true do |t|
14
14
  t.string "data", :limit => 100
15
15
  t.integer "value"
16
- t.polygon "geom", :null=>false, :srid => 4326 , :with_z => true,:with_m => true
16
+ t.polygon "geom", :null => false, :srid => 4326 , :with_z => true, :with_m => true
17
17
  end
18
18
  end
19
19
  end
@@ -180,8 +180,8 @@ describe "CommonSpatialAdapter" do
180
180
 
181
181
  after(:all) do
182
182
  ActiveRecord::Base.connection.execute('DROP VIEW viewparks')
183
- end end
184
-
183
+ end
184
+ end
185
185
 
186
186
  describe "Dump" do
187
187
  before(:all) do
@@ -129,25 +129,25 @@ describe "PostgisAdapter" do
129
129
  describe "Find" do
130
130
 
131
131
  ActiveRecord::Schema.define() do
132
- create_table "parks", :force => true do |t|
133
- t.column "data" , :string, :limit => 100
134
- t.column "value", :integer
135
- t.column "geom", :point,:null=>false,:srid=>4326
132
+ create_table :areas, :force => true do |t|
133
+ t.string :data, :limit => 100
134
+ t.integer :value
135
+ t.point :geom, :null => false, :srid => 4326
136
136
  end
137
- add_index "parks","geom",:spatial=>true,:name => "example_spatial_index"
137
+ add_index :areas, :geom, :spatial => true, :name => "areas_spatial_index"
138
138
  end
139
139
 
140
- class Park < ActiveRecord::Base
140
+ class Area < ActiveRecord::Base
141
141
  end
142
142
 
143
143
  it "should create some points" do
144
- Park.create!(:data => "Point1", :geom => Point.from_x_y(1.2,0.75,4326))
145
- Park.create!(:data => "Point2",:geom => Point.from_x_y(0.6,1.3,4326))
146
- Park.create!(:data => "Point3", :geom => Point.from_x_y(2.5,2,4326))
144
+ Area.create!(:data => "Point1", :geom => Point.from_x_y(1.2,0.75,4326))
145
+ Area.create!(:data => "Point2",:geom => Point.from_x_y(0.6,1.3,4326))
146
+ Area.create!(:data => "Point3", :geom => Point.from_x_y(2.5,2,4326))
147
147
  end
148
148
 
149
149
  it "should find by geom" do
150
- pts = Park.find_all_by_geom(LineString.from_coordinates([[0,0],[2,2]],4326))
150
+ pts = Area.find_all_by_geom(LineString.from_coordinates([[0,0],[2,2]],4326))
151
151
  pts.should be_instance_of(Array)
152
152
  pts.length.should eql(2)
153
153
  pts[0].data.should match /Point/
@@ -155,12 +155,12 @@ describe "PostgisAdapter" do
155
155
  end
156
156
 
157
157
  it "should find by geom again" do
158
- pts = Park.find_all_by_geom(LineString.from_coordinates([[2.49,1.99],[2.51,2.01]],4326))
158
+ pts = Area.find_all_by_geom(LineString.from_coordinates([[2.49,1.99],[2.51,2.01]],4326))
159
159
  pts[0].data.should eql("Point3")
160
160
  end
161
161
 
162
162
  it "should find by geom column bbox condition" do
163
- pts = Park.find_all_by_geom([[0,0],[2,2],4326])
163
+ pts = Area.find_all_by_geom([[0,0],[2,2],4326])
164
164
  pts.should be_instance_of(Array)
165
165
  pts.length.should eql(2)
166
166
  pts[0].data.should match /Point/
@@ -168,7 +168,7 @@ describe "PostgisAdapter" do
168
168
  end
169
169
 
170
170
  it "should not mess with rails finder" do
171
- pts = Park.find_all_by_data "Point1"
171
+ pts = Area.find_all_by_data "Point1"
172
172
  pts.should have(1).park
173
173
  end
174
174
 
@@ -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))
@@ -69,6 +70,14 @@ describe "Common Functions" do
69
70
  @p1.geom.srid.should eql(29101)
70
71
  end
71
72
 
73
+ it "should transform non saved srid geoms" do
74
+ pt = Point.from_x_y(11121381.4586196,10161852.0494475, 29101)
75
+ pos = Position.new(:geom => pt)
76
+ pos.transform(4326)
77
+ pos.geom.x.should be_close(1.00000000000005, 0.00001)
78
+ pos.geom.y.should be_close(1.00000000000005, 0.00001)
79
+ end
80
+
72
81
  it "should see in what fraction of the ls it is" do
73
82
  @p1.where_on_line(@s1).should eql(0.0)
74
83
  end
@@ -89,6 +98,13 @@ describe "Common Functions" do
89
98
  lambda { @p2.to_utm! }.should change(@p2, :srid)
90
99
  end
91
100
 
101
+ if PG_VERSION >= "8.4.0"
102
+ it "should export as GeoJSON" do
103
+ @p1.as_geo_json.should eql("{\"type\":\"Point\",\"coordinates\":[1,1]}")
104
+ end
105
+ end
106
+
107
+
92
108
  # it { @p3.x.should be_close(8.0, 0.1) }
93
109
  # it { @p3.y.should be_close(8.0, 0.1) }
94
110
  # it { @p3.z.should be_close(0.0, 0.1) }
@@ -182,10 +198,24 @@ describe "Common Functions" do
182
198
  # @c1.disjoint?(@p2).should be_true
183
199
  # end
184
200
 
201
+ it "should check overlaps" do
202
+ @c2.contains?(@c1).should be_false
203
+ end
204
+
205
+ it "should check overlaps non saved" do
206
+ @c2.contains?(@poly).should be_false
207
+ end
208
+
185
209
  it "should find the UTM zone" do
186
210
  @c2.utm_zone.should eql(32737)
187
211
  end
188
212
 
213
+ if PG_VERSION >= "8.4.0"
214
+ it "should export as GeoJSON" do
215
+ @c1.as_geo_json.should eql("{\"type\":\"Polygon\",\"coordinates\":[[[12,45],[45,41],[4,1],[12,45]],[[2,5],[5,1],[14,1],[2,5]]]}")
216
+ end
217
+ end
218
+
189
219
  end
190
220
 
191
221
  describe "LineString" do
@@ -203,6 +233,12 @@ describe "Common Functions" do
203
233
  it { @s1.touches?(@s2).should be_false }
204
234
  it { @s4.touches?(@s3).should be_false }
205
235
 
236
+ if PG_VERSION >= "8.4.0"
237
+ it "should calculate crossing direction" do
238
+ @s4.line_crossing_direction(@s3).should eql("1")
239
+ end
240
+ end
241
+
206
242
  it "should intersect with linestring" do
207
243
  @s4.intersects?(@s3).should be_true
208
244
  end
@@ -251,6 +287,13 @@ describe "Common Functions" do
251
287
  it { @s1.should_not be_envelopes_intersect(@s2) }
252
288
  it { @s1.boundary.should be_instance_of(MultiPoint) }
253
289
 
290
+
291
+ if PG_VERSION >= "8.4.0"
292
+ it "should export as GeoJSON" do
293
+ @s1.as_geo_json.should eql("{\"type\":\"LineString\",\"coordinates\":[[1,1],[2,2]]}")
294
+ end
295
+ end
296
+
254
297
  end
255
298
 
256
299
  describe "Distance" do
@@ -317,6 +360,15 @@ describe "Common Functions" do
317
360
  @s2.utm_zone.should eql(32732)
318
361
  end
319
362
 
363
+ it "should transform non saved" do
364
+ ls = LineString.from_coordinates([[11435579.3992231,10669620.8116516],[11721337.4281638,11210714.9524106]],29101)
365
+ str = Street.new(:geom => ls)
366
+ str.transform(4326)
367
+ str.geom[0].x.should be_close(4,0.0000001)
368
+ str.geom[0].y.should be_close(4,0.0000001)
369
+ str.geom[1].x.should be_close(7,0.0000001)
370
+ str.geom[1].y.should be_close(7,0.0000001)
371
+ end
320
372
  end
321
373
 
322
374
  end
@@ -6,6 +6,7 @@ describe "PostgisFunctions" do
6
6
  @s1 ||= Street.create!(:data => "Street1", :geom => LineString.from_coordinates([[-43,-20],[-42,-28]],4326))
7
7
  @p1 ||= Position.create!(:data => "Point1", :geom => Point.from_x_y(-43,-22,4326))
8
8
  @cg ||= CommonGeo.create!(:data => "Point1", :geom => Point.from_x_y(-43,-22,4326))
9
+ @px = DiffName.create!(:data => "Hey", :the_geom => Point.from_x_y(10,20, 4326))
9
10
  end
10
11
 
11
12
  describe "Common Mix" do
@@ -40,6 +41,13 @@ describe "PostgisFunctions" do
40
41
 
41
42
  it { @s1.length_spheroid.should be_close(891883.597963462,0.0001) }
42
43
 
43
- end
44
+ it "should work with a diff column name" do
45
+ px2 = DiffName.create!(:data => "Hey 2", :the_geom => Point.from_x_y(20,20, 4326))
46
+ @px.distance_to(px2).should be_close(10.0, 0.1)
47
+ end
44
48
 
49
+ it "should work with mixed column names" do
50
+ @px.distance_to(@s1).should be_close(66.4,1)
51
+ end
52
+ end
45
53
  end
data/spec/spec.opts CHANGED
@@ -1,5 +1,4 @@
1
1
  --colour
2
- --format RspecSpinner::Spinner
3
- --timeout
4
- 20
2
+ --format profile
3
+ --timeout 20
5
4
  --diff
data/spec/spec_helper.rb CHANGED
@@ -2,15 +2,24 @@ require 'rubygems'
2
2
  require 'spec'
3
3
  require 'pg'
4
4
  require 'activerecord'
5
- require 'rspec_spinner'
6
-
7
- gem 'activerecord', "=2.3.2"
8
-
9
5
  $:.unshift((File.join(File.dirname(__FILE__), '..', 'lib')))
6
+ gem 'activerecord', "=2.3.4"
10
7
  require 'postgis_adapter'
8
+
9
+ # Monkey patch Schema.define logger
10
+ $logger = Logger.new(StringIO.new)
11
+ def $logger.write(d); self.info(d); end
12
+ # $stdout = $logger
13
+
11
14
  GeoRuby::SimpleFeatures.srid = -1
12
- config = YAML.load_file(File.dirname(__FILE__) + '/db/database_postgis.yml')
13
- # ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log")
14
- ActiveRecord::Base.establish_connection(config)
15
- #require File.dirname(__FILE__) + '/db/schema_postgis.rb'
15
+
16
+ ActiveRecord::Base.logger = $logger
17
+ ActiveRecord::Base.establish_connection({ :adapter => "postgresql", :database => "postgis_adapter",
18
+ :username => "postgres", :password => "" })
19
+
20
+ PG_VERSION = ActiveRecord::Base.connection.select_value("SELECT version()").scan(/PostgreSQL ([\d\.]*)/)[0][0]
21
+
22
+ puts "Running against PostgreSQL #{PG_VERSION}"
23
+
24
+ require File.dirname(__FILE__) + '/db/schema_postgis.rb'
16
25
  require File.dirname(__FILE__) + '/db/models_postgis.rb'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postgis_adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.7.1
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-05-21 00:00:00 -03:00
12
+ date: 2009-10-10 00:00:00 -03:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -25,12 +25,10 @@ files:
25
25
  - .gitignore
26
26
  - History.txt
27
27
  - MIT-LICENSE
28
- - Manifest.txt
29
28
  - README.rdoc
30
29
  - Rakefile
31
- - VERSION.yml
30
+ - VERSION
32
31
  - init.rb
33
- - install.rb
34
32
  - lib/postgis_adapter.rb
35
33
  - lib/postgis_adapter/acts_as_geom.rb
36
34
  - lib/postgis_adapter/common_spatial_adapter.rb
@@ -40,10 +38,6 @@ files:
40
38
  - lib/postgis_functions/common.rb
41
39
  - postgis_adapter.gemspec
42
40
  - rails/init.rb
43
- - script/console
44
- - script/destroy
45
- - script/generate
46
- - spec/db/database_postgis.yml
47
41
  - spec/db/models_postgis.rb
48
42
  - spec/db/schema_postgis.rb
49
43
  - spec/postgis_adapter/acts_as_geom_spec.rb
@@ -55,7 +49,6 @@ files:
55
49
  - spec/postgis_functions_spec.rb
56
50
  - spec/spec.opts
57
51
  - spec/spec_helper.rb
58
- - uninstall.rb
59
52
  has_rdoc: true
60
53
  homepage: http://github.com/nofxx/postgis_adapter
61
54
  licenses: []
@@ -80,18 +73,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
73
  requirements: []
81
74
 
82
75
  rubyforge_project: postgis_adapter
83
- rubygems_version: 1.3.3
76
+ rubygems_version: 1.3.5
84
77
  signing_key:
85
78
  specification_version: 3
86
79
  summary: PostGIS Adapter for Active Record
87
80
  test_files:
88
- - spec/postgis_functions_spec.rb
89
- - spec/postgis_functions/class_spec.rb
90
- - spec/postgis_functions/bbox_spec.rb
91
- - spec/postgis_functions/common_spec.rb
92
81
  - spec/db/models_postgis.rb
93
82
  - spec/db/schema_postgis.rb
94
- - spec/postgis_adapter_spec.rb
95
- - spec/postgis_adapter/common_spatial_adapter_spec.rb
96
83
  - spec/postgis_adapter/acts_as_geom_spec.rb
84
+ - spec/postgis_adapter/common_spatial_adapter_spec.rb
85
+ - spec/postgis_functions_spec.rb
97
86
  - spec/spec_helper.rb
87
+ - spec/postgis_adapter_spec.rb
88
+ - spec/postgis_functions/class_spec.rb
89
+ - spec/postgis_functions/common_spec.rb
90
+ - spec/postgis_functions/bbox_spec.rb
data/Manifest.txt DELETED
@@ -1,32 +0,0 @@
1
- History.txt
2
- MIT-LICENSE
3
- Manifest.txt
4
- README.rdoc
5
- Rakefile
6
- init.rb
7
- install.rb
8
- lib/postgis_adapter.rb
9
- lib/postgis_adapter/acts_as_geom.rb
10
- lib/postgis_adapter/common_spatial_adapter.rb
11
- lib/postgis_functions.rb
12
- lib/postgis_functions/bbox.rb
13
- lib/postgis_functions/class.rb
14
- lib/postgis_functions/common.rb
15
- postgis_adapter.gemspec
16
- rails/init.rb
17
- script/console
18
- script/destroy
19
- script/generate
20
- spec/db/database_postgis.yml
21
- spec/db/models_postgis.rb
22
- spec/db/schema_postgis.rb
23
- spec/postgis_adapter/acts_as_geom_spec.rb
24
- spec/postgis_adapter/common_spatial_adapter_spec.rb
25
- spec/postgis_adapter_spec.rb
26
- spec/postgis_functions/bbox_spec.rb
27
- spec/postgis_functions/class_spec.rb
28
- spec/postgis_functions/common_spec.rb
29
- spec/postgis_functions_spec.rb
30
- spec/spec.opts
31
- spec/spec_helper.rb
32
- uninstall.rb
data/VERSION.yml DELETED
@@ -1,4 +0,0 @@
1
- ---
2
- :major: 0
3
- :minor: 5
4
- :patch: 1
data/install.rb DELETED
File without changes
data/script/console DELETED
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # File: script/console
3
- irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
4
-
5
- libs = " -r irb/completion"
6
- # Perhaps use a console_lib to store any extra methods I may want available in the cosole
7
- # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
8
- libs << " -r #{File.dirname(__FILE__) + '/../lib/postgis_adapter.rb'}"
9
- puts "Loading postgis_adapter gem"
10
- exec "#{irb} #{libs} --simple-prompt"
data/script/destroy DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
- APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
-
4
- begin
5
- require 'rubigen'
6
- rescue LoadError
7
- require 'rubygems'
8
- require 'rubigen'
9
- end
10
- require 'rubigen/scripts/destroy'
11
-
12
- ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
- RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
- RubiGen::Scripts::Destroy.new.run(ARGV)
data/script/generate DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
- APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
-
4
- begin
5
- require 'rubigen'
6
- rescue LoadError
7
- require 'rubygems'
8
- require 'rubigen'
9
- end
10
- require 'rubigen/scripts/generate'
11
-
12
- ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
- RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
- RubiGen::Scripts::Generate.new.run(ARGV)
@@ -1,4 +0,0 @@
1
- adapter: postgresql
2
- database: postgis_plugin
3
- username: postgres
4
- password:
data/uninstall.rb DELETED
File without changes