rgeo-shapefile 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,5 @@
1
1
  module RGeo
2
-
3
2
  module Shapefile
4
-
5
- VERSION = '0.3.0'.freeze
6
-
3
+ VERSION = "0.4.0".freeze
7
4
  end
8
-
9
5
  end
data/test/basic_test.rb CHANGED
@@ -1,21 +1,8 @@
1
- require 'minitest/autorun'
2
- require 'rgeo/shapefile'
1
+ require "minitest/autorun"
2
+ require "rgeo/shapefile"
3
3
 
4
-
5
- module RGeo
6
- module Shapefile
7
- module Tests # :nodoc:
8
-
9
- class BasicTest < ::Minitest::Test # :nodoc:
10
-
11
-
12
- def test_has_version
13
- refute_nil(::RGeo::Shapefile::VERSION)
14
- end
15
-
16
-
17
- end
18
-
19
- end
4
+ class BasicTest < Minitest::Test
5
+ def test_has_version
6
+ assert RGeo::Shapefile::VERSION.is_a?(String)
20
7
  end
21
8
  end
@@ -1,492 +1,472 @@
1
- require 'minitest/autorun'
2
- require 'rgeo/shapefile'
1
+ require "minitest/autorun"
2
+ require "rgeo/shapefile"
3
3
 
4
+ class ShapelibCasesTest < Minitest::Test
5
+ def test_open_with_block_returns_value_of_block
6
+ result = _open_shapefile("test") do |file_|
7
+ file_.num_records
8
+ end
9
+ assert_equal(3, result)
10
+ end
4
11
 
5
- module RGeo
6
- module Shapefile
7
- module Tests # :nodoc:
8
-
9
- class ShapelibCasesTest < ::Minitest::Test # :nodoc:
10
-
11
- def _open_shapefile(name_, &block_)
12
- RGeo::Shapefile::Reader.open(::File.expand_path("shapelib_testcases/#{name_}", ::File.dirname(__FILE__)), &block_)
13
- end
14
-
15
-
16
- def test_rewind
17
- _open_shapefile('test') do |file_|
18
- assert_equal(0, file_.cur_index)
19
- rec_ = file_.next
20
- assert_equal(0, rec_.index)
21
- assert_equal(1, rec_.geometry[0].num_interior_rings)
22
- assert_equal(1, file_.cur_index)
23
- file_.rewind
24
- assert_equal(0, file_.cur_index)
25
- rec_ = file_.next
26
- assert_equal(0, rec_.index)
27
- assert_equal(1, rec_.geometry[0].num_interior_rings)
28
- end
29
- end
30
-
31
-
32
- def test_seek
33
- _open_shapefile('test') do |file_|
34
- assert_equal(0, file_.cur_index)
35
- assert_equal(false, file_.seek_index(4))
36
- assert_equal(0, file_.cur_index)
37
- file_.seek_index(3)
38
- assert_equal(3, file_.cur_index)
39
- assert_nil(file_.next)
40
- file_.seek_index(2)
41
- assert_equal(2, file_.cur_index)
42
- rec_ = file_.next
43
- assert_equal(2, rec_.index)
44
- assert_equal(0, rec_.geometry[0].num_interior_rings)
45
- assert_equal('', rec_['Descriptio'])
46
- file_.seek_index(0)
47
- assert_equal(0, file_.cur_index)
48
- rec_ = file_.next
49
- assert_equal(0, rec_.index)
50
- assert_equal(1, rec_.geometry[0].num_interior_rings)
51
- end
52
- end
53
-
54
-
55
- def test_attributes
56
- _open_shapefile('test') do |file_|
57
- rec_ = file_.next
58
- assert_equal('Square with triangle missing', rec_['Descriptio'])
59
- assert_equal('Square with triangle missing', rec_.attributes['Descriptio'])
60
- assert_equal(1, rec_['TestInt'])
61
- assert_equal(2.5, rec_['TestDouble'])
62
- assert_nil(rec_['NotAKey'])
63
- rec_ = file_.next
64
- assert_equal('Smaller triangle', rec_['Descriptio'])
65
- assert_equal(100, rec_['TestInt'])
66
- assert_equal(1000.25, rec_['TestDouble'])
67
- rec_ = file_.next
68
- assert_equal('', rec_['Descriptio'])
69
- assert_equal(0, rec_['TestInt'])
70
- assert_equal(0, rec_['TestDouble'])
71
- end
72
- end
73
-
74
-
75
- def test_test0
76
- _open_shapefile('test0') do |file_|
77
- assert_equal(0, file_.shape_type_code)
78
- assert_equal(2, file_.num_records)
79
- rec_ = file_.next
80
- assert_equal(0, rec_.index)
81
- assert_nil(rec_.geometry)
82
- rec_ = file_.next
83
- assert_equal(1, rec_.index)
84
- assert_nil(rec_.geometry)
85
- assert_nil(file_.next)
86
- end
87
- end
88
-
89
-
90
- def _test_point_shapefile(filename_, has_z_, has_m_)
91
- _open_shapefile(filename_) do |file_|
92
- assert_equal(has_z_ ? 11 : has_m_ ? 21 : 1, file_.shape_type_code)
93
- assert_equal(2, file_.num_records)
94
- assert_equal(has_z_, file_.factory.property(:has_z_coordinate))
95
- assert_equal(has_m_, file_.factory.property(:has_m_coordinate))
96
- rec_ = file_.next
97
- assert_equal(0, rec_.index)
98
- assert_equal(::RGeo::Feature::Point, rec_.geometry.geometry_type)
99
- assert_equal(1, rec_.geometry.x)
100
- assert_equal(2, rec_.geometry.y)
101
- assert_equal(3, rec_.geometry.z) if has_z_
102
- assert_equal(4, rec_.geometry.m) if has_m_
103
- rec_ = file_.next
104
- assert_equal(1, rec_.index)
105
- assert_equal(::RGeo::Feature::Point, rec_.geometry.geometry_type)
106
- assert_equal(10, rec_.geometry.x)
107
- assert_equal(20, rec_.geometry.y)
108
- assert_equal(30, rec_.geometry.z) if has_z_
109
- assert_equal(40, rec_.geometry.m) if has_m_
110
- assert_nil(file_.next)
111
- end
112
- end
113
-
114
-
115
- def test_test1
116
- _test_point_shapefile('test1', false, false)
117
- end
118
-
119
-
120
- def test_test2
121
- _test_point_shapefile('test2', true, true)
122
- end
123
-
124
-
125
- def test_test3
126
- _test_point_shapefile('test3', false, true)
127
- end
128
-
129
-
130
- def _test_multipoint_shapefile(filename_, has_z_, has_m_)
131
- _open_shapefile(filename_) do |file_|
132
- assert_equal(has_z_ ? 18 : has_m_ ? 28 : 8, file_.shape_type_code)
133
- assert_equal(3, file_.num_records)
134
- assert_equal(has_z_, file_.factory.property(:has_z_coordinate))
135
- assert_equal(has_m_, file_.factory.property(:has_m_coordinate))
136
- rec_ = file_.next
137
- assert_equal(::RGeo::Feature::MultiPoint, rec_.geometry.geometry_type)
138
- assert_equal(4, rec_.geometry.num_geometries)
139
- assert_equal(1.15, rec_.geometry[0].x)
140
- assert_equal(2.25, rec_.geometry[0].y)
141
- assert_equal(3.35, rec_.geometry[0].z) if has_z_
142
- assert_equal(4.45, rec_.geometry[0].m) if has_m_
143
- assert_equal(4.15, rec_.geometry[3].x)
144
- assert_equal(5.25, rec_.geometry[3].y)
145
- assert_equal(6.35, rec_.geometry[3].z) if has_z_
146
- assert_equal(7.45, rec_.geometry[3].m) if has_m_
147
- rec_ = file_.next
148
- assert_equal(::RGeo::Feature::MultiPoint, rec_.geometry.geometry_type)
149
- assert_equal(4, rec_.geometry.num_geometries)
150
- rec_ = file_.next
151
- assert_equal(::RGeo::Feature::MultiPoint, rec_.geometry.geometry_type)
152
- assert_equal(4, rec_.geometry.num_geometries)
153
- assert_equal(21.15, rec_.geometry[0].x)
154
- assert_equal(22.25, rec_.geometry[0].y)
155
- assert_equal(23.35, rec_.geometry[0].z) if has_z_
156
- assert_equal(24.45, rec_.geometry[0].m) if has_m_
157
- assert_equal(24.15, rec_.geometry[3].x)
158
- assert_equal(25.25, rec_.geometry[3].y)
159
- assert_equal(26.35, rec_.geometry[3].z) if has_z_
160
- assert_equal(27.45, rec_.geometry[3].m) if has_m_
161
- assert_nil(file_.next)
162
- end
163
- end
164
-
165
-
166
- def test_test4
167
- _test_multipoint_shapefile('test4', false, false)
168
- end
169
-
170
-
171
- def test_test5
172
- _test_multipoint_shapefile('test5', true, true)
173
- end
174
-
12
+ def test_rewind
13
+ _open_shapefile("test") do |file_|
14
+ assert_equal(0, file_.cur_index)
15
+ rec_ = file_.next
16
+ assert_equal(0, rec_.index)
17
+ assert_equal(1, rec_.geometry[0].num_interior_rings)
18
+ assert_equal(1, file_.cur_index)
19
+ file_.rewind
20
+ assert_equal(0, file_.cur_index)
21
+ rec_ = file_.next
22
+ assert_equal(0, rec_.index)
23
+ assert_equal(1, rec_.geometry[0].num_interior_rings)
24
+ end
25
+ end
175
26
 
