geos-extensions 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +3 -0
  3. data/Gemfile +17 -0
  4. data/Guardfile +17 -0
  5. data/MIT-LICENSE +1 -1
  6. data/README.rdoc +19 -91
  7. data/Rakefile +1 -12
  8. data/geos-extensions.gemspec +1 -9
  9. data/lib/geos-extensions.rb +1 -9
  10. data/lib/geos/coordinate_sequence.rb +92 -0
  11. data/lib/geos/extensions/version.rb +1 -1
  12. data/lib/geos/geometry.rb +252 -0
  13. data/lib/geos/geometry_collection.rb +60 -0
  14. data/lib/geos/geos_helper.rb +86 -72
  15. data/lib/geos/google_maps.rb +1 -0
  16. data/lib/geos/google_maps/api_2.rb +9 -23
  17. data/lib/geos/google_maps/api_3.rb +10 -24
  18. data/lib/geos/google_maps/api_common.rb +41 -0
  19. data/lib/geos/line_string.rb +15 -0
  20. data/lib/geos/multi_line_string.rb +15 -0
  21. data/lib/geos/multi_point.rb +15 -0
  22. data/lib/geos/multi_polygon.rb +27 -0
  23. data/lib/geos/point.rb +120 -0
  24. data/lib/geos/polygon.rb +158 -0
  25. data/lib/geos/yaml.rb +30 -0
  26. data/lib/geos/yaml/psych.rb +18 -0
  27. data/lib/geos/yaml/syck.rb +41 -0
  28. data/lib/geos_extensions.rb +110 -711
  29. data/test/google_maps_api_2_tests.rb +54 -32
  30. data/test/google_maps_api_3_tests.rb +58 -36
  31. data/test/google_maps_polyline_encoder_tests.rb +1 -1
  32. data/test/helper_tests.rb +28 -0
  33. data/test/misc_tests.rb +130 -10
  34. data/test/reader_tests.rb +38 -1
  35. data/test/test_helper.rb +54 -146
  36. data/test/writer_tests.rb +329 -10
  37. data/test/yaml_tests.rb +203 -0
  38. metadata +26 -102
  39. data/app/models/geos/geometry_column.rb +0 -39
  40. data/app/models/geos/spatial_ref_sys.rb +0 -12
  41. data/lib/geos/active_record_extensions.rb +0 -12
  42. data/lib/geos/active_record_extensions/connection_adapters/postgresql_adapter.rb +0 -151
  43. data/lib/geos/active_record_extensions/spatial_columns.rb +0 -367
  44. data/lib/geos/active_record_extensions/spatial_scopes.rb +0 -493
  45. data/lib/geos/rails/engine.rb +0 -6
  46. data/lib/tasks/test.rake +0 -42
  47. data/test/adapter_tests.rb +0 -38
  48. data/test/database.yml +0 -17
  49. data/test/fixtures/foo3ds.yml +0 -16
  50. data/test/fixtures/foo_geographies.yml +0 -16
  51. data/test/fixtures/foos.yml +0 -16
  52. data/test/geography_columns_tests.rb +0 -176
  53. data/test/geometry_columns_tests.rb +0 -178
  54. data/test/spatial_scopes_geographies_tests.rb +0 -107
  55. data/test/spatial_scopes_tests.rb +0 -337
