postgis_adapter 0.7.8 → 0.7.9
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/Gemfile +12 -0
- data/Gemfile.lock +27 -0
- data/README.rdoc +51 -18
- data/Rakefile +27 -27
- data/VERSION +1 -1
- data/lib/postgis_adapter.rb +31 -12
- data/lib/postgis_adapter/acts_as_geom.rb +5 -2
- data/lib/postgis_adapter/common_spatial_adapter.rb +1 -1
- data/lib/{postgis_functions.rb → postgis_adapter/functions.rb} +3 -2
- data/lib/{postgis_functions → postgis_adapter/functions}/bbox.rb +3 -1
- data/lib/{postgis_functions → postgis_adapter/functions}/class.rb +9 -5
- data/lib/{postgis_functions → postgis_adapter/functions}/common.rb +37 -4
- data/lib/postgis_adapter/railtie.rb +7 -0
- data/postgis_adapter.gemspec +14 -71
- data/rails/init.rb +23 -4
- data/spec/{postgis_functions → postgis_adapter/functions}/bbox_spec.rb +1 -1
- data/spec/{postgis_functions → postgis_adapter/functions}/class_spec.rb +17 -3
- data/spec/{postgis_functions → postgis_adapter/functions}/common_spec.rb +10 -4
- data/spec/{postgis_functions_spec.rb → postgis_adapter/functions_spec.rb} +11 -11
- data/spec/postgis_adapter_spec.rb +7 -6
- data/spec/spec_helper.rb +28 -12
- metadata +44 -32
- data/.gitignore +0 -7
- data/spec/spec.opts +0 -4
data/Gemfile
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
# Add dependencies required to use your gem here.
|
3
|
+
gem "pg"
|
4
|
+
gem "nofxx-georuby"
|
5
|
+
|
6
|
+
# Add dependencies to develop your gem here.
|
7
|
+
# Include everything needed to run rake, tests, features, etc.
|
8
|
+
group :development do
|
9
|
+
gem "rspec", "~> 2.3.0"
|
10
|
+
gem "bundler", "~> 1.0.0"
|
11
|
+
gem "rcov", ">= 0"
|
12
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
diff-lcs (1.1.2)
|
5
|
+
json_pure (1.4.6)
|
6
|
+
nofxx-georuby (1.9.0)
|
7
|
+
json_pure (>= 1.4.6)
|
8
|
+
pg (0.10.1)
|
9
|
+
rcov (0.9.9)
|
10
|
+
rspec (2.3.0)
|
11
|
+
rspec-core (~> 2.3.0)
|
12
|
+
rspec-expectations (~> 2.3.0)
|
13
|
+
rspec-mocks (~> 2.3.0)
|
14
|
+
rspec-core (2.3.1)
|
15
|
+
rspec-expectations (2.3.0)
|
16
|
+
diff-lcs (~> 1.1.2)
|
17
|
+
rspec-mocks (2.3.0)
|
18
|
+
|
19
|
+
PLATFORMS
|
20
|
+
ruby
|
21
|
+
|
22
|
+
DEPENDENCIES
|
23
|
+
bundler (~> 1.0.0)
|
24
|
+
nofxx-georuby
|
25
|
+
pg
|
26
|
+
rcov
|
27
|
+
rspec (~> 2.3.0)
|
data/README.rdoc
CHANGED
@@ -8,45 +8,39 @@ This fork adds handy methods to make geometrical calculations on postgis.
|
|
8
8
|
Based on http://georuby.rubyforge.org Spatial Adapter
|
9
9
|
|
10
10
|
RDocs - http://docs.github.com/nofxx/postgis_adapter
|
11
|
+
Postgis Online reference - http://postgis.refractions.net
|
11
12
|
Postgis Manual - http://postgis.refractions.net/documentation/manual-svn
|
12
13
|
|
13
|
-
*PostGIS and Rails 2+ only*.
|
14
|
-
|
15
14
|
|
16
15
|
== Install
|
17
16
|
|
18
17
|
If you are using Spatial Adapter, *remove it first*.
|
19
18
|
|
19
|
+
gem install postgis_adapter
|
20
|
+
|
20
21
|
|
21
22
|
=== Dependencies
|
22
23
|
|
23
|
-
- georuby
|
24
|
+
- georuby gem
|
24
25
|
- postgres 8.3+
|
25
26
|
- postgis 1.3+
|
26
27
|
|
27
28
|
|
28
|
-
===
|
29
|
-
|
30
|
-
sudo gem install postgis-adapter
|
31
|
-
|
32
|
-
Rails:
|
33
|
-
|
34
|
-
config.gem "postgis_adapter"
|
35
|
-
|
29
|
+
=== Rails 3+
|
36
30
|
|
37
|
-
|
31
|
+
Add dependency to Gemfile:
|
38
32
|
|
33
|
+
gem "postgis_adapter"
|
39
34
|
|
40
|
-
sudo gem install nofxx-postgis_adapter --source http://gems.github.com
|
41
35
|
|
42
|
-
|
36
|
+
Or, to use latest from repository:
|
43
37
|
|
44
|
-
|
38
|
+
gem "postgis_adapter", :git => 'git://github.com/nofxx/postgis_adapter.git'
|
45
39
|
|
46
40
|
|
47
|
-
===
|
41
|
+
=== Rails 2
|
48
42
|
|
49
|
-
|
43
|
+
gem install postgis_adapter -v 0.7.8
|
50
44
|
|
51
45
|
|
52
46
|
== How to Use
|
@@ -267,6 +261,34 @@ Types:
|
|
267
261
|
geometry_collection
|
268
262
|
|
269
263
|
|
264
|
+
=== PostGIS Helper Scripts
|
265
|
+
|
266
|
+
Optional, this will create postgis enabled database automatically for you.
|
267
|
+
|
268
|
+
Helpers to create postgis template database. At time of writing,
|
269
|
+
postgis.sql and spatial_ref_sys.sql are used.
|
270
|
+
|
271
|
+
|
272
|
+
==== System wide
|
273
|
+
|
274
|
+
|
275
|
+
Find where your OS put those sql files and:
|
276
|
+
|
277
|
+
rake postgis:template path/to/sqls/folder
|
278
|
+
|
279
|
+
|
280
|
+
==== Vendorize
|
281
|
+
|
282
|
+
Place the following scripts in a folder named 'spatial' under the 'db' folder; For example:
|
283
|
+
|
284
|
+
RAILS_ROOT/db/spatial/lwpostgis.sql
|
285
|
+
RAILS_ROOT/db/spatial/spatial_ref_sys
|
286
|
+
|
287
|
+
These will be used when creating the Test database when running the Rake Test tasks.
|
288
|
+
These scripts should have been installed when the PostGIS libraries were installed.
|
289
|
+
Online reference: http://postgis.refractions.net/
|
290
|
+
|
291
|
+
|
270
292
|
=== Fixtures
|
271
293
|
|
272
294
|
If you use fixtures for your unit tests, at some point,
|
@@ -323,6 +345,17 @@ something like this :
|
|
323
345
|
place.the_geom = the_geom
|
324
346
|
|
325
347
|
|
348
|
+
== Postgis Adapter
|
349
|
+
|
350
|
+
Marcos Piccinini (nofxx)
|
351
|
+
Ying Tsen Hong (tsenying)
|
352
|
+
Simon Tokumine (tokumine)
|
353
|
+
Fernando Blat (ferblape)
|
354
|
+
Shoaib Burq (sabman)
|
355
|
+
|
356
|
+
(in order of appearance)
|
357
|
+
|
358
|
+
|
326
359
|
== License
|
327
360
|
|
328
361
|
Spatial Adapter for Rails is released under the MIT license.
|
@@ -331,7 +364,7 @@ Postgis Adapter is released under the MIT license.
|
|
331
364
|
|
332
365
|
== Support
|
333
366
|
|
334
|
-
Tested using
|
367
|
+
Tested using activerecord 3+ / postgresql 8.5+ / postgis 1.5+ / linux / osx
|
335
368
|
|
336
369
|
Any questions, enhancement proposals, bug notifications or corrections:
|
337
370
|
|
data/Rakefile
CHANGED
@@ -1,38 +1,36 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rake'
|
3
|
+
require 'rake/clean'
|
4
|
+
require 'rake/rdoctask'
|
5
|
+
#require 'spec/rake/spectask'
|
3
6
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
gem.homepage = "http://github.com/nofxx/postgis_adapter"
|
12
|
-
gem.authors = ["Marcos Piccinini"]
|
13
|
-
gem.rubyforge_project = "postgis_adapter"
|
14
|
-
# TODO: better way for this.....
|
15
|
-
# gem.add_dependency 'geo_ruby'
|
16
|
-
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
7
|
+
CLEAN.include('**/*.gem')
|
8
|
+
|
9
|
+
namespace :gem do
|
10
|
+
desc "Create the postgis_adapter gem"
|
11
|
+
task :create => [:clean] do
|
12
|
+
spec = eval(IO.read('postgis_adapter.gemspec'))
|
13
|
+
Gem::Builder.new(spec).build
|
17
14
|
end
|
18
|
-
rescue LoadError
|
19
|
-
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
20
|
-
end
|
21
15
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
16
|
+
desc "Install the postgis_adapter gem"
|
17
|
+
task :install => [:create] do
|
18
|
+
file = Dir['*.gem'].first
|
19
|
+
sh "gem install #{file}"
|
20
|
+
end
|
26
21
|
end
|
27
22
|
|
28
|
-
Spec::Rake::SpecTask.new(:
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
23
|
+
# Spec::Rake::SpecTask.new(:spec) do |spec|
|
24
|
+
# spec.libs << 'lib' << 'spec'
|
25
|
+
# spec.spec_files = FileList['spec/**/*_spec.rb']
|
26
|
+
# end
|
27
|
+
|
28
|
+
# Spec::Rake::SpecTask.new(:rcov) do |spec|
|
29
|
+
# spec.libs << 'lib' << 'spec'
|
30
|
+
# spec.pattern = 'spec/**/*_spec.rb'
|
31
|
+
# spec.rcov = true
|
32
|
+
# end
|
34
33
|
|
35
|
-
require 'rake/rdoctask'
|
36
34
|
Rake::RDocTask.new do |rdoc|
|
37
35
|
version = File.exist?('VERSION') ? File.read('VERSION').chomp : ""
|
38
36
|
rdoc.rdoc_dir = 'rdoc'
|
@@ -41,6 +39,8 @@ Rake::RDocTask.new do |rdoc|
|
|
41
39
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
42
40
|
end
|
43
41
|
|
42
|
+
task :default => :spec
|
43
|
+
|
44
44
|
#
|
45
45
|
# Reek & Roodi
|
46
46
|
#
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.7.
|
1
|
+
0.7.9
|
data/lib/postgis_adapter.rb
CHANGED
@@ -5,21 +5,21 @@
|
|
5
5
|
# Code from
|
6
6
|
# http://georuby.rubyforge.org Spatial Adapter
|
7
7
|
#
|
8
|
-
require '
|
8
|
+
require 'active_record'
|
9
9
|
require 'active_record/connection_adapters/postgresql_adapter'
|
10
10
|
require 'geo_ruby'
|
11
11
|
require 'postgis_adapter/common_spatial_adapter'
|
12
|
-
require '
|
13
|
-
require '
|
14
|
-
require '
|
15
|
-
require '
|
12
|
+
require 'postgis_adapter/functions'
|
13
|
+
require 'postgis_adapter/functions/common'
|
14
|
+
require 'postgis_adapter/functions/class'
|
15
|
+
require 'postgis_adapter/functions/bbox'
|
16
16
|
require 'postgis_adapter/acts_as_geom'
|
17
17
|
|
18
18
|
include GeoRuby::SimpleFeatures
|
19
19
|
include SpatialAdapter
|
20
20
|
|
21
21
|
#tables to ignore in migration : relative to PostGIS management of geometric columns
|
22
|
-
ActiveRecord::SchemaDumper.ignore_tables
|
22
|
+
ActiveRecord::SchemaDumper.ignore_tables.concat %w{ spatial_ref_sys geometry_columns geography_columns }
|
23
23
|
|
24
24
|
#add a method to_yaml to the Geometry class which will transform a geometry in a form suitable to be used in a YAML file (such as in a fixture)
|
25
25
|
GeoRuby::SimpleFeatures::Geometry.class_eval do
|
@@ -102,6 +102,25 @@ ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.class_eval do
|
|
102
102
|
|
103
103
|
include SpatialAdapter
|
104
104
|
|
105
|
+
# SCHEMA STATEMENTS ========================================
|
106
|
+
|
107
|
+
alias :original_recreate_database :recreate_database
|
108
|
+
def recreate_database(configuration, enc_option)
|
109
|
+
`dropdb -U "#{configuration["test"]["username"]}" #{configuration["test"]["database"]}`
|
110
|
+
`createdb #{enc_option} -U "#{configuration["test"]["username"]}" #{configuration["test"]["database"]}`
|
111
|
+
`createlang -U "#{configuration["test"]["username"]}" plpgsql #{configuration["test"]["database"]}`
|
112
|
+
`psql -d #{configuration["test"]["database"]} -f db/spatial/postgis.sql`
|
113
|
+
`psql -d #{configuration["test"]["database"]} -f db/spatial/spatial_ref_sys.sql`
|
114
|
+
end
|
115
|
+
|
116
|
+
alias :original_create_database :create_database
|
117
|
+
def create_database(name, options = {})
|
118
|
+
original_create_database(name, options = {})
|
119
|
+
`createlang plpgsql #{name}`
|
120
|
+
`psql -d #{name} -f db/spatial/postgis.sql`
|
121
|
+
`psql -d #{name} -f db/spatial/spatial_ref_sys.sql`
|
122
|
+
end
|
123
|
+
|
105
124
|
alias :original_native_database_types :native_database_types
|
106
125
|
def native_database_types
|
107
126
|
original_native_database_types.update(geometry_data_types)
|
@@ -248,16 +267,16 @@ ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.class_eval do
|
|
248
267
|
end
|
249
268
|
end
|
250
269
|
|
251
|
-
#
|
270
|
+
# For version of Rails where exists disable_referential_integrity
|
252
271
|
if self.instance_methods.include? "disable_referential_integrity"
|
253
272
|
#Pete Deffendol's patch
|
254
273
|
alias :original_disable_referential_integrity :disable_referential_integrity
|
255
274
|
def disable_referential_integrity(&block) #:nodoc:
|
256
|
-
ignore_tables = %w{ geometry_columns spatial_ref_sys geography_columns
|
257
|
-
execute(tables.select { |name| !ignore_tables.include?(name) }.
|
275
|
+
ignore_tables = %w{ geometry_columns spatial_ref_sys } # geography_columns + views
|
276
|
+
execute(tables.select { |name| !ignore_tables.include?(name) }.map { |name| "ALTER TABLE #{quote_table_name(name)} DISABLE TRIGGER ALL" }.join(";"))
|
258
277
|
yield
|
259
278
|
ensure
|
260
|
-
execute(tables.select { |name| !ignore_tables.include?(name)}.
|
279
|
+
execute(tables.select { |name| !ignore_tables.include?(name)}.map { |name| "ALTER TABLE #{quote_table_name(name)} ENABLE TRIGGER ALL" }.join(";"))
|
261
280
|
end
|
262
281
|
end
|
263
282
|
|
@@ -289,8 +308,8 @@ SELECT * FROM geometry_columns WHERE f_table_name = '#{table_name}'
|
|
289
308
|
end
|
290
309
|
|
291
310
|
raw_geom_infos
|
292
|
-
|
293
|
-
|
311
|
+
rescue => e
|
312
|
+
nil
|
294
313
|
end
|
295
314
|
|
296
315
|
end
|
@@ -3,7 +3,8 @@
|
|
3
3
|
#
|
4
4
|
# http://github.com/nofxx/postgis_adapter
|
5
5
|
#
|
6
|
-
module
|
6
|
+
module PostgisAdapter
|
7
|
+
module Functions
|
7
8
|
def self.included(base)
|
8
9
|
base.send :extend, ClassMethods
|
9
10
|
end
|
@@ -24,6 +25,7 @@ module PostgisFunctions
|
|
24
25
|
when :point then PointFunctions
|
25
26
|
when :polygon then PolygonFunctions
|
26
27
|
when :line_string, :multi_line_string then LineStringFunctions
|
28
|
+
when :multi_polygon then MultiPolygonFunctions
|
27
29
|
end unless geom[0].kind_of? Symbol
|
28
30
|
end
|
29
31
|
alias :acts_as_geom :has_geom
|
@@ -36,5 +38,6 @@ module PostgisFunctions
|
|
36
38
|
end
|
37
39
|
end
|
38
40
|
end
|
41
|
+
end
|
39
42
|
|
40
|
-
ActiveRecord::Base.send :include,
|
43
|
+
ActiveRecord::Base.send :include, PostgisAdapter::Functions
|
@@ -49,7 +49,7 @@ ActiveRecord::SchemaDumper.class_eval do
|
|
49
49
|
|
50
50
|
columns.each do |column|
|
51
51
|
|
52
|
-
raise StandardError, "Unknown type '#{column.sql_type}' for column '#{column.name}'" if @types[column.type].nil?
|
52
|
+
raise StandardError, "Unknown type '#{column.sql_type}' for column '#{column.name}' in table '#{table}'" if @types[column.type].nil?
|
53
53
|
next if column.name == pk
|
54
54
|
#need to use less_simplified_type here or have each specific geometry type be simplified to a specific simplified type in Column and each one treated separately in the Column methods
|
55
55
|
if column.is_a?(SpatialColumn)
|
@@ -15,7 +15,8 @@
|
|
15
15
|
# Earth Spheroid - http://en.wikipedia.org/wiki/Figure_of_the_Earth
|
16
16
|
#
|
17
17
|
|
18
|
-
module
|
18
|
+
module PostgisAdapter
|
19
|
+
module Functions
|
19
20
|
# WGS84 Spheroid
|
20
21
|
EARTH_SPHEROID = "'SPHEROID[\"GRS-80\",6378137,298.257222101]'" # SRID => 4326
|
21
22
|
|
@@ -114,7 +115,7 @@ module PostgisFunctions
|
|
114
115
|
end
|
115
116
|
|
116
117
|
end
|
117
|
-
|
118
|
+
end
|
118
119
|
#
|
119
120
|
# POINT(0 0)
|
120
121
|
# LINESTRING(0 0,1 1,1 2)
|
@@ -4,7 +4,8 @@
|
|
4
4
|
# BBox
|
5
5
|
#
|
6
6
|
#
|
7
|
-
module
|
7
|
+
module PostgisAdapter
|
8
|
+
module Functions
|
8
9
|
|
9
10
|
#
|
10
11
|
# These operators utilize indexes. They compare geometries by bounding boxes.
|
@@ -126,3 +127,4 @@ module PostgisFunctions
|
|
126
127
|
bbox("=", other)
|
127
128
|
end
|
128
129
|
end
|
130
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
|
-
module
|
1
|
+
module PostgisAdapter
|
2
|
+
module Functions
|
2
3
|
|
3
4
|
#
|
4
5
|
# Class Methods
|
@@ -47,17 +48,20 @@ module PostgisFunctions
|
|
47
48
|
find(:all, :order => "ST_Perimeter(geom) #{sort}" )
|
48
49
|
end
|
49
50
|
|
50
|
-
def
|
51
|
-
|
51
|
+
def all_dwithin(other, margin=1)
|
52
|
+
# find(:all, :conditions => "ST_DWithin(geom, ST_GeomFromEWKB(E'#{other.as_ewkt}'), #{margin})")
|
52
53
|
find(:all, :conditions => "ST_DWithin(geom, ST_GeomFromEWKT(E'#{other.as_hex_ewkb}'), #{margin})")
|
53
54
|
end
|
54
55
|
|
56
|
+
def all_within(other)
|
57
|
+
find(:all, :conditions => "ST_Within(geom, ST_GeomFromEWKT(E'#{other.as_hex_ewkb}'))")
|
58
|
+
end
|
59
|
+
|
55
60
|
def by_boundaries sort='asc'
|
56
61
|
find(:all, :order => "ST_Boundary(geom) #{sort}" )
|
57
62
|
end
|
58
63
|
|
59
64
|
end
|
60
65
|
|
61
|
-
|
62
|
-
|
66
|
+
end
|
63
67
|
end
|
@@ -6,7 +6,15 @@
|
|
6
6
|
# The methods here can be used by all geoms.
|
7
7
|
#
|
8
8
|
|
9
|
-
module
|
9
|
+
module PostgisAdapter
|
10
|
+
module Functions
|
11
|
+
|
12
|
+
#
|
13
|
+
# Test if a geometry is well formed.
|
14
|
+
#
|
15
|
+
def valid_geom?
|
16
|
+
postgis_calculate(:isvalid, self)
|
17
|
+
end
|
10
18
|
|
11
19
|
#
|
12
20
|
# True if the given geometries represent the same geometry.
|
@@ -232,12 +240,17 @@ module PostgisFunctions
|
|
232
240
|
postgis_calculate(:simplify, self, tolerance)
|
233
241
|
end
|
234
242
|
|
235
|
-
|
236
243
|
def simplify!(tolerance=0.1)
|
237
244
|
#FIXME: not good..
|
238
245
|
self.update_attribute(geo_columns.first, simplify)
|
239
246
|
end
|
240
247
|
|
248
|
+
#
|
249
|
+
#
|
250
|
+
def buffer(width=0.1)
|
251
|
+
postgis_calculate(:buffer, self, width)
|
252
|
+
end
|
253
|
+
|
241
254
|
#
|
242
255
|
# Returns a "simplified" version of the given geometry using the Douglas-Peuker
|
243
256
|
# algorithm. Will avoid creating derived geometries (polygons in particular) that
|
@@ -509,10 +522,18 @@ module PostgisFunctions
|
|
509
522
|
#
|
510
523
|
# http://geojson.org/
|
511
524
|
#
|
512
|
-
def as_geo_json(precision=15, bbox=0)
|
525
|
+
def as_geo_json(precision=15, bbox = 0)
|
513
526
|
postgis_calculate(:AsGeoJSON, self, [precision, bbox])
|
514
527
|
end
|
515
528
|
|
529
|
+
#
|
530
|
+
# ST_PointOnSurface — Returns a POINT guaranteed to lie on the surface.
|
531
|
+
#
|
532
|
+
# geometry ST_PointOnSurface(geometry g1);eometry A, geometry B);
|
533
|
+
#
|
534
|
+
def point_on_surface
|
535
|
+
postgis_calculate(:pointonsurface, self)
|
536
|
+
end
|
516
537
|
|
517
538
|
#
|
518
539
|
#
|
@@ -875,8 +896,20 @@ module PostgisFunctions
|
|
875
896
|
|
876
897
|
end
|
877
898
|
|
878
|
-
|
899
|
+
#
|
900
|
+
#
|
901
|
+
#
|
902
|
+
#
|
903
|
+
# MultiPolygon
|
904
|
+
#
|
905
|
+
#
|
906
|
+
#
|
907
|
+
#
|
908
|
+
module MultiPolygonFunctions
|
909
|
+
end
|
879
910
|
|
911
|
+
end
|
912
|
+
end
|
880
913
|
# NEW
|
881
914
|
#ST_OrderingEquals — Returns true if the given geometries represent the same geometry and points are in the same directional order.
|
882
915
|
#boolean ST_OrderingEquals(g
|
data/postgis_adapter.gemspec
CHANGED
@@ -1,76 +1,19 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = 'postgis_adapter'
|
3
|
+
spec.version = '0.7.9'
|
4
|
+
spec.authors = ['Marcos Piccinini']
|
5
|
+
spec.summary = 'PostGIS Adapter for Active Record'
|
6
|
+
spec.email = 'x@nofxx.com'
|
7
|
+
spec.homepage = 'http://github.com/nofxx/postgis_adapter'
|
5
8
|
|
6
|
-
|
7
|
-
|
8
|
-
s.version = "0.7.8"
|
9
|
+
spec.rdoc_options = ['--charset=UTF-8']
|
10
|
+
spec.rubyforge_project = 'postgis_adapter'
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
s.description = %q{Execute PostGIS functions on Active Record}
|
14
|
-
s.email = %q{x@nofxx.com}
|
15
|
-
s.extra_rdoc_files = [
|
16
|
-
"README.rdoc"
|
17
|
-
]
|
18
|
-
s.files = [
|
19
|
-
".gitignore",
|
20
|
-
"History.txt",
|
21
|
-
"MIT-LICENSE",
|
22
|
-
"README.rdoc",
|
23
|
-
"Rakefile",
|
24
|
-
"VERSION",
|
25
|
-
"init.rb",
|
26
|
-
"lib/postgis_adapter.rb",
|
27
|
-
"lib/postgis_adapter/acts_as_geom.rb",
|
28
|
-
"lib/postgis_adapter/common_spatial_adapter.rb",
|
29
|
-
"lib/postgis_functions.rb",
|
30
|
-
"lib/postgis_functions/bbox.rb",
|
31
|
-
"lib/postgis_functions/class.rb",
|
32
|
-
"lib/postgis_functions/common.rb",
|
33
|
-
"postgis_adapter.gemspec",
|
34
|
-
"rails/init.rb",
|
35
|
-
"spec/db/models_postgis.rb",
|
36
|
-
"spec/db/schema_postgis.rb",
|
37
|
-
"spec/postgis_adapter/acts_as_geom_spec.rb",
|
38
|
-
"spec/postgis_adapter/common_spatial_adapter_spec.rb",
|
39
|
-
"spec/postgis_adapter_spec.rb",
|
40
|
-
"spec/postgis_functions/bbox_spec.rb",
|
41
|
-
"spec/postgis_functions/class_spec.rb",
|
42
|
-
"spec/postgis_functions/common_spec.rb",
|
43
|
-
"spec/postgis_functions_spec.rb",
|
44
|
-
"spec/spec.opts",
|
45
|
-
"spec/spec_helper.rb"
|
46
|
-
]
|
47
|
-
s.homepage = %q{http://github.com/nofxx/postgis_adapter}
|
48
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
49
|
-
s.require_paths = ["lib"]
|
50
|
-
s.rubyforge_project = %q{postgis_adapter}
|
51
|
-
s.rubygems_version = %q{1.3.5}
|
52
|
-
s.summary = %q{PostGIS Adapter for Active Record}
|
53
|
-
s.test_files = [
|
54
|
-
"spec/db/models_postgis.rb",
|
55
|
-
"spec/db/schema_postgis.rb",
|
56
|
-
"spec/postgis_adapter/acts_as_geom_spec.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"
|
64
|
-
]
|
12
|
+
spec.files = Dir['**/*'].reject{ |f| f.include?('git') }
|
13
|
+
spec.test_files = Dir['spec/**/*.rb']
|
14
|
+
spec.extra_rdoc_files = ['README.rdoc']
|
65
15
|
|
66
|
-
|
67
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
68
|
-
s.specification_version = 3
|
16
|
+
spec.add_dependency 'GeoRuby'
|
69
17
|
|
70
|
-
|
71
|
-
else
|
72
|
-
end
|
73
|
-
else
|
74
|
-
end
|
18
|
+
spec.description = 'Execute PostGIS functions on Active Record'
|
75
19
|
end
|
76
|
-
|
data/rails/init.rb
CHANGED
@@ -1,9 +1,28 @@
|
|
1
|
+
# Patch Arel to support geometry type.
|
2
|
+
module Arel
|
3
|
+
module Attributes
|
4
|
+
class << self
|
5
|
+
alias original_for for
|
6
|
+
|
7
|
+
def for(column)
|
8
|
+
case column.type
|
9
|
+
when :geometry then String
|
10
|
+
else
|
11
|
+
original_for(column)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
1
18
|
class SpatialAdapterNotCompatibleError < StandardError
|
2
19
|
end
|
3
20
|
|
4
|
-
unless ActiveRecord::Base.connection.adapter_name == '
|
5
|
-
|
6
|
-
|
7
|
-
|
21
|
+
unless ActiveRecord::Base.connection.adapter_name.downcase == 'postgresql'
|
22
|
+
error_message = "Database config file not set or it does not map to "
|
23
|
+
error_message << "PostgreSQL.\nOnly PostgreSQL with PostGIS is supported "
|
24
|
+
error_message << "by postgis_adapter.")
|
25
|
+
raise SpatialAdapterNotCompatibleError.new(error_message)
|
8
26
|
end
|
27
|
+
|
9
28
|
require 'postgis_adapter'
|
@@ -1,12 +1,18 @@
|
|
1
|
-
require File.dirname(__FILE__) + '
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
2
2
|
|
3
3
|
describe "ClassMethods" do
|
4
4
|
before(:all) do
|
5
5
|
@c1 ||= City.create!(:data => "CityClass", :geom => Polygon.from_coordinates([[[12,45],[45,41],[4,1],[12,45]],[[2,5],[5,1],[14,1],[2,5]]],4326))
|
6
|
+
@c2 ||= City.create!(:data => "CityClass", :geom => Polygon.from_coordinates([[[10,10],[10,50],[50,50],[10,10]],[[2,5],[5,1],[14,1],[2,5]]],4326))
|
6
7
|
@s1 ||= Street.create!(:data => "StreetClass", :geom => LineString.from_coordinates([[1,1],[99,88]],4326))
|
7
8
|
@s2 ||= Street.create!(:data => "StreetClassTiny", :geom => LineString.from_coordinates([[1,1],[1.1,1.1]],4326))
|
8
9
|
@p1 ||= Position.create!(:data => "PointClass", :geom => Point.from_x_y(99,99,4326))
|
9
10
|
@p2 ||= Position.create!(:data => "PointClassClose", :geom => Point.from_x_y(99.9,99.9,4326))
|
11
|
+
@p3 ||= Position.create!(:data => "PointInsideCity", :geom => Point.from_x_y(15.0,15.0,4326))
|
12
|
+
end
|
13
|
+
|
14
|
+
after(:all) do
|
15
|
+
[City, Street, Position].each { |m| m.delete_all }
|
10
16
|
end
|
11
17
|
|
12
18
|
it "should find the closest other point" do
|
@@ -54,8 +60,16 @@ describe "ClassMethods" do
|
|
54
60
|
City.by_area.should be_instance_of(Array)
|
55
61
|
end
|
56
62
|
|
57
|
-
it "should sort by all
|
58
|
-
City.
|
63
|
+
it "should sort by all dwithin" do
|
64
|
+
City.all_dwithin(@s1.geom).should eql([@c1, @c2])
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should find all within polygon" do
|
68
|
+
Position.all_within(@c1.geom).should eql([@p3])#Array)
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should find all within polygon 2" do
|
72
|
+
Position.all_within(@c2.geom).should eql([])#Array)
|
59
73
|
end
|
60
74
|
|
61
75
|
it "should sort by all within" do
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.dirname(__FILE__) + '
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
2
2
|
|
3
3
|
describe "Common Functions" do
|
4
4
|
|
@@ -77,7 +77,7 @@ describe "Common Functions" do
|
|
77
77
|
it "should transform non saved srid geoms" do
|
78
78
|
pt = Point.from_x_y(11121381.4586196,10161852.0494475, 29101)
|
79
79
|
pos = Position.new(:geom => pt)
|
80
|
-
pos.transform(4326)
|
80
|
+
pos.transform!(4326)
|
81
81
|
pos.geom.x.should be_close(1.00000000000005, 0.00001)
|
82
82
|
pos.geom.y.should be_close(1.00000000000005, 0.00001)
|
83
83
|
end
|
@@ -126,6 +126,8 @@ describe "Common Functions" do
|
|
126
126
|
|
127
127
|
describe "Polygon" do
|
128
128
|
|
129
|
+
it { City.first.data.should eql("City1") }
|
130
|
+
|
129
131
|
it "sort by area size" do
|
130
132
|
City.by_area.first.data.should == "City1" #[@c1, @c2, @c3]
|
131
133
|
end
|
@@ -156,7 +158,7 @@ describe "Common Functions" do
|
|
156
158
|
|
157
159
|
it { @c1.covers?(@p1).should be_false }
|
158
160
|
it { @c1.covers?(@p4).should be_true }
|
159
|
-
it { @c1.
|
161
|
+
it { @c1.within?(@c2).should be_false }
|
160
162
|
|
161
163
|
it "city overlaps point?" do
|
162
164
|
lambda { @c3.overlaps?(@c2) }.should raise_error # WHY??
|
@@ -268,6 +270,10 @@ describe "Common Functions" do
|
|
268
270
|
@s1.intersection(@p2).should be_instance_of(GeometryCollection)
|
269
271
|
end
|
270
272
|
|
273
|
+
it "have a point on surface" do
|
274
|
+
@s3.point_on_surface.should be_a GeoRuby::SimpleFeatures::Point
|
275
|
+
end
|
276
|
+
|
271
277
|
describe "Self" do
|
272
278
|
|
273
279
|
it do
|
@@ -380,7 +386,7 @@ describe "Common Functions" do
|
|
380
386
|
it "should transform non saved" do
|
381
387
|
ls = LineString.from_coordinates([[11435579.3992231,10669620.8116516],[11721337.4281638,11210714.9524106]],29101)
|
382
388
|
str = Street.new(:geom => ls)
|
383
|
-
str.transform(4326)
|
389
|
+
str.transform!(4326)
|
384
390
|
str.geom[0].x.should be_close(4,0.0000001)
|
385
391
|
str.geom[0].y.should be_close(4,0.0000001)
|
386
392
|
str.geom[1].x.should be_close(7,0.0000001)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.dirname(__FILE__) + '
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
2
|
|
3
3
|
describe "PostgisFunctions" do
|
4
4
|
before(:all) do
|
@@ -12,11 +12,11 @@ describe "PostgisFunctions" do
|
|
12
12
|
describe "Common Mix" do
|
13
13
|
|
14
14
|
it "should calculate distance point to line" do
|
15
|
-
@p1.distance_to(@s1).should
|
15
|
+
@p1.distance_to(@s1).should be_within(0.00000001).of(0.248069469178417)
|
16
16
|
end
|
17
17
|
|
18
18
|
it "should calculate distance point to line" do
|
19
|
-
@cg.distance_to(@s1).should
|
19
|
+
@cg.distance_to(@s1).should be_within(0.00000001).of(0.248069469178417)
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should calculate distance point to line" do
|
@@ -28,33 +28,33 @@ describe "PostgisFunctions" do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
it "should find the distance from a unsaved point" do
|
31
|
-
@p1.distance_to(Point.from_x_y(5,5,4326)).should
|
31
|
+
@p1.distance_to(Point.from_x_y(5,5,4326)).should be_within(0.00001).of(55.0726792520575)
|
32
32
|
end
|
33
33
|
|
34
34
|
it "should work with unsaved objects" do
|
35
35
|
ss = Street.new(:data => "Street1", :geom => LineString.from_coordinates([[-44,-21],[-43,-29]],4326))
|
36
|
-
ss.length_spheroid.should
|
36
|
+
ss.length_spheroid.should be_within(0.01).of(891908.39)
|
37
37
|
end
|
38
38
|
|
39
|
-
it { @c1.area(32640).should
|
39
|
+
it { @c1.area(32640).should be_within(0.01).of(9165235788987.37) }
|
40
40
|
|
41
|
-
it { @c1.area.should
|
41
|
+
it { @c1.area.should be_within(0.1).of(720.0) }
|
42
42
|
|
43
43
|
it "should be strictly left of city" do
|
44
44
|
@p1.should be_strictly_left_of(@c1)
|
45
45
|
end
|
46
46
|
|
47
|
-
it { @s1.length.should
|
47
|
+
it { @s1.length.should be_within(0.0001).of(8.06225774829855) }
|
48
48
|
|
49
|
-
it { @s1.length_spheroid.should
|
49
|
+
it { @s1.length_spheroid.should be_within(0.0001).of(891883.597963462) }
|
50
50
|
|
51
51
|
it "should work with a diff column name" do
|
52
52
|
px2 = DiffName.create!(:data => "Hey 2", :the_geom => Point.from_x_y(20,20, 4326))
|
53
|
-
@px.distance_to(px2).should
|
53
|
+
@px.distance_to(px2).should be_within(0.01).of(10.0)
|
54
54
|
end
|
55
55
|
|
56
56
|
it "should work with mixed column names" do
|
57
|
-
@px.distance_to(@s1).should
|
57
|
+
@px.distance_to(@s1).should be_within(0.1).of(66.4)
|
58
58
|
end
|
59
59
|
end
|
60
60
|
end
|
@@ -151,8 +151,8 @@ describe "PostgisAdapter" do
|
|
151
151
|
end
|
152
152
|
|
153
153
|
it "should find by geom" do
|
154
|
-
|
155
|
-
|
154
|
+
pending
|
155
|
+
pts = Area.find_all_by_geom(LineString.from_coordinates([[0,0],[2,2]],4326))
|
156
156
|
pts.should be_instance_of(Array)
|
157
157
|
pts.length.should eql(2)
|
158
158
|
pts[0].data.should match(/Point/)
|
@@ -160,12 +160,13 @@ describe "PostgisAdapter" do
|
|
160
160
|
end
|
161
161
|
|
162
162
|
it "should find by geom again" do
|
163
|
-
|
164
|
-
|
163
|
+
pending
|
164
|
+
pts = Area.find_all_by_geom(LineString.from_coordinates([[2.49,1.99],[2.51,2.01]],4326))
|
165
165
|
pts[0].data.should eql("Point3")
|
166
166
|
end
|
167
167
|
|
168
168
|
it "should find by geom column bbox condition" do
|
169
|
+
pending
|
169
170
|
pts = Area.find_all_by_geom([[0,0],[2,2],4326])
|
170
171
|
pts.should be_instance_of(Array)
|
171
172
|
pts.length.should eql(2)
|
@@ -220,8 +221,8 @@ describe "PostgisAdapter" do
|
|
220
221
|
bar.data.should eql("")
|
221
222
|
|
222
223
|
if BinaryDefault.connection.encoding == "UTF8"
|
223
|
-
foo.value.should eql("
|
224
|
-
bar.value.should eql("
|
224
|
+
foo.value.encode("UTF-8", "ISO-8859-1").should eql("fôo")
|
225
|
+
bar.value.encode("UTF-8", "ISO-8859-1").should eql("bår")
|
225
226
|
end
|
226
227
|
end
|
227
228
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,11 +1,20 @@
|
|
1
|
+
SPEC_DB = {
|
2
|
+
:adapter => "postgresql",
|
3
|
+
:database => "postgis_adapter",
|
4
|
+
:username => "postgres",
|
5
|
+
:password => ""
|
6
|
+
}
|
7
|
+
|
1
8
|
require 'rubygems'
|
2
|
-
require 'spec'
|
3
9
|
require 'pg'
|
4
|
-
require 'activerecord'
|
5
10
|
$:.unshift((File.join(File.dirname(__FILE__), '..', 'lib')))
|
6
|
-
|
11
|
+
|
12
|
+
require "rspec"
|
13
|
+
require "active_record"
|
14
|
+
|
7
15
|
gem 'nofxx-georuby'
|
8
16
|
require 'postgis_adapter'
|
17
|
+
require 'logger'
|
9
18
|
# GeoRuby::SimpleFeatures::DEFAULT_SRID = -1
|
10
19
|
|
11
20
|
# Monkey patch Schema.define logger
|
@@ -13,17 +22,24 @@ $logger = Logger.new(StringIO.new)
|
|
13
22
|
def $logger.write(d); self.info(d); end
|
14
23
|
# $stdout = $logger
|
15
24
|
|
16
|
-
|
17
25
|
ActiveRecord::Base.logger = $logger
|
18
|
-
ActiveRecord::Base.establish_connection({ :adapter => "postgresql",
|
19
|
-
:database => "postgis_adapter",
|
20
|
-
:username => "postgres",
|
21
|
-
:password => "" })
|
22
26
|
|
23
|
-
|
27
|
+
begin
|
28
|
+
ActiveRecord::Base.establish_connection(SPEC_DB)
|
29
|
+
ActiveRecord::Migration.verbose = false
|
30
|
+
PG_VERSION = ActiveRecord::Base.connection.select_value("SELECT version()").scan(/PostgreSQL ([\d\.]*)/)[0][0]
|
31
|
+
|
32
|
+
puts "Running against PostgreSQL #{PG_VERSION}"
|
33
|
+
|
34
|
+
require File.dirname(__FILE__) + '/db/schema_postgis.rb'
|
35
|
+
require File.dirname(__FILE__) + '/db/models_postgis.rb'
|
36
|
+
|
37
|
+
rescue PGError
|
38
|
+
puts "Test DB not found, creating one for you..."
|
39
|
+
`createdb -U #{SPEC_DB[:username]} #{SPEC_DB[:database]} -T template_postgis`
|
40
|
+
puts "Done. Please run spec again."
|
41
|
+
exit
|
42
|
+
end
|
24
43
|
|
25
|
-
puts "Running against PostgreSQL #{PG_VERSION}"
|
26
44
|
|
27
|
-
require File.dirname(__FILE__) + '/db/schema_postgis.rb'
|
28
|
-
require File.dirname(__FILE__) + '/db/models_postgis.rb'
|
29
45
|
|
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: postgis_adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease:
|
5
|
+
version: 0.7.9
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Marcos Piccinini
|
@@ -9,10 +10,20 @@ autorequire:
|
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
12
|
|
12
|
-
date:
|
13
|
+
date: 2011-03-05 00:00:00 -03:00
|
13
14
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: GeoRuby
|
18
|
+
prerelease: false
|
19
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
|
+
none: false
|
21
|
+
requirements:
|
22
|
+
- - ">="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: "0"
|
25
|
+
type: :runtime
|
26
|
+
version_requirements: *id001
|
16
27
|
description: Execute PostGIS functions on Active Record
|
17
28
|
email: x@nofxx.com
|
18
29
|
executables: []
|
@@ -22,33 +33,34 @@ extensions: []
|
|
22
33
|
extra_rdoc_files:
|
23
34
|
- README.rdoc
|
24
35
|
files:
|
25
|
-
- .gitignore
|
26
|
-
- History.txt
|
27
|
-
- MIT-LICENSE
|
28
|
-
- README.rdoc
|
29
|
-
- Rakefile
|
30
|
-
- VERSION
|
31
|
-
- init.rb
|
32
|
-
- lib/postgis_adapter.rb
|
33
|
-
- lib/postgis_adapter/acts_as_geom.rb
|
34
36
|
- lib/postgis_adapter/common_spatial_adapter.rb
|
35
|
-
- lib/
|
36
|
-
- lib/
|
37
|
-
- lib/
|
38
|
-
- lib/
|
39
|
-
- postgis_adapter.
|
40
|
-
-
|
37
|
+
- lib/postgis_adapter/functions.rb
|
38
|
+
- lib/postgis_adapter/acts_as_geom.rb
|
39
|
+
- lib/postgis_adapter/railtie.rb
|
40
|
+
- lib/postgis_adapter/functions/common.rb
|
41
|
+
- lib/postgis_adapter/functions/bbox.rb
|
42
|
+
- lib/postgis_adapter/functions/class.rb
|
43
|
+
- lib/postgis_adapter.rb
|
41
44
|
- spec/db/models_postgis.rb
|
42
45
|
- spec/db/schema_postgis.rb
|
43
46
|
- spec/postgis_adapter/acts_as_geom_spec.rb
|
47
|
+
- spec/postgis_adapter/functions/class_spec.rb
|
48
|
+
- spec/postgis_adapter/functions/common_spec.rb
|
49
|
+
- spec/postgis_adapter/functions/bbox_spec.rb
|
44
50
|
- spec/postgis_adapter/common_spatial_adapter_spec.rb
|
45
|
-
- spec/
|
46
|
-
- spec/postgis_functions/bbox_spec.rb
|
47
|
-
- spec/postgis_functions/class_spec.rb
|
48
|
-
- spec/postgis_functions/common_spec.rb
|
49
|
-
- spec/postgis_functions_spec.rb
|
50
|
-
- spec/spec.opts
|
51
|
+
- spec/postgis_adapter/functions_spec.rb
|
51
52
|
- spec/spec_helper.rb
|
53
|
+
- spec/postgis_adapter_spec.rb
|
54
|
+
- Gemfile.lock
|
55
|
+
- postgis_adapter.gemspec
|
56
|
+
- MIT-LICENSE
|
57
|
+
- rails/init.rb
|
58
|
+
- Rakefile
|
59
|
+
- VERSION
|
60
|
+
- README.rdoc
|
61
|
+
- Gemfile
|
62
|
+
- init.rb
|
63
|
+
- History.txt
|
52
64
|
has_rdoc: true
|
53
65
|
homepage: http://github.com/nofxx/postgis_adapter
|
54
66
|
licenses: []
|
@@ -59,21 +71,21 @@ rdoc_options:
|
|
59
71
|
require_paths:
|
60
72
|
- lib
|
61
73
|
required_ruby_version: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
62
75
|
requirements:
|
63
76
|
- - ">="
|
64
77
|
- !ruby/object:Gem::Version
|
65
78
|
version: "0"
|
66
|
-
version:
|
67
79
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
+
none: false
|
68
81
|
requirements:
|
69
82
|
- - ">="
|
70
83
|
- !ruby/object:Gem::Version
|
71
84
|
version: "0"
|
72
|
-
version:
|
73
85
|
requirements: []
|
74
86
|
|
75
87
|
rubyforge_project: postgis_adapter
|
76
|
-
rubygems_version: 1.
|
88
|
+
rubygems_version: 1.5.2
|
77
89
|
signing_key:
|
78
90
|
specification_version: 3
|
79
91
|
summary: PostGIS Adapter for Active Record
|
@@ -81,10 +93,10 @@ test_files:
|
|
81
93
|
- spec/db/models_postgis.rb
|
82
94
|
- spec/db/schema_postgis.rb
|
83
95
|
- spec/postgis_adapter/acts_as_geom_spec.rb
|
96
|
+
- spec/postgis_adapter/functions/class_spec.rb
|
97
|
+
- spec/postgis_adapter/functions/common_spec.rb
|
98
|
+
- spec/postgis_adapter/functions/bbox_spec.rb
|
84
99
|
- spec/postgis_adapter/common_spatial_adapter_spec.rb
|
85
|
-
- spec/
|
100
|
+
- spec/postgis_adapter/functions_spec.rb
|
86
101
|
- spec/spec_helper.rb
|
87
102
|
- 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/.gitignore
DELETED
data/spec/spec.opts
DELETED