176
- def test_test6
177
- _test_multipoint_shapefile('test6', false, true)
178
- end
27
+ def test_seek
28
+ _open_shapefile("test") do |file_|
29
+ assert_equal(0, file_.cur_index)
30
+ assert_equal(false, file_.seek_index(4))
31
+ assert_equal(0, file_.cur_index)
32
+ file_.seek_index(3)
33
+ assert_equal(3, file_.cur_index)
34
+ assert_nil(file_.next)
35
+ file_.seek_index(2)
36
+ assert_equal(2, file_.cur_index)
37
+ rec_ = file_.next
38
+ assert_equal(2, rec_.index)
39
+ assert_equal(0, rec_.geometry[0].num_interior_rings)
40
+ assert_equal("", rec_["Descriptio"])
41
+ file_.seek_index(0)
42
+ assert_equal(0, file_.cur_index)
43
+ rec_ = file_.next
44
+ assert_equal(0, rec_.index)
45
+ assert_equal(1, rec_.geometry[0].num_interior_rings)
46
+ end
47
+ end
179
48
 
49
+ def test_attributes
50
+ _open_shapefile("test") do |file_|
51
+ rec_ = file_.next
52
+ assert_equal("Square with triangle missing", rec_["Descriptio"])
53
+ assert_equal("Square with triangle missing", rec_.attributes["Descriptio"])
54
+ assert_equal(1, rec_["TestInt"])
55
+ assert_equal(2.5, rec_["TestDouble"])
56
+ assert_nil(rec_["NotAKey"])
57
+ rec_ = file_.next
58
+ assert_equal("Smaller triangle", rec_["Descriptio"])
59
+ assert_equal(100, rec_["TestInt"])
60
+ assert_equal(1000.25, rec_["TestDouble"])
61
+ rec_ = file_.next
62
+ assert_equal("", rec_["Descriptio"])
63
+ assert_equal(0, rec_["TestInt"])
64
+ assert_equal(0, rec_["TestDouble"])
65
+ end
66
+ end
180
67
 
181
- def _test_polyline_shapefile(filename_, has_z_, has_m_)
182
- _open_shapefile(filename_) do |file_|
183
- assert_equal(has_z_ ? 13 : has_m_ ? 23 : 3, file_.shape_type_code)
184
- assert_equal(4, file_.num_records)
185
- assert_equal(has_z_, file_.factory.property(:has_z_coordinate))
186
- assert_equal(has_m_, file_.factory.property(:has_m_coordinate))
187
- rec_ = file_.next
188
- assert_equal(::RGeo::Feature::MultiLineString, rec_.geometry.geometry_type)
189
- assert_equal(1, rec_.geometry.num_geometries)
190
- assert_equal(5, rec_.geometry[0].num_points)
191
- assert_equal(1, rec_.geometry[0].point_n(0).x)
192
- assert_equal(1, rec_.geometry[0].point_n(0).y)
193
- assert_equal(3.35, rec_.geometry[0].point_n(0).z) if has_z_
194
- assert_equal(4.45, rec_.geometry[0].point_n(0).m) if has_m_
195
- assert_equal(2, rec_.geometry[0].point_n(1).x)
196
- assert_equal(1, rec_.geometry[0].point_n(1).y)
197
- assert_equal(4.35, rec_.geometry[0].point_n(1).z) if has_z_
198
- assert_equal(5.45, rec_.geometry[0].point_n(1).m) if has_m_
199
- assert_equal(2, rec_.geometry[0].point_n(2).x)
200
- assert_equal(2, rec_.geometry[0].point_n(2).y)
201
- assert_equal(5.35, rec_.geometry[0].point_n(2).z) if has_z_
202
- assert_equal(6.45, rec_.geometry[0].point_n(2).m) if has_m_
203
- assert_equal(1, rec_.geometry[0].point_n(4).x)
204
- assert_equal(1, rec_.geometry[0].point_n(4).y)
205
- assert_equal(7.35, rec_.geometry[0].point_n(4).z) if has_z_
206
- assert_equal(8.45, rec_.geometry[0].point_n(4).m) if has_m_
207
- rec_ = file_.next
208
- assert_equal(::RGeo::Feature::MultiLineString, rec_.geometry.geometry_type)
209
- assert_equal(1, rec_.geometry.num_geometries)
210
- rec_ = file_.next
211
- assert_equal(::RGeo::Feature::MultiLineString, rec_.geometry.geometry_type)
212
- assert_equal(1, rec_.geometry.num_geometries)
213
- assert_equal(5, rec_.geometry[0].num_points)
214
- assert_equal(1, rec_.geometry[0].point_n(0).x)
215
- assert_equal(7, rec_.geometry[0].point_n(0).y)
216
- assert_equal(23.35, rec_.geometry[0].point_n(0).z) if has_z_
217
- assert_equal(24.45, rec_.geometry[0].point_n(0).m) if has_m_
218
- assert_equal(2, rec_.geometry[0].point_n(1).x)
219
- assert_equal(7, rec_.geometry[0].point_n(1).y)
220
- assert_equal(24.35, rec_.geometry[0].point_n(1).z) if has_z_
221
- assert_equal(25.45, rec_.geometry[0].point_n(1).m) if has_m_
222
- assert_equal(2, rec_.geometry[0].point_n(2).x)
223
- assert_equal(8, rec_.geometry[0].point_n(2).y)
224
- assert_equal(25.35, rec_.geometry[0].point_n(2).z) if has_z_
225
- assert_equal(26.45, rec_.geometry[0].point_n(2).m) if has_m_
226
- assert_equal(1, rec_.geometry[0].point_n(4).x)
227
- assert_equal(7, rec_.geometry[0].point_n(4).y)
228
- assert_equal(27.35, rec_.geometry[0].point_n(4).z) if has_z_
229
- assert_equal(28.45, rec_.geometry[0].point_n(4).m) if has_m_
230
- rec_ = file_.next
231
- assert_equal(::RGeo::Feature::MultiLineString, rec_.geometry.geometry_type)
232
- assert_equal(3, rec_.geometry.num_geometries)
233
- assert_equal(5, rec_.geometry[0].num_points)
234
- assert_equal(0, rec_.geometry[0].point_n(0).x)
235
- assert_equal(0, rec_.geometry[0].point_n(0).y)
236
- assert_equal(0, rec_.geometry[0].point_n(0).z) if has_z_
237
- assert_equal(0, rec_.geometry[0].point_n(0).m) if has_m_
238
- assert_equal(0, rec_.geometry[0].point_n(1).x)
239
- assert_equal(100, rec_.geometry[0].point_n(1).y)
240
- assert_equal(1, rec_.geometry[0].point_n(1).z) if has_z_
241
- assert_equal(2, rec_.geometry[0].point_n(1).m) if has_m_
242
- assert_equal(0, rec_.geometry[0].point_n(4).x)
243
- assert_equal(0, rec_.geometry[0].point_n(4).y)
244
- assert_equal(4, rec_.geometry[0].point_n(4).z) if has_z_
245
- assert_equal(8, rec_.geometry[0].point_n(4).m) if has_m_
246
- assert_equal(5, rec_.geometry[1].num_points)
247
- assert_equal(10, rec_.geometry[1].point_n(0).x)
248
- assert_equal(20, rec_.geometry[1].point_n(0).y)
249
- assert_equal(5, rec_.geometry[1].point_n(0).z) if has_z_
250
- assert_equal(10, rec_.geometry[1].point_n(0).m) if has_m_
251
- assert_equal(30, rec_.geometry[1].point_n(1).x)
252
- assert_equal(20, rec_.geometry[1].point_n(1).y)
253
- assert_equal(6, rec_.geometry[1].point_n(1).z) if has_z_
254
- assert_equal(12, rec_.geometry[1].point_n(1).m) if has_m_
255
- assert_equal(30, rec_.geometry[1].point_n(2).x)
256
- assert_equal(40, rec_.geometry[1].point_n(2).y)
257
- assert_equal(7, rec_.geometry[1].point_n(2).z) if has_z_
258
- assert_equal(14, rec_.geometry[1].point_n(2).m) if has_m_
259
- assert_equal(5, rec_.geometry[2].num_points)
260
- assert_equal(60, rec_.geometry[2].point_n(0).x)
261
- assert_equal(20, rec_.geometry[2].point_n(0).y)
262
- assert_equal(10, rec_.geometry[2].point_n(0).z) if has_z_
263
- assert_equal(20, rec_.geometry[2].point_n(0).m) if has_m_
264
- assert_equal(90, rec_.geometry[2].point_n(1).x)
265
- assert_equal(20, rec_.geometry[2].point_n(1).y)
266
- assert_equal(11, rec_.geometry[2].point_n(1).z) if has_z_
267
- assert_equal(22, rec_.geometry[2].point_n(1).m) if has_m_
268
- assert_equal(60, rec_.geometry[2].point_n(4).x)
269
- assert_equal(20, rec_.geometry[2].point_n(4).y)
270
- assert_equal(14, rec_.geometry[2].point_n(4).z) if has_z_
271
- assert_equal(28, rec_.geometry[2].point_n(4).m) if has_m_
272
- end
273
- end
68
+ def test_test0
69
+ _open_shapefile("test0") do |file_|
70
+ assert_equal(0, file_.shape_type_code)
71
+ assert_equal(2, file_.num_records)
72
+ rec_ = file_.next
73
+ assert_equal(0, rec_.index)
74
+ assert_nil(rec_.geometry)
75
+ rec_ = file_.next
76
+ assert_equal(1, rec_.index)
77
+ assert_nil(rec_.geometry)
78
+ assert_nil(file_.next)
79
+ end
80
+ end
274
81
 