@@ -0,0 +1,203 @@
1
+ # encoding: UTF-8
2
+
3
+ $: << File.dirname(__FILE__)
4
+ require 'test_helper'
5
+
6
+ class YamlTests < MiniTest::Unit::TestCase
7
+ include TestHelper
8
+
9
+ # This is for 1.8 support, makes tests easier
10
+ unless YAML.const_defined?('ENGINE')
11
+ YAML::ENGINE = 'syck'
12
+ end
13
+
14
+ def munge_expected(expected)
15
+ # Sych expects a space after the tag, psych does not
16
+ if YAML::ENGINE == 'syck'
17
+ expected.sub!(/\n/, " \n")
18
+ else
19
+ expected
20
+ end
21
+ end
22
+
23
+ def test_point_wkt
24
+ geom = Geos.read('POINT(5 7)')
25
+ yaml = YAML.dump(geom)
26
+
27
+ expected = munge_expected <<-EOS
28
+ --- !ruby/object:Geos::Point
29
+ geom: POINT (5.0000000000000000 7.0000000000000000)
30
+ EOS
31
+
32
+ assert_equal(expected, yaml)
33
+
34
+ new_geom = YAML.load(yaml)
35
+ assert_kind_of(Geos::Point, new_geom)
36
+ assert_in_delta(5, new_geom.x, DELTA_TOLERANCE)
37
+ assert_in_delta(7, new_geom.y, DELTA_TOLERANCE)
38
+ end
39
+
40
+ def test_line_string
41
+ geom = Geos.read('LINESTRING (0 0, 10 10)')
42
+ yaml = YAML.dump(geom)
43
+
44
+ expected = munge_expected <<-EOS
45
+ --- !ruby/object:Geos::LineString
46
+ geom: LINESTRING (0.0000000000000000 0.0000000000000000, 10.0000000000000000 10.0000000000000000)
47
+ EOS
48
+ assert_equal(expected, yaml)
49
+
50
+ new_geom = YAML.load(yaml)
51
+ assert_kind_of(Geos::LineString, new_geom)
52
+
53
+ assert_equal(2, new_geom.num_points)
54
+
55
+ point = geom.point_n(0)
56
+ assert_equal(0, point.x)
57
+ assert_equal(0, point.y)
58
+
59
+ point = geom.point_n(1)
60
+ assert_equal(10, point.x)
61
+ assert_equal(10, point.y)
62
+ end
63
+
64
+ def test_polygon
65
+ geom = Geos.read('POLYGON ((0 0, 5 0, 5 5, 0 5, 0 0))')
66
+ yaml = YAML.dump(geom)
67
+
68
+ expected = if YAML::ENGINE == 'syck' || RUBY_ENGINE == 'jruby'
69
+ munge_expected(<<-EOS)
70
+ --- !ruby/object:Geos::Polygon
71
+ geom: POLYGON ((0.0000000000000000 0.0000000000000000, 5.0000000000000000 0.0000000000000000, 5.0000000000000000 5.0000000000000000, 0.0000000000000000 5.0000000000000000, 0.0000000000000000 0.0000000000000000))
72
+ EOS
73
+ else
74
+ <<-EOS
75
+ --- !ruby/object:Geos::Polygon
76
+ geom: POLYGON ((0.0000000000000000 0.0000000000000000, 5.0000000000000000 0.0000000000000000,
77
+ 5.0000000000000000 5.0000000000000000, 0.0000000000000000 5.0000000000000000, 0.0000000000000000
78
+ 0.0000000000000000))
79
+ EOS
80
+ end
81
+
82
+ assert_equal(expected, yaml)
83
+
84
+ new_geom = YAML.load(yaml)
85
+ assert_kind_of(Geos::Polygon, new_geom)
86
+
87
+ assert_equal(0, new_geom.num_interior_rings)
88
+ assert_equal(5, new_geom.exterior_ring.num_points)
89
+ end
90
+
91
+ def test_geometry_collection
92
+ geom = Geos.read('GEOMETRYCOLLECTION (POINT(5 7))')
93
+ yaml = YAML.dump(geom)
94
+
95
+ expected = munge_expected <<-EOS
96
+ --- !ruby/object:Geos::GeometryCollection
97
+ geom: GEOMETRYCOLLECTION (POINT (5.0000000000000000 7.0000000000000000))
98
+ EOS
99
+ assert_equal(expected, yaml)
100
+
101
+ new_geom = YAML.load(yaml)
102
+ assert_kind_of(Geos::GeometryCollection, new_geom)
103
+ assert_equal(1, new_geom.to_a.count)
104
+ end
105
+
106
+ def test_load_point_with_srid
107
+ yaml = <<-EOS
108
+ --- !ruby/object:Geos::Point
109
+ geom: SRID=4326;POINT (5.0000000000000000 7.0000000000000000)
110
+ EOS
111
+
112
+ new_geom = YAML.load(yaml)
113
+ assert_kind_of(Geos::Point, new_geom)
114
+ assert_equal(4326, new_geom.srid)
115
+ assert_equal(5, new_geom.x)
116
+ assert_equal(7, new_geom.y)
117
+ end
118
+
119
+ def test_load_wkb_hex
120
+ yaml = <<-EOS
121
+ --- !ruby/object:Geos::Point
122
+ geom: 010100000000000000000014400000000000001C40
123
+ EOS
124
+
125
+ new_geom = YAML.load(yaml)
126
+ assert_kind_of(Geos::Point, new_geom)
127
+ assert_equal(5, new_geom.x)
128
+ assert_equal(7, new_geom.y)
129
+ end
130
+
131
+ def test_load_ewkb_hex
132
+ yaml = <<-EOS
133
+ --- !ruby/object:Geos::Point
134
+ geom: 0101000020E610000000000000000014400000000000001C40
135
+ EOS
136
+
137
+ new_geom = YAML.load(yaml)
138
+ assert_kind_of(Geos::Point, new_geom)
139
+ assert_equal(4326, new_geom.srid)
140
+ assert_equal(5, new_geom.x)
141
+ assert_equal(7, new_geom.y)
142
+ end
143
+
144
+ def test_load_g_lat_lng_bounds_string
145
+ yaml = <<-EOS
146
+ --- !ruby/object:Geos::Polygon
147
+ geom: ((0.1, 0.1), (5.2, 5.2))
148
+ EOS
149
+
150
+ new_geom = YAML.load(yaml)
151
+ assert_kind_of(Geos::Polygon, new_geom)
152
+ assert_equal(0.1, new_geom.sw.x)
153
+ assert_equal(0.1, new_geom.sw.y)
154
+ end
155
+
156
+ def test_load_g_lat_lng_bounds_url_value
157
+ yaml = <<-EOS
158
+ --- !ruby/object:Geos::Polygon
159
+ geom: 0.1,0.1,5.2,5.2
160
+ EOS
161
+
162
+ new_geom = YAML.load(yaml)
163
+ assert_kind_of(Geos::Polygon, new_geom)
164
+ assert_equal(0.1, new_geom.sw.x)
165
+ assert_equal(0.1, new_geom.sw.y)
166
+ end
167
+
168
+ def test_load_g_lat_lng_string
169
+ yaml = <<-EOS
170
+ --- !ruby/object:Geos::Point
171
+ geom: (5, 7)
172
+ EOS
173
+
174
+ new_geom = YAML.load(yaml)
175
+ assert_kind_of(Geos::Point, new_geom)
176
+ assert_equal(7, new_geom.x)
177
+ assert_equal(5, new_geom.y)
178
+ end
179
+
180
+ def test_load_g_lat_lng_url_value
181
+ yaml = <<-EOS
182
+ --- !ruby/object:Geos::Point
183
+ geom: "5,7"
184
+ EOS
185
+
186
+ new_geom = YAML.load(yaml)
187
+ assert_kind_of(Geos::Point, new_geom)
188
+ assert_equal(7, new_geom.x)
189
+ assert_equal(5, new_geom.y)
190
+ end
191
+
192
+ def test_load_box2d
193
+ yaml = <<-EOS
194
+ --- !ruby/object:Geos::Polygon
195
+ geom: BOX(0.1 0.1, 5.2 5.2)
196
+ EOS
197
+
198
+ new_geom = YAML.load(yaml)
199
+ assert_kind_of(Geos::Polygon, new_geom)
200
+ assert_equal(0.1, new_geom.sw.x)
201
+ assert_equal(0.1, new_geom.sw.y)
202
+ end
203
+ end
metadata CHANGED
@@ -1,96 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geos-extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
5
- prerelease:
4
+ version: 0.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - J Smith
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-08-31 00:00:00.000000000 Z
11
+ date: 2013-05-21 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: activerecord
16
14
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '2.3'
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '2.3'
30
- - !ruby/object:Gem::Dependency
31
- name: ffi-geos
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
15
  requirements:
35
16
  - - ~>
36
17
  - !ruby/object:Gem::Version
37
- version: 0.0.4
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: 0.0.4
46
- - !ruby/object:Gem::Dependency
47
- name: pg
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :runtime
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- - !ruby/object:Gem::Dependency
63
- name: rdoc
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: '0'
70
- type: :runtime
71
- prerelease: false
18
+ version: '0.1'
72
19
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
78
- - !ruby/object:Gem::Dependency
79
- name: rake
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
20
  requirements:
83
21
  - - ~>
84
22
  - !ruby/object:Gem::Version
85
- version: '0.9'
23
+ version: '0.1'
86
24
  type: :runtime
87
25
  prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ~>
92
- - !ruby/object:Gem::Version
93
- version: '0.9'
26
+ name: ffi-geos
94
27
  description: Extensions for the GEOS library.
95
28
  email: code@zoocasa.com
96
29
  executables: []
@@ -100,80 +33,71 @@ extra_rdoc_files:
100
33
  files:
101
34
  - .gitignore
102
35
  - Gemfile
36
+ - Guardfile
103
37
  - MIT-LICENSE
104
38
  - README.rdoc
105
39
  - Rakefile
106
- - app/models/geos/geometry_column.rb
107
- - app/models/geos/spatial_ref_sys.rb
108
40
  - geos-extensions.gemspec
109
41
  - lib/geos-extensions.rb
110
- - lib/geos/active_record_extensions.rb
111
- - lib/geos/active_record_extensions/connection_adapters/postgresql_adapter.rb
112
- - lib/geos/active_record_extensions/spatial_columns.rb
113
- - lib/geos/active_record_extensions/spatial_scopes.rb
42
+ - lib/geos/coordinate_sequence.rb
114
43
  - lib/geos/extensions/version.rb
44
+ - lib/geos/geometry.rb
45
+ - lib/geos/geometry_collection.rb
115
46
  - lib/geos/geos_helper.rb
116
47
  - lib/geos/google_maps.rb
117
48
  - lib/geos/google_maps/api_2.rb
118
49
  - lib/geos/google_maps/api_3.rb