82
+ def _test_point_shapefile(filename_, has_z_, has_m_)
83
+ _open_shapefile(filename_) do |file_|
84
+ assert_equal(has_z_ ? 11 : has_m_ ? 21 : 1, file_.shape_type_code)
85
+ assert_equal(2, file_.num_records)
86
+ assert_equal(has_z_, file_.factory.property(:has_z_coordinate))
87
+ assert_equal(has_m_, file_.factory.property(:has_m_coordinate))
88
+ rec_ = file_.next
89
+ assert_equal(0, rec_.index)
90
+ assert_equal(RGeo::Feature::Point, rec_.geometry.geometry_type)
91
+ assert_equal(1, rec_.geometry.x)
92
+ assert_equal(2, rec_.geometry.y)
93
+ assert_equal(3, rec_.geometry.z) if has_z_
94
+ assert_equal(4, rec_.geometry.m) if has_m_
95
+ rec_ = file_.next
96
+ assert_equal(1, rec_.index)
97
+ assert_equal(RGeo::Feature::Point, rec_.geometry.geometry_type)
98
+ assert_equal(10, rec_.geometry.x)
99
+ assert_equal(20, rec_.geometry.y)
100
+ assert_equal(30, rec_.geometry.z) if has_z_
101
+ assert_equal(40, rec_.geometry.m) if has_m_
102
+ assert_nil(file_.next)
103
+ end
104
+ end
275
105
 
276
- def test_test7
277
- _test_polyline_shapefile('test7', false, false)
278
- end
106
+ def test_test1
107
+ _test_point_shapefile("test1", false, false)
108
+ end
279
109
 
110
+ def test_test2
111
+ _test_point_shapefile("test2", true, true)
112
+ end
280
113
 
281
- def test_test8
282
- _test_polyline_shapefile('test8', true, true)
283
- end
114
+ def test_test3
115
+ _test_point_shapefile("test3", false, true)
116
+ end
284
117
 
118
+ def _test_multipoint_shapefile(filename_, has_z_, has_m_)
119
+ _open_shapefile(filename_) do |file_|
120
+ assert_equal(has_z_ ? 18 : has_m_ ? 28 : 8, file_.shape_type_code)
121
+ assert_equal(3, file_.num_records)
122
+ assert_equal(has_z_, file_.factory.property(:has_z_coordinate))
123
+ assert_equal(has_m_, file_.factory.property(:has_m_coordinate))
124
+ rec_ = file_.next
125
+ assert_equal(RGeo::Feature::MultiPoint, rec_.geometry.geometry_type)
126
+ assert_equal(4, rec_.geometry.num_geometries)
127
+ assert_equal(1.15, rec_.geometry[0].x)
128
+ assert_equal(2.25, rec_.geometry[0].y)
129
+ assert_equal(3.35, rec_.geometry[0].z) if has_z_
130
+ assert_equal(4.45, rec_.geometry[0].m) if has_m_
131
+ assert_equal(4.15, rec_.geometry[3].x)
132
+ assert_equal(5.25, rec_.geometry[3].y)
133
+ assert_equal(6.35, rec_.geometry[3].z) if has_z_
134
+ assert_equal(7.45, rec_.geometry[3].m) if has_m_
135
+ rec_ = file_.next
136
+ assert_equal(RGeo::Feature::MultiPoint, rec_.geometry.geometry_type)
137
+ assert_equal(4, rec_.geometry.num_geometries)
138
+ rec_ = file_.next
139
+ assert_equal(RGeo::Feature::MultiPoint, rec_.geometry.geometry_type)
140
+ assert_equal(4, rec_.geometry.num_geometries)
141
+ assert_equal(21.15, rec_.geometry[0].x)
142
+ assert_equal(22.25, rec_.geometry[0].y)
143
+ assert_equal(23.35, rec_.geometry[0].z) if has_z_
144
+ assert_equal(24.45, rec_.geometry[0].m) if has_m_
145
+ assert_equal(24.15, rec_.geometry[3].x)
146
+ assert_equal(25.25, rec_.geometry[3].y)
147
+ assert_equal(26.35, rec_.geometry[3].z) if has_z_
148
+ assert_equal(27.45, rec_.geometry[3].m) if has_m_
149
+ assert_nil(file_.next)
150
+ end
151
+ end
285
152
 
286
- def test_test9
287
- _test_polyline_shapefile('test9', false, true)
288
- end
153
+ def test_test4
154
+ _test_multipoint_shapefile("test4", false, false)
155
+ end
289
156
 
157
+ def test_test5
158
+ _test_multipoint_shapefile("test5", true, true)
159
+ end
290
160
 
291
- def _test_polygon_shapefile(filename_, has_z_, has_m_)
292
- _open_shapefile(filename_) do |file_|
293
- assert_equal(has_z_ ? 15 : has_m_ ? 25 : 5, file_.shape_type_code)
294
- assert_equal(4, file_.num_records)
295
- assert_equal(has_z_, file_.factory.property(:has_z_coordinate))
296
- assert_equal(has_m_, file_.factory.property(:has_m_coordinate))
297
- rec_ = file_.next
298
- assert_equal(::RGeo::Feature::MultiPolygon, rec_.geometry.geometry_type)
299
- assert_equal(1, rec_.geometry.num_geometries)
300
- assert_equal(0, rec_.geometry[0].num_interior_rings)
301
- assert_equal(5, rec_.geometry[0].exterior_ring.num_points)
302
- assert_equal(1, rec_.geometry[0].exterior_ring.point_n(0).x)
303
- assert_equal(1, rec_.geometry[0].exterior_ring.point_n(0).y)
304
- assert_equal(3.35, rec_.geometry[0].exterior_ring.point_n(0).z) if has_z_
305
- assert_equal(4.45, rec_.geometry[0].exterior_ring.point_n(0).m) if has_m_
306
- assert_equal(2, rec_.geometry[0].exterior_ring.point_n(1).x)
307
- assert_equal(1, rec_.geometry[0].exterior_ring.point_n(1).y)
308
- assert_equal(4.35, rec_.geometry[0].exterior_ring.point_n(1).z) if has_z_
309
- assert_equal(5.45, rec_.geometry[0].exterior_ring.point_n(1).m) if has_m_
310
- assert_equal(2, rec_.geometry[0].exterior_ring.point_n(2).x)
311
- assert_equal(2, rec_.geometry[0].exterior_ring.point_n(2).y)
312
- assert_equal(5.35, rec_.geometry[0].exterior_ring.point_n(2).z) if has_z_
313
- assert_equal(6.45, rec_.geometry[0].exterior_ring.point_n(2).m) if has_m_
314
- assert_equal(1, rec_.geometry[0].exterior_ring.point_n(4).x)
315
- assert_equal(1, rec_.geometry[0].exterior_ring.point_n(4).y)
316
- assert_equal(7.35, rec_.geometry[0].exterior_ring.point_n(4).z) if has_z_
317
- assert_equal(8.45, rec_.geometry[0].exterior_ring.point_n(4).m) if has_m_
318
- rec_ = file_.next
319
- assert_equal(::RGeo::Feature::MultiPolygon, rec_.geometry.geometry_type)
320
- assert_equal(1, rec_.geometry.num_geometries)
321
- rec_ = file_.next
322
- assert_equal(::RGeo::Feature::MultiPolygon, rec_.geometry.geometry_type)
323
- assert_equal(1, rec_.geometry.num_geometries)
324
- assert_equal(0, rec_.geometry[0].num_interior_rings)
325
- assert_equal(5, rec_.geometry[0].exterior_ring.num_points)
326
- assert_equal(1, rec_.geometry[0].exterior_ring.point_n(0).x)
327
- assert_equal(7, rec_.geometry[0].exterior_ring.point_n(0).y)
328
- assert_equal(23.35, rec_.geometry[0].exterior_ring.point_n(0).z) if has_z_
329
- assert_equal(24.45, rec_.geometry[0].exterior_ring.point_n(0).m) if has_m_
330
- assert_equal(2, rec_.geometry[0].exterior_ring.point_n(1).x)
331
- assert_equal(7, rec_.geometry[0].exterior_ring.point_n(1).y)
332
- assert_equal(24.35, rec_.geometry[0].exterior_ring.point_n(1).z) if has_z_
333
- assert_equal(25.45, rec_.geometry[0].exterior_ring.point_n(1).m) if has_m_
334
- assert_equal(2, rec_.geometry[0].exterior_ring.point_n(2).x)
335
- assert_equal(8, rec_.geometry[0].exterior_ring.point_n(2).y)
336
- assert_equal(25.35, rec_.geometry[0].exterior_ring.point_n(2).z) if has_z_
337
- assert_equal(26.45, rec_.geometry[0].exterior_ring.point_n(2).m) if has_m_
338
- assert_equal(1, rec_.geometry[0].exterior_ring.point_n(4).x)
339
- assert_equal(7, rec_.geometry[0].exterior_ring.point_n(4).y)
340
- assert_equal(27.35, rec_.geometry[0].exterior_ring.point_n(4).z) if has_z_
341
- assert_equal(28.45, rec_.geometry[0].exterior_ring.point_n(4).m) if has_m_
342
- rec_ = file_.next
343
- assert_equal(::RGeo::Feature::MultiPolygon, rec_.geometry.geometry_type)
344
- assert_equal(1, rec_.geometry.num_geometries)
345
- assert_equal(2, rec_.geometry[0].num_interior_rings)
346
- assert_equal(5, rec_.geometry[0].exterior_ring.num_points)
347
- assert_equal(0, rec_.geometry[0].exterior_ring.point_n(0).x)
348
- assert_equal(0, rec_.geometry[0].exterior_ring.point_n(0).y)
349
- assert_equal(0, rec_.geometry[0].exterior_ring.point_n(0).z) if has_z_
350
- assert_equal(0, rec_.geometry[0].exterior_ring.point_n(0).m) if has_m_
351
- assert_equal(0, rec_.geometry[0].exterior_ring.point_n(1).x)
352
- assert_equal(100, rec_.geometry[0].exterior_ring.point_n(1).y)
353
- assert_equal(1, rec_.geometry[0].exterior_ring.point_n(1).z) if has_z_
354
- assert_equal(2, rec_.geometry[0].exterior_ring.point_n(1).m) if has_m_
355
- assert_equal(0, rec_.geometry[0].exterior_ring.point_n(4).x)
356
- assert_equal(0, rec_.geometry[0].exterior_ring.point_n(4).y)
357
- assert_equal(4, rec_.geometry[0].exterior_ring.point_n(4).z) if has_z_
358
- assert_equal(8, rec_.geometry[0].exterior_ring.point_n(4).m) if has_m_
359
- assert_equal(5, rec_.geometry[0].interior_ring_n(0).num_points)
360
- assert_equal(10, rec_.geometry[0].interior_ring_n(0).point_n(0).x)
361
- assert_equal(20, rec_.geometry[0].interior_ring_n(0).point_n(0).y)
362
- assert_equal(5, rec_.geometry[0].interior_ring_n(0).point_n(0).z) if has_z_
363
- assert_equal(10, rec_.geometry[0].interior_ring_n(0).point_n(0).m) if has_m_
364
- assert_equal(30, rec_.geometry[0].interior_ring_n(0).point_n(1).x)
365
- assert_equal(20, rec_.geometry[0].interior_ring_n(0).point_n(1).y)
366
- assert_equal(6, rec_.geometry[0].interior_ring_n(0).point_n(1).z) if has_z_
367
- assert_equal(12, rec_.geometry[0].interior_ring_n(0).point_n(1).m) if has_m_
368
- assert_equal(30, rec_.geometry[0].interior_ring_n(0).point_n(2).x)
369
- assert_equal(40, rec_.geometry[0].interior_ring_n(0).point_n(2).y)
370
- assert_equal(7, rec_.geometry[0].interior_ring_n(0).point_n(2).z) if has_z_
371
- assert_equal(14, rec_.geometry[0].interior_ring_n(0).point_n(2).m) if has_m_
372
- assert_equal(5, rec_.geometry[0].interior_ring_n(1).num_points)
373
- assert_equal(60, rec_.geometry[0].interior_ring_n(1).point_n(0).x)
374
- assert_equal(20, rec_.geometry[0].interior_ring_n(1).point_n(0).y)
375
- assert_equal(10, rec_.geometry[0].interior_ring_n(1).point_n(0).z) if has_z_
376
- assert_equal(20, rec_.geometry[0].interior_ring_n(1).point_n(0).m) if has_m_
377
- assert_equal(90, rec_.geometry[0].interior_ring_n(1).point_n(1).x)
378
- assert_equal(20, rec_.geometry[0].interior_ring_n(1).point_n(1).y)
379
- assert_equal(11, rec_.geometry[0].interior_ring_n(1).point_n(1).z) if has_z_
380
- assert_equal(22, rec_.geometry[0].interior_ring_n(1).point_n(1).m) if has_m_
381
- assert_equal(60, rec_.geometry[0].interior_ring_n(1).point_n(4).x)
382
- assert_equal(20, rec_.geometry[0].interior_ring_n(1).point_n(4).y)
383
- assert_equal(14, rec_.geometry[0].interior_ring_n(1).point_n(4).z) if has_z_
384
- assert_equal(28, rec_.geometry[0].interior_ring_n(1).point_n(4).m) if has_m_
385
- end
386
- end
161
+ def test_test6
162
+ _test_multipoint_shapefile("test6", false, true)
163
+ end
387
164
 