50
+ - lib/geos/google_maps/api_common.rb
119
51
  - lib/geos/google_maps/polyline_encoder.rb
120
- - lib/geos/rails/engine.rb
52
+ - lib/geos/line_string.rb
53
+ - lib/geos/multi_line_string.rb
54
+ - lib/geos/multi_point.rb
55
+ - lib/geos/multi_polygon.rb
56
+ - lib/geos/point.rb
57
+ - lib/geos/polygon.rb
58
+ - lib/geos/yaml.rb
59
+ - lib/geos/yaml/psych.rb
60
+ - lib/geos/yaml/syck.rb
121
61
  - lib/geos_extensions.rb
122
- - lib/tasks/test.rake
123
- - test/adapter_tests.rb
124
- - test/database.yml
125
- - test/fixtures/foo3ds.yml
126
- - test/fixtures/foo_geographies.yml
127
- - test/fixtures/foos.yml
128
- - test/geography_columns_tests.rb
129
- - test/geometry_columns_tests.rb
130
62
  - test/google_maps_api_2_tests.rb
131
63
  - test/google_maps_api_3_tests.rb
132
64
  - test/google_maps_polyline_encoder_tests.rb
65
+ - test/helper_tests.rb
133
66
  - test/misc_tests.rb
134
67
  - test/reader_tests.rb
135
- - test/spatial_scopes_geographies_tests.rb
136
- - test/spatial_scopes_tests.rb
137
68
  - test/test_helper.rb
138
69
  - test/writer_tests.rb
70
+ - test/yaml_tests.rb
139
71
  homepage: http://github.com/zoocasa/geos-extensions
140
72
  licenses: []
73
+ metadata: {}
141
74
  post_install_message:
142
75
  rdoc_options: []
143
76
  require_paths:
144
77
  - lib
145
78
  required_ruby_version: !ruby/object:Gem::Requirement
146
- none: false
147
79
  requirements:
148
80
  - - ! '>='
149
81
  - !ruby/object:Gem::Version
150
82
  version: '0'
151
83
  required_rubygems_version: !ruby/object:Gem::Requirement
152
- none: false
153
84
  requirements:
154
85
  - - ! '>='
155
86
  - !ruby/object:Gem::Version
156
87
  version: '0'
157
88
  requirements: []
158
89
  rubyforge_project:
159
- rubygems_version: 1.8.23
90
+ rubygems_version: 2.0.3
160
91
  signing_key:
161
- specification_version: 3
92
+ specification_version: 4
162
93
  summary: Extensions for the GEOS library.
163
94
  test_files:
164
- - test/adapter_tests.rb
165
- - test/database.yml
166
- - test/fixtures/foo3ds.yml
167
- - test/fixtures/foo_geographies.yml
168
- - test/fixtures/foos.yml
169
- - test/geography_columns_tests.rb
170
- - test/geometry_columns_tests.rb
171
95
  - test/google_maps_api_2_tests.rb
172
96
  - test/google_maps_api_3_tests.rb
173
97
  - test/google_maps_polyline_encoder_tests.rb
98
+ - test/helper_tests.rb
174
99
  - test/misc_tests.rb
175
100
  - test/reader_tests.rb
176
- - test/spatial_scopes_geographies_tests.rb
177
- - test/spatial_scopes_tests.rb
178
101
  - test/test_helper.rb
179
102
  - test/writer_tests.rb
103
+ - test/yaml_tests.rb
@@ -1,39 +0,0 @@
1
-
2
- module Geos
3
- class GeometryColumn < ::ActiveRecord::Base
4
- set_table_name 'geometry_columns'
5
- set_inheritance_column 'nonexistent_column_name_type'
6
-
7
- belongs_to :spatial_ref_sys,
8
- :foreign_key => :srid,
9
- :inverse_of => :geometry_columns
10
-
11
- after_initialize proc { |row|
12
- row.f_table_catalog ||= ''
13
- }
14
-
15
- validates :f_table_catalog,
16
- :length => {
17
- :minimum => 0
18
- }
19
-
20
- validates :f_table_schema,
21
- :presence => true
22
-
23
- validates :f_table_name,
24
- :presence => true
25
-
26
- validates :f_geometry_column,
27
- :presence => true
28
-
29
- validates :coord_dimension,
30
- :presence => true
31
-
32
- validates :srid,
33
- :presence => true
34
-
35
- validates :type,
36
- :presence => true
37
- end
38
- end
39
-
@@ -1,12 +0,0 @@
1
-
2
- module Geos
3
- class SpatialRefSys < ::ActiveRecord::Base
4
- set_table_name 'spatial_ref_sys'
5
- set_primary_key 'srid'
6
-
7
- has_many :geometry_columns,
8
- :foreign_key => :srid,
9
- :inverse_of => :spatial_ref_sys
10
- end
11
- end
12
-