165
+ def _test_polyline_shapefile(filename_, has_z_, has_m_)
166
+ _open_shapefile(filename_) do |file_|
167
+ assert_equal(has_z_ ? 13 : has_m_ ? 23 : 3, file_.shape_type_code)
168
+ assert_equal(4, file_.num_records)
169
+ assert_equal(has_z_, file_.factory.property(:has_z_coordinate))
170
+ assert_equal(has_m_, file_.factory.property(:has_m_coordinate))
171
+ rec_ = file_.next
172
+ assert_equal(RGeo::Feature::MultiLineString, rec_.geometry.geometry_type)
173
+ assert_equal(1, rec_.geometry.num_geometries)
174
+ assert_equal(5, rec_.geometry[0].num_points)
175
+ assert_equal(1, rec_.geometry[0].point_n(0).x)
176
+ assert_equal(1, rec_.geometry[0].point_n(0).y)
177
+ assert_equal(3.35, rec_.geometry[0].point_n(0).z) if has_z_
178
+ assert_equal(4.45, rec_.geometry[0].point_n(0).m) if has_m_
179
+ assert_equal(2, rec_.geometry[0].point_n(1).x)
180
+ assert_equal(1, rec_.geometry[0].point_n(1).y)
181
+ assert_equal(4.35, rec_.geometry[0].point_n(1).z) if has_z_
182
+ assert_equal(5.45, rec_.geometry[0].point_n(1).m) if has_m_
183
+ assert_equal(2, rec_.geometry[0].point_n(2).x)
184
+ assert_equal(2, rec_.geometry[0].point_n(2).y)
185
+ assert_equal(5.35, rec_.geometry[0].point_n(2).z) if has_z_
186
+ assert_equal(6.45, rec_.geometry[0].point_n(2).m) if has_m_
187
+ assert_equal(1, rec_.geometry[0].point_n(4).x)
188
+ assert_equal(1, rec_.geometry[0].point_n(4).y)
189
+ assert_equal(7.35, rec_.geometry[0].point_n(4).z) if has_z_
190
+ assert_equal(8.45, rec_.geometry[0].point_n(4).m) if has_m_
191
+ rec_ = file_.next
192
+ assert_equal(RGeo::Feature::MultiLineString, rec_.geometry.geometry_type)
193
+ assert_equal(1, rec_.geometry.num_geometries)
194
+ rec_ = file_.next
195
+ assert_equal(RGeo::Feature::MultiLineString, rec_.geometry.geometry_type)
196
+ assert_equal(1, rec_.geometry.num_geometries)
197
+ assert_equal(5, rec_.geometry[0].num_points)
198
+ assert_equal(1, rec_.geometry[0].point_n(0).x)
199
+ assert_equal(7, rec_.geometry[0].point_n(0).y)
200
+ assert_equal(23.35, rec_.geometry[0].point_n(0).z) if has_z_
201
+ assert_equal(24.45, rec_.geometry[0].point_n(0).m) if has_m_
202
+ assert_equal(2, rec_.geometry[0].point_n(1).x)
203
+ assert_equal(7, rec_.geometry[0].point_n(1).y)
204
+ assert_equal(24.35, rec_.geometry[0].point_n(1).z) if has_z_
205
+ assert_equal(25.45, rec_.geometry[0].point_n(1).m) if has_m_
206
+ assert_equal(2, rec_.geometry[0].point_n(2).x)
207
+ assert_equal(8, rec_.geometry[0].point_n(2).y)
208
+ assert_equal(25.35, rec_.geometry[0].point_n(2).z) if has_z_
209
+ assert_equal(26.45, rec_.geometry[0].point_n(2).m) if has_m_
210
+ assert_equal(1, rec_.geometry[0].point_n(4).x)
211
+ assert_equal(7, rec_.geometry[0].point_n(4).y)
212
+ assert_equal(27.35, rec_.geometry[0].point_n(4).z) if has_z_
213
+ assert_equal(28.45, rec_.geometry[0].point_n(4).m) if has_m_
214
+ rec_ = file_.next
215
+ assert_equal(RGeo::Feature::MultiLineString, rec_.geometry.geometry_type)
216
+ assert_equal(3, rec_.geometry.num_geometries)
217
+ assert_equal(5, rec_.geometry[0].num_points)
218
+ assert_equal(0, rec_.geometry[0].point_n(0).x)
219
+ assert_equal(0, rec_.geometry[0].point_n(0).y)
220
+ assert_equal(0, rec_.geometry[0].point_n(0).z) if has_z_
221
+ assert_equal(0, rec_.geometry[0].point_n(0).m) if has_m_
222
+ assert_equal(0, rec_.geometry[0].point_n(1).x)
223
+ assert_equal(100, rec_.geometry[0].point_n(1).y)
224
+ assert_equal(1, rec_.geometry[0].point_n(1).z) if has_z_
225
+ assert_equal(2, rec_.geometry[0].point_n(1).m) if has_m_
226
+ assert_equal(0, rec_.geometry[0].point_n(4).x)
227
+ assert_equal(0, rec_.geometry[0].point_n(4).y)
228
+ assert_equal(4, rec_.geometry[0].point_n(4).z) if has_z_
229
+ assert_equal(8, rec_.geometry[0].point_n(4).m) if has_m_
230
+ assert_equal(5, rec_.geometry[1].num_points)
231
+ assert_equal(10, rec_.geometry[1].point_n(0).x)
232
+ assert_equal(20, rec_.geometry[1].point_n(0).y)
233
+ assert_equal(5, rec_.geometry[1].point_n(0).z) if has_z_
234
+ assert_equal(10, rec_.geometry[1].point_n(0).m) if has_m_
235
+ assert_equal(30, rec_.geometry[1].point_n(1).x)
236
+ assert_equal(20, rec_.geometry[1].point_n(1).y)
237
+ assert_equal(6, rec_.geometry[1].point_n(1).z) if has_z_
238
+ assert_equal(12, rec_.geometry[1].point_n(1).m) if has_m_
239
+ assert_equal(30, rec_.geometry[1].point_n(2).x)
240
+ assert_equal(40, rec_.geometry[1].point_n(2).y)
241
+ assert_equal(7, rec_.geometry[1].point_n(2).z) if has_z_
242
+ assert_equal(14, rec_.geometry[1].point_n(2).m) if has_m_
243
+ assert_equal(5, rec_.geometry[2].num_points)
244
+ assert_equal(60, rec_.geometry[2].point_n(0).x)
245
+ assert_equal(20, rec_.geometry[2].point_n(0).y)
246
+ assert_equal(10, rec_.geometry[2].point_n(0).z) if has_z_
247
+ assert_equal(20, rec_.geometry[2].point_n(0).m) if has_m_
248
+ assert_equal(90, rec_.geometry[2].point_n(1).x)
249
+ assert_equal(20, rec_.geometry[2].point_n(1).y)
250
+ assert_equal(11, rec_.geometry[2].point_n(1).z) if has_z_
251
+ assert_equal(22, rec_.geometry[2].point_n(1).m) if has_m_
252
+ assert_equal(60, rec_.geometry[2].point_n(4).x)
253
+ assert_equal(20, rec_.geometry[2].point_n(4).y)
254
+ assert_equal(14, rec_.geometry[2].point_n(4).z) if has_z_
255
+ assert_equal(28, rec_.geometry[2].point_n(4).m) if has_m_
256
+ end
257
+ end
388
258
 
389
- def test_test10
390
- _test_polygon_shapefile('test10', false, false)
391
- end
259
+ def test_test7
260
+ _test_polyline_shapefile("test7", false, false)
261
+ end
392
262
 
263
+ def test_test8
264
+ _test_polyline_shapefile("test8", true, true)
265
+ end
393
266
 
394
- def test_test11
395
- _test_polygon_shapefile('test11', true, true)
396
- end
267
+ def test_test9
268
+ _test_polyline_shapefile("test9", false, true)
269
+ end
397
270
 
271
+ def _test_polygon_shapefile(filename_, has_z_, has_m_)
272
+ _open_shapefile(filename_) do |file_|
273
+ assert_equal(has_z_ ? 15 : has_m_ ? 25 : 5, file_.shape_type_code)
274
+ assert_equal(4, file_.num_records)
275
+ assert_equal(has_z_, file_.factory.property(:has_z_coordinate))
276
+ assert_equal(has_m_, file_.factory.property(:has_m_coordinate))
277
+ rec_ = file_.next
278
+ assert_equal(RGeo::Feature::MultiPolygon, rec_.geometry.geometry_type)
279
+ assert_equal(1, rec_.geometry.num_geometries)
280
+ assert_equal(0, rec_.geometry[0].num_interior_rings)
281
+ assert_equal(5, rec_.geometry[0].exterior_ring.num_points)
282
+ assert_equal(1, rec_.geometry[0].exterior_ring.point_n(0).x)
283
+ assert_equal(1, rec_.geometry[0].exterior_ring.point_n(0).y)
284
+ assert_equal(3.35, rec_.geometry[0].exterior_ring.point_n(0).z) if has_z_
285
+ assert_equal(4.45, rec_.geometry[0].exterior_ring.point_n(0).m) if has_m_
286
+ assert_equal(2, rec_.geometry[0].exterior_ring.point_n(1).x)
287
+ assert_equal(1, rec_.geometry[0].exterior_ring.point_n(1).y)
288
+ assert_equal(4.35, rec_.geometry[0].exterior_ring.point_n(1).z) if has_z_
289
+ assert_equal(5.45, rec_.geometry[0].exterior_ring.point_n(1).m) if has_m_
290
+ assert_equal(2, rec_.geometry[0].exterior_ring.point_n(2).x)
291
+ assert_equal(2, rec_.geometry[0].exterior_ring.point_n(2).y)
292
+ assert_equal(5.35, rec_.geometry[0].exterior_ring.point_n(2).z) if has_z_
293
+ assert_equal(6.45, rec_.geometry[0].exterior_ring.point_n(2).m) if has_m_
294
+ assert_equal(1, rec_.geometry[0].exterior_ring.point_n(4).x)
295
+ assert_equal(1, rec_.geometry[0].exterior_ring.point_n(4).y)
296
+ assert_equal(7.35, rec_.geometry[0].exterior_ring.point_n(4).z) if has_z_
297
+ assert_equal(8.45, rec_.geometry[0].exterior_ring.point_n(4).m) if has_m_
298
+ rec_ = file_.next
299
+ assert_equal(RGeo::Feature::MultiPolygon, rec_.geometry.geometry_type)
300
+ assert_equal(1, rec_.geometry.num_geometries)
301
+ rec_ = file_.next
302
+ assert_equal(RGeo::Feature::MultiPolygon, rec_.geometry.geometry_type)
303
+ assert_equal(1, rec_.geometry.num_geometries)
304
+ assert_equal(0, rec_.geometry[0].num_interior_rings)
305
+ assert_equal(5, rec_.geometry[0].exterior_ring.num_points)
306
+ assert_equal(1, rec_.geometry[0].exterior_ring.point_n(0).x)
307
+ assert_equal(7, rec_.geometry[0].exterior_ring.point_n(0).y)
308
+ assert_equal(23.35, rec_.geometry[0].exterior_ring.point_n(0).z) if has_z_
309
+ assert_equal(24.45, rec_.geometry[0].exterior_ring.point_n(0).m) if has_m_
310
+ assert_equal(2, rec_.geometry[0].exterior_ring.point_n(1).x)
311
+ assert_equal(7, rec_.geometry[0].exterior_ring.point_n(1).y)
312
+ assert_equal(24.35, rec_.geometry[0].exterior_ring.point_n(1).z) if has_z_
313
+ assert_equal(25.45, rec_.geometry[0].exterior_ring.point_n(1).m) if has_m_
314
+ assert_equal(2, rec_.geometry[0].exterior_ring.point_n(2).x)
315
+ assert_equal(8, rec_.geometry[0].exterior_ring.point_n(2).y)
316
+ assert_equal(25.35, rec_.geometry[0].exterior_ring.point_n(2).z) if has_z_
317
+ assert_equal(26.45, rec_.geometry[0].exterior_ring.point_n(2).m) if has_m_
318
+ assert_equal(1, rec_.geometry[0].exterior_ring.point_n(4).x)
319
+ assert_equal(7, rec_.geometry[0].exterior_ring.point_n(4).y)
320
+ assert_equal(27.35, rec_.geometry[0].exterior_ring.point_n(4).z) if has_z_
321
+ assert_equal(28.45, rec_.geometry[0].exterior_ring.point_n(4).m) if has_m_
322
+ rec_ = file_.next
323
+ assert_equal(RGeo::Feature::MultiPolygon, rec_.geometry.geometry_type)
324
+ assert_equal(1, rec_.geometry.num_geometries)
325
+ assert_equal(2, rec_.geometry[0].num_interior_rings)
326
+ assert_equal(5, rec_.geometry[0].exterior_ring.num_points)
327
+ assert_equal(0, rec_.geometry[0].exterior_ring.point_n(0).x)
328
+ assert_equal(0, rec_.geometry[0].exterior_ring.point_n(0).y)
329
+ assert_equal(0, rec_.geometry[0].exterior_ring.point_n(0).z) if has_z_
330
+ assert_equal(0, rec_.geometry[0].exterior_ring.point_n(0).m) if has_m_
331
+ assert_equal(0, rec_.geometry[0].exterior_ring.point_n(1).x)
332
+ assert_equal(100, rec_.geometry[0].exterior_ring.point_n(1).y)
333
+ assert_equal(1, rec_.geometry[0].exterior_ring.point_n(1).z) if has_z_
334
+ assert_equal(2, rec_.geometry[0].exterior_ring.point_n(1).m) if has_m_
335
+ assert_equal(0, rec_.geometry[0].exterior_ring.point_n(4).x)
336
+ assert_equal(0, rec_.geometry[0].exterior_ring.point_n(4).y)
337
+ assert_equal(4, rec_.geometry[0].exterior_ring.point_n(4).z) if has_z_
338
+ assert_equal(8, rec_.geometry[0].exterior_ring.point_n(4).m) if has_m_
339
+ assert_equal(5, rec_.geometry[0].interior_ring_n(0).num_points)
340
+ assert_equal(10, rec_.geometry[0].interior_ring_n(0).point_n(0).x)
341
+ assert_equal(20, rec_.geometry[0].interior_ring_n(0).point_n(0).y)
342
+ assert_equal(5, rec_.geometry[0].interior_ring_n(0).point_n(0).z) if has_z_
343
+ assert_equal(10, rec_.geometry[0].interior_ring_n(0).point_n(0).m) if has_m_
344
+ assert_equal(30, rec_.geometry[0].interior_ring_n(0).point_n(1).x)
345
+ assert_equal(20, rec_.geometry[0].interior_ring_n(0).point_n(1).y)
346
+ assert_equal(6, rec_.geometry[0].interior_ring_n(0).point_n(1).z) if has_z_
347
+ assert_equal(12, rec_.geometry[0].interior_ring_n(0).point_n(1).m) if has_m_
348
+ assert_equal(30, rec_.geometry[0].interior_ring_n(0).point_n(2).x)
349
+ assert_equal(40, rec_.geometry[0].interior_ring_n(0).point_n(2).y)
350
+ assert_equal(7, rec_.geometry[0].interior_ring_n(0).point_n(2).z) if has_z_
351
+ assert_equal(14, rec_.geometry[0].interior_ring_n(0).point_n(2).m) if has_m_
352
+ assert_equal(5, rec_.geometry[0].interior_ring_n(1).num_points)
353
+ assert_equal(60, rec_.geometry[0].interior_ring_n(1).point_n(0).x)
354
+ assert_equal(20, rec_.geometry[0].interior_ring_n(1).point_n(0).y)
355
+ assert_equal(10, rec_.geometry[0].interior_ring_n(1).point_n(0).z) if has_z_
356
+ assert_equal(20, rec_.geometry[0].interior_ring_n(1).point_n(0).m) if has_m_
357
+ assert_equal(90, rec_.geometry[0].interior_ring_n(1).point_n(1).x)
358
+ assert_equal(20, rec_.geometry[0].interior_ring_n(1).point_n(1).y)
359
+ assert_equal(11, rec_.geometry[0].interior_ring_n(1).point_n(1).z) if has_z_
360
+ assert_equal(22, rec_.geometry[0].interior_ring_n(1).point_n(1).m) if has_m_
361
+ assert_equal(60, rec_.geometry[0].interior_ring_n(1).point_n(4).x)
362
+ assert_equal(20, rec_.geometry[0].interior_ring_n(1).point_n(4).y)
363
+ assert_equal(14, rec_.geometry[0].interior_ring_n(1).point_n(4).z) if has_z_
364
+ assert_equal(28, rec_.geometry[0].interior_ring_n(1).point_n(4).m) if has_m_
365
+ end
366
+ end
398
367
 
399
- def test_test12
400
- _test_polygon_shapefile('test12', false, true)
401
- end
368
+ def test_test10
369
+ _test_polygon_shapefile("test10", false, false)
370
+ end
402
371
 
372
+ def test_test11
373
+ _test_polygon_shapefile("test11", true, true)
374
+ end
403
375
 
404
- def test_test13
405
- _open_shapefile('test13') do |file_|
406
- assert_equal(31, file_.shape_type_code)
407
- assert_equal(4, file_.num_records)
408
- assert_equal(true, file_.factory.property(:has_z_coordinate))
409
- # I believe shapefile's test13 incorrectly includes bounding
410
- # box data for m, since there is no actual m data. So I
411
- # disabled this test:
412
- # assert_equal(false, file_.factory.property(:has_m_coordinate))
413
- rec_ = file_.next
414
- assert_equal(::RGeo::Feature::GeometryCollection, rec_.geometry.geometry_type)
415
- assert_equal(1, rec_.geometry.num_geometries)
416
- assert_equal(0, rec_.geometry[0].num_interior_rings)
417
- assert_equal(5, rec_.geometry[0].exterior_ring.num_points)
418
- assert_equal(1, rec_.geometry[0].exterior_ring.point_n(0).x)
419
- assert_equal(1, rec_.geometry[0].exterior_ring.point_n(0).y)
420
- assert_equal(3.35, rec_.geometry[0].exterior_ring.point_n(0).z)
421
- assert_equal(2, rec_.geometry[0].exterior_ring.point_n(1).x)
422
- assert_equal(1, rec_.geometry[0].exterior_ring.point_n(1).y)
423
- assert_equal(4.35, rec_.geometry[0].exterior_ring.point_n(1).z)
424
- assert_equal(2, rec_.geometry[0].exterior_ring.point_n(2).x)
425
- assert_equal(2, rec_.geometry[0].exterior_ring.point_n(2).y)
426
- assert_equal(5.35, rec_.geometry[0].exterior_ring.point_n(2).z)
427
- assert_equal(1, rec_.geometry[0].exterior_ring.point_n(4).x)
428
- assert_equal(1, rec_.geometry[0].exterior_ring.point_n(4).y)
429
- assert_equal(7.35, rec_.geometry[0].exterior_ring.point_n(4).z)
430
- rec_ = file_.next
431
- assert_equal(::RGeo::Feature::GeometryCollection, rec_.geometry.geometry_type)
432
- assert_equal(1, rec_.geometry.num_geometries)
433
- rec_ = file_.next
434
- assert_equal(::RGeo::Feature::GeometryCollection, rec_.geometry.geometry_type)
435
- assert_equal(1, rec_.geometry.num_geometries)
436
- assert_equal(0, rec_.geometry[0].num_interior_rings)
437
- assert_equal(5, rec_.geometry[0].exterior_ring.num_points)
438
- assert_equal(1, rec_.geometry[0].exterior_ring.point_n(0).x)
439
- assert_equal(7, rec_.geometry[0].exterior_ring.point_n(0).y)
440
- assert_equal(23.35, rec_.geometry[0].exterior_ring.point_n(0).z)
441
- assert_equal(2, rec_.geometry[0].exterior_ring.point_n(1).x)
442
- assert_equal(7, rec_.geometry[0].exterior_ring.point_n(1).y)
443
- assert_equal(24.35, rec_.geometry[0].exterior_ring.point_n(1).z)
444
- assert_equal(2, rec_.geometry[0].exterior_ring.point_n(2).x)
445
- assert_equal(8, rec_.geometry[0].exterior_ring.point_n(2).y)
446
- assert_equal(25.35, rec_.geometry[0].exterior_ring.point_n(2).z)
447
- assert_equal(1, rec_.geometry[0].exterior_ring.point_n(4).x)
448
- assert_equal(7, rec_.geometry[0].exterior_ring.point_n(4).y)
449
- assert_equal(27.35, rec_.geometry[0].exterior_ring.point_n(4).z)
450
- rec_ = file_.next
451
- assert_equal(::RGeo::Feature::GeometryCollection, rec_.geometry.geometry_type)
452
- assert_equal(1, rec_.geometry.num_geometries)
453
- assert_equal(2, rec_.geometry[0].num_interior_rings)
454
- assert_equal(5, rec_.geometry[0].exterior_ring.num_points)
455
- assert_equal(0, rec_.geometry[0].exterior_ring.point_n(0).x)
456
- assert_equal(0, rec_.geometry[0].exterior_ring.point_n(0).y)
457
- assert_equal(0, rec_.geometry[0].exterior_ring.point_n(0).z)
458
- assert_equal(0, rec_.geometry[0].exterior_ring.point_n(1).x)
459
- assert_equal(100, rec_.geometry[0].exterior_ring.point_n(1).y)
460
- assert_equal(1, rec_.geometry[0].exterior_ring.point_n(1).z)
461
- assert_equal(0, rec_.geometry[0].exterior_ring.point_n(4).x)
462
- assert_equal(0, rec_.geometry[0].exterior_ring.point_n(4).y)
463
- assert_equal(4, rec_.geometry[0].exterior_ring.point_n(4).z)
464
- assert_equal(5, rec_.geometry[0].interior_ring_n(0).num_points)
465
- assert_equal(10, rec_.geometry[0].interior_ring_n(0).point_n(0).x)
466
- assert_equal(20, rec_.geometry[0].interior_ring_n(0).point_n(0).y)
467
- assert_equal(5, rec_.geometry[0].interior_ring_n(0).point_n(0).z)
468
- assert_equal(30, rec_.geometry[0].interior_ring_n(0).point_n(1).x)
469
- assert_equal(20, rec_.geometry[0].interior_ring_n(0).point_n(1).y)
470
- assert_equal(6, rec_.geometry[0].interior_ring_n(0).point_n(1).z)
471
- assert_equal(30, rec_.geometry[0].interior_ring_n(0).point_n(2).x)
472
- assert_equal(40, rec_.geometry[0].interior_ring_n(0).point_n(2).y)
473
- assert_equal(7, rec_.geometry[0].interior_ring_n(0).point_n(2).z)
474
- assert_equal(5, rec_.geometry[0].interior_ring_n(1).num_points)
475
- assert_equal(60, rec_.geometry[0].interior_ring_n(1).point_n(0).x)
476
- assert_equal(20, rec_.geometry[0].interior_ring_n(1).point_n(0).y)
477
- assert_equal(10, rec_.geometry[0].interior_ring_n(1).point_n(0).z)
478
- assert_equal(90, rec_.geometry[0].interior_ring_n(1).point_n(1).x)
479
- assert_equal(20, rec_.geometry[0].interior_ring_n(1).point_n(1).y)
480
- assert_equal(11, rec_.geometry[0].interior_ring_n(1).point_n(1).z)
481
- assert_equal(60, rec_.geometry[0].interior_ring_n(1).point_n(4).x)
482
- assert_equal(20, rec_.geometry[0].interior_ring_n(1).point_n(4).y)
483
- assert_equal(14, rec_.geometry[0].interior_ring_n(1).point_n(4).z)
484
- end
485
- end
376
+ def test_test12
377
+ _test_polygon_shapefile("test12", false, true)
378
+ end
486
379
 
380
+ def test_test13
381
+ _open_shapefile("test13") do |file_|
382
+ assert_equal(31, file_.shape_type_code)
383
+ assert_equal(4, file_.num_records)
384
+ assert_equal(true, file_.factory.property(:has_z_coordinate))
385
+ # I believe shapefile's test13 incorrectly includes bounding
386
+ # box data for m, since there is no actual m data. So I
387
+ # disabled this test:
388
+ # assert_equal(false, file_.factory.property(:has_m_coordinate))
389
+ rec_ = file_.next
390
+ assert_equal(RGeo::Feature::GeometryCollection, rec_.geometry.geometry_type)
391
+ assert_equal(1, rec_.geometry.num_geometries)
392
+ assert_equal(0, rec_.geometry[0].num_interior_rings)
393
+ assert_equal(5, rec_.geometry[0].exterior_ring.num_points)
394
+ assert_equal(1, rec_.geometry[0].exterior_ring.point_n(0).x)
395
+ assert_equal(1, rec_.geometry[0].exterior_ring.point_n(0).y)
396
+ assert_equal(3.35, rec_.geometry[0].exterior_ring.point_n(0).z)
397
+ assert_equal(2, rec_.geometry[0].exterior_ring.point_n(1).x)
398
+ assert_equal(1, rec_.geometry[0].exterior_ring.point_n(1).y)
399
+ assert_equal(4.35, rec_.geometry[0].exterior_ring.point_n(1).z)
400
+ assert_equal(2, rec_.geometry[0].exterior_ring.point_n(2).x)
401
+ assert_equal(2, rec_.geometry[0].exterior_ring.point_n(2).y)
402
+ assert_equal(5.35, rec_.geometry[0].exterior_ring.point_n(2).z)
403
+ assert_equal(1, rec_.geometry[0].exterior_ring.point_n(4).x)
404
+ assert_equal(1, rec_.geometry[0].exterior_ring.point_n(4).y)
405
+ assert_equal(7.35, rec_.geometry[0].exterior_ring.point_n(4).z)
406
+ rec_ = file_.next
407
+ assert_equal(RGeo::Feature::GeometryCollection, rec_.geometry.geometry_type)
408
+ assert_equal(1, rec_.geometry.num_geometries)
409
+ rec_ = file_.next
410
+ assert_equal(RGeo::Feature::GeometryCollection, rec_.geometry.geometry_type)
411
+ assert_equal(1, rec_.geometry.num_geometries)
412
+ assert_equal(0, rec_.geometry[0].num_interior_rings)
413
+ assert_equal(5, rec_.geometry[0].exterior_ring.num_points)
414
+ assert_equal(1, rec_.geometry[0].exterior_ring.point_n(0).x)
415
+ assert_equal(7, rec_.geometry[0].exterior_ring.point_n(0).y)
416
+ assert_equal(23.35, rec_.geometry[0].exterior_ring.point_n(0).z)
417
+ assert_equal(2, rec_.geometry[0].exterior_ring.point_n(1).x)
418
+ assert_equal(7, rec_.geometry[0].exterior_ring.point_n(1).y)
419
+ assert_equal(24.35, rec_.geometry[0].exterior_ring.point_n(1).z)
420
+ assert_equal(2, rec_.geometry[0].exterior_ring.point_n(2).x)
421
+ assert_equal(8, rec_.geometry[0].exterior_ring.point_n(2).y)
422
+ assert_equal(25.35, rec_.geometry[0].exterior_ring.point_n(2).z)
423
+ assert_equal(1, rec_.geometry[0].exterior_ring.point_n(4).x)
424
+ assert_equal(7, rec_.geometry[0].exterior_ring.point_n(4).y)
425
+ assert_equal(27.35, rec_.geometry[0].exterior_ring.point_n(4).z)
426
+ rec_ = file_.next
427
+ assert_equal(RGeo::Feature::GeometryCollection, rec_.geometry.geometry_type)
428
+ assert_equal(1, rec_.geometry.num_geometries)
429
+ assert_equal(2, rec_.geometry[0].num_interior_rings)
430
+ assert_equal(5, rec_.geometry[0].exterior_ring.num_points)
431
+ assert_equal(0, rec_.geometry[0].exterior_ring.point_n(0).x)
432
+ assert_equal(0, rec_.geometry[0].exterior_ring.point_n(0).y)
433
+ assert_equal(0, rec_.geometry[0].exterior_ring.point_n(0).z)
434
+ assert_equal(0, rec_.geometry[0].exterior_ring.point_n(1).x)
435
+ assert_equal(100, rec_.geometry[0].exterior_ring.point_n(1).y)
436
+ assert_equal(1, rec_.geometry[0].exterior_ring.point_n(1).z)
437
+ assert_equal(0, rec_.geometry[0].exterior_ring.point_n(4).x)
438
+ assert_equal(0, rec_.geometry[0].exterior_ring.point_n(4).y)
439
+ assert_equal(4, rec_.geometry[0].exterior_ring.point_n(4).z)
440
+ assert_equal(5, rec_.geometry[0].interior_ring_n(0).num_points)
441
+ assert_equal(10, rec_.geometry[0].interior_ring_n(0).point_n(0).x)
442
+ assert_equal(20, rec_.geometry[0].interior_ring_n(0).point_n(0).y)
443
+ assert_equal(5, rec_.geometry[0].interior_ring_n(0).point_n(0).z)
444
+ assert_equal(30, rec_.geometry[0].interior_ring_n(0).point_n(1).x)
445
+ assert_equal(20, rec_.geometry[0].interior_ring_n(0).point_n(1).y)
446
+ assert_equal(6, rec_.geometry[0].interior_ring_n(0).point_n(1).z)
447
+ assert_equal(30, rec_.geometry[0].interior_ring_n(0).point_n(2).x)
448
+ assert_equal(40, rec_.geometry[0].interior_ring_n(0).point_n(2).y)
449
+ assert_equal(7, rec_.geometry[0].interior_ring_n(0).point_n(2).z)
450
+ assert_equal(5, rec_.geometry[0].interior_ring_n(1).num_points)
451
+ assert_equal(60, rec_.geometry[0].interior_ring_n(1).point_n(0).x)
452
+ assert_equal(20, rec_.geometry[0].interior_ring_n(1).point_n(0).y)
453
+ assert_equal(10, rec_.geometry[0].interior_ring_n(1).point_n(0).z)
454
+ assert_equal(90, rec_.geometry[0].interior_ring_n(1).point_n(1).x)
455
+ assert_equal(20, rec_.geometry[0].interior_ring_n(1).point_n(1).y)
456
+ assert_equal(11, rec_.geometry[0].interior_ring_n(1).point_n(1).z)
457
+ assert_equal(60, rec_.geometry[0].interior_ring_n(1).point_n(4).x)
458
+ assert_equal(20, rec_.geometry[0].interior_ring_n(1).point_n(4).y)
459
+ assert_equal(14, rec_.geometry[0].interior_ring_n(1).point_n(4).z)
460
+ end
461
+ end
487
462
 
488
- end
463
+ private
489
464
 
490
- end
465
+ def _open_shapefile(name_, &block_)
466
+ RGeo::Shapefile::Reader.open(
467
+ File.expand_path("shapelib_testcases/#{name_}",
468
+ File.dirname(__FILE__)),
469
+ &block_
470
+ )
491
471
  end
492
472
  end