georuby 2.3.0 → 2.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +16 -9
- data/Rakefile +13 -14
- data/lib/geo_ruby/ewk.rb +2 -0
- data/lib/geo_ruby/{simple_features → ewk}/ewkb_parser.rb +206 -218
- data/lib/geo_ruby/ewk/ewkt_parser.rb +321 -0
- data/lib/geo_ruby/geojson.rb +27 -32
- data/lib/geo_ruby/georss.rb +88 -66
- data/lib/geo_ruby/gpx.rb +113 -1
- data/lib/geo_ruby/kml.rb +43 -31
- data/lib/geo_ruby/shp.rb +1 -0
- data/lib/geo_ruby/shp4r/dbf.rb +7 -3
- data/lib/geo_ruby/shp4r/shp.rb +297 -284
- data/lib/geo_ruby/simple_features.rb +2 -6
- data/lib/geo_ruby/simple_features/circle.rb +15 -13
- data/lib/geo_ruby/simple_features/envelope.rb +84 -77
- data/lib/geo_ruby/simple_features/geometry.rb +89 -69
- data/lib/geo_ruby/simple_features/geometry_collection.rb +46 -43
- data/lib/geo_ruby/simple_features/geometry_factory.rb +50 -47
- data/lib/geo_ruby/simple_features/helper.rb +14 -14
- data/lib/geo_ruby/simple_features/line_string.rb +94 -97
- data/lib/geo_ruby/simple_features/linear_ring.rb +4 -9
- data/lib/geo_ruby/simple_features/multi_line_string.rb +18 -21
- data/lib/geo_ruby/simple_features/multi_point.rb +18 -20
- data/lib/geo_ruby/simple_features/multi_polygon.rb +19 -25
- data/lib/geo_ruby/simple_features/point.rb +134 -128
- data/lib/geo_ruby/simple_features/polygon.rb +60 -59
- data/lib/geo_ruby/version.rb +1 -1
- data/spec/data/geojson/feature.json +9 -0
- data/spec/data/geojson/feature_collection.json +3 -4
- data/spec/geo_ruby/{simple_features → ewk}/ewkb_parser_spec.rb +56 -57
- data/spec/geo_ruby/{simple_features → ewk}/ewkt_parser_spec.rb +62 -63
- data/spec/geo_ruby/geojson_spec.rb +34 -17
- data/spec/geo_ruby/georss_spec.rb +76 -64
- data/spec/geo_ruby/{gpx4r/gpx_spec.rb → gpx_spec.rb} +25 -25
- data/spec/geo_ruby/kml_spec.rb +40 -36
- data/spec/geo_ruby/shp4r/shp_spec.rb +51 -51
- data/spec/geo_ruby/simple_features/circle_spec.rb +2 -2
- data/spec/geo_ruby/simple_features/envelope_spec.rb +8 -8
- data/spec/geo_ruby/simple_features/geometry_collection_spec.rb +26 -26
- data/spec/geo_ruby/simple_features/geometry_factory_spec.rb +5 -5
- data/spec/geo_ruby/simple_features/geometry_spec.rb +8 -8
- data/spec/geo_ruby/simple_features/line_string_spec.rb +102 -102
- data/spec/geo_ruby/simple_features/linear_ring_spec.rb +7 -7
- data/spec/geo_ruby/simple_features/multi_line_string_spec.rb +20 -20
- data/spec/geo_ruby/simple_features/multi_point_spec.rb +16 -16
- data/spec/geo_ruby/simple_features/multi_polygon_spec.rb +19 -19
- data/spec/geo_ruby/simple_features/point_spec.rb +180 -174
- data/spec/geo_ruby/simple_features/polygon_spec.rb +55 -56
- data/spec/geo_ruby_spec.rb +4 -4
- data/spec/spec_helper.rb +19 -13
- metadata +10 -9
- data/lib/geo_ruby/gpx4r/gpx.rb +0 -118
- data/lib/geo_ruby/simple_features/ewkt_parser.rb +0 -336
@@ -3,176 +3,175 @@ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
|
3
3
|
describe GeoRuby::SimpleFeatures::EWKTParser do
|
4
4
|
|
5
5
|
before(:each) do
|
6
|
-
@factory = GeoRuby::SimpleFeatures::GeometryFactory
|
7
|
-
@ewkt_parser = GeoRuby::SimpleFeatures::EWKTParser
|
6
|
+
@factory = GeoRuby::SimpleFeatures::GeometryFactory.new
|
7
|
+
@ewkt_parser = GeoRuby::SimpleFeatures::EWKTParser.new(@factory)
|
8
8
|
end
|
9
9
|
|
10
|
-
it
|
11
|
-
ewkt=
|
10
|
+
it 'test_point' do
|
11
|
+
ewkt = 'POINT( 3.456 0.123)'
|
12
12
|
@ewkt_parser.parse(ewkt)
|
13
13
|
point = @factory.geometry
|
14
14
|
expect(point).to be_instance_of GeoRuby::SimpleFeatures::Point
|
15
|
-
expect(point).to eq(GeoRuby::SimpleFeatures::Point.from_x_y(3.456,0.123))
|
15
|
+
expect(point).to eq(GeoRuby::SimpleFeatures::Point.from_x_y(3.456, 0.123))
|
16
16
|
end
|
17
17
|
|
18
|
-
it
|
19
|
-
ewkt=
|
18
|
+
it 'test_point_with_srid' do
|
19
|
+
ewkt = 'SRID=245;POINT(0.0 2.0)'
|
20
20
|
@ewkt_parser.parse(ewkt)
|
21
21
|
point = @factory.geometry
|
22
22
|
expect(point).to be_instance_of GeoRuby::SimpleFeatures::Point
|
23
|
-
expect(point).to eq(GeoRuby::SimpleFeatures::Point.from_x_y(0,2,245))
|
23
|
+
expect(point).to eq(GeoRuby::SimpleFeatures::Point.from_x_y(0, 2, 245))
|
24
24
|
expect(point.srid).to eql(245)
|
25
|
-
expect(ewkt).to eq(point.as_ewkt(true,false))
|
25
|
+
expect(ewkt).to eq(point.as_ewkt(true, false))
|
26
26
|
end
|
27
27
|
|
28
|
-
it
|
29
|
-
ewkt=
|
28
|
+
it 'test_point3dz' do
|
29
|
+
ewkt = 'POINT(3.456 0.123 123.667)'
|
30
30
|
@ewkt_parser.parse(ewkt)
|
31
31
|
point = @factory.geometry
|
32
32
|
expect(point).to be_instance_of GeoRuby::SimpleFeatures::Point
|
33
|
-
expect(point).to eq(GeoRuby::SimpleFeatures::Point.from_x_y_z(3.456,0.123,123.667))
|
33
|
+
expect(point).to eq(GeoRuby::SimpleFeatures::Point.from_x_y_z(3.456, 0.123, 123.667))
|
34
34
|
expect(ewkt).to eq(point.as_ewkt(false))
|
35
35
|
end
|
36
36
|
|
37
|
-
it
|
38
|
-
ewkt=
|
37
|
+
it 'test_point3dm' do
|
38
|
+
ewkt = 'POINTM(3.456 0.123 123.667)'
|
39
39
|
@ewkt_parser.parse(ewkt)
|
40
40
|
point = @factory.geometry
|
41
41
|
expect(point).to be_instance_of GeoRuby::SimpleFeatures::Point
|
42
|
-
expect(point).to eq(GeoRuby::SimpleFeatures::Point.from_x_y_m(3.456,0.123,123.667))
|
42
|
+
expect(point).to eq(GeoRuby::SimpleFeatures::Point.from_x_y_m(3.456, 0.123, 123.667))
|
43
43
|
expect(ewkt).to eq(point.as_ewkt(false))
|
44
44
|
end
|
45
45
|
|
46
|
-
it
|
47
|
-
ewkt=
|
46
|
+
it 'test_point4d' do
|
47
|
+
ewkt = 'POINT(3.456 0.123 123.667 15.0)'
|
48
48
|
@ewkt_parser.parse(ewkt)
|
49
49
|
point = @factory.geometry
|
50
50
|
expect(point).to be_instance_of GeoRuby::SimpleFeatures::Point
|
51
|
-
expect(point).to eq(GeoRuby::SimpleFeatures::Point.from_x_y_z_m(3.456,0.123,123.667,15.0))
|
51
|
+
expect(point).to eq(GeoRuby::SimpleFeatures::Point.from_x_y_z_m(3.456, 0.123, 123.667, 15.0))
|
52
52
|
expect(ewkt).to eq(point.as_ewkt(false))
|
53
53
|
end
|
54
54
|
|
55
|
-
|
56
|
-
|
57
|
-
@ewkt_parser.parse("LINESTRING(3.456 0.123,123.44 123.56,54555.22 123.3)")
|
55
|
+
it 'test_linestring' do
|
56
|
+
@ewkt_parser.parse('LINESTRING(3.456 0.123,123.44 123.56,54555.22 123.3)')
|
58
57
|
line_string = @factory.geometry
|
59
58
|
expect(line_string).to be_instance_of GeoRuby::SimpleFeatures::LineString
|
60
|
-
expect(line_string).to eq(GeoRuby::SimpleFeatures::LineString.from_coordinates([[3.456,0.123],[123.44,123.56],[
|
59
|
+
expect(line_string).to eq(GeoRuby::SimpleFeatures::LineString.from_coordinates([[3.456, 0.123], [123.44, 123.56], [54_555.22, 123.3]]))
|
61
60
|
|
62
|
-
@ewkt_parser.parse(
|
61
|
+
@ewkt_parser.parse('SRID=256;LINESTRING(12.4 -45.3,45.4 41.6)')
|
63
62
|
line_string = @factory.geometry
|
64
63
|
expect(line_string).to be_instance_of GeoRuby::SimpleFeatures::LineString
|
65
|
-
expect(line_string).to eq(GeoRuby::SimpleFeatures::LineString.from_coordinates([[12.4
|
64
|
+
expect(line_string).to eq(GeoRuby::SimpleFeatures::LineString.from_coordinates([[12.4, -45.3], [45.4, 41.6]], 256))
|
66
65
|
|
67
|
-
@ewkt_parser.parse(
|
66
|
+
@ewkt_parser.parse('SRID=256;LINESTRING(12.4 -45.3 35.3,45.4 41.6 12.3)')
|
68
67
|
line_string = @factory.geometry
|
69
68
|
expect(line_string).to be_instance_of GeoRuby::SimpleFeatures::LineString
|
70
|
-
expect(line_string).to eq(GeoRuby::SimpleFeatures::LineString.from_coordinates([[12.4
|
69
|
+
expect(line_string).to eq(GeoRuby::SimpleFeatures::LineString.from_coordinates([[12.4, -45.3, 35.3], [45.4, 41.6, 12.3]], 256, true))
|
71
70
|
|
72
|
-
@ewkt_parser.parse(
|
71
|
+
@ewkt_parser.parse('SRID=256;LINESTRINGM(12.4 -45.3 35.3,45.4 41.6 12.3)')
|
73
72
|
line_string = @factory.geometry
|
74
73
|
expect(line_string).to be_instance_of GeoRuby::SimpleFeatures::LineString
|
75
|
-
expect(line_string).to eq(GeoRuby::SimpleFeatures::LineString.from_coordinates([[12.4
|
74
|
+
expect(line_string).to eq(GeoRuby::SimpleFeatures::LineString.from_coordinates([[12.4, -45.3, 35.3], [45.4, 41.6, 12.3]], 256, false, true))
|
76
75
|
|
77
|
-
@ewkt_parser.parse(
|
76
|
+
@ewkt_parser.parse('SRID=256;LINESTRING(12.4 -45.3 35.3 25.2,45.4 41.6 12.3 13.75)')
|
78
77
|
line_string = @factory.geometry
|
79
78
|
expect(line_string).to be_instance_of GeoRuby::SimpleFeatures::LineString
|
80
|
-
expect(line_string).to eq(GeoRuby::SimpleFeatures::LineString.from_coordinates([[12.4
|
79
|
+
expect(line_string).to eq(GeoRuby::SimpleFeatures::LineString.from_coordinates([[12.4, -45.3, 35.3, 25.2], [45.4, 41.6, 12.3, 13.75]], 256, true, true))
|
81
80
|
end
|
82
81
|
|
83
|
-
it
|
84
|
-
@ewkt_parser.parse(
|
82
|
+
it 'test_polygon' do
|
83
|
+
@ewkt_parser.parse('POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1,3 1,3 3,1 3,1 1))')
|
85
84
|
polygon = @factory.geometry
|
86
85
|
expect(polygon).to be_instance_of GeoRuby::SimpleFeatures::Polygon
|
87
|
-
expect(polygon).to eq(GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[0,0],[4,0],[4,4],[0,4],[0,0]],[[1,1],[3,1],[3,3],[1,3],[1,1]]],256))
|
86
|
+
expect(polygon).to eq(GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[1, 1], [3, 1], [3, 3], [1, 3], [1, 1]]], 256))
|
88
87
|
|
89
|
-
@ewkt_parser.parse(
|
88
|
+
@ewkt_parser.parse('SRID=256;POLYGON( ( 0 0 2,4 0 2,4 4 2,0 4 2,0 0 2),(1 1 2,3 1 2,3 3 2,1 3 2,1 1 2))')
|
90
89
|
polygon = @factory.geometry
|
91
90
|
expect(polygon).to be_instance_of GeoRuby::SimpleFeatures::Polygon
|
92
|
-
expect(polygon).to eq(GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[0,0,2],[4,0,2],[4,4,2],[0,4,2],[0,0,2]],[[1,1,2],[3,1,2],[3,3,2],[1,3,2],[1,1,2]]],256,true))
|
91
|
+
expect(polygon).to eq(GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[0, 0, 2], [4, 0, 2], [4, 4, 2], [0, 4, 2], [0, 0, 2]], [[1, 1, 2], [3, 1, 2], [3, 3, 2], [1, 3, 2], [1, 1, 2]]], 256, true))
|
93
92
|
|
94
|
-
@ewkt_parser.parse(
|
93
|
+
@ewkt_parser.parse('SRID=256;POLYGONM((0 0 2,4 0 2,4 4 2,0 4 2,0 0 2),(1 1 2,3 1 2,3 3 2,1 3 2,1 1 2))')
|
95
94
|
polygon = @factory.geometry
|
96
95
|
expect(polygon).to be_instance_of GeoRuby::SimpleFeatures::Polygon
|
97
|
-
expect(polygon).to eq(GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[0,0,2],[4,0,2],[4,4,2],[0,4,2],[0,0,2]],[[1,1,2],[3,1,2],[3,3,2],[1,3,2],[1,1,2]]],256,false,true))
|
96
|
+
expect(polygon).to eq(GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[0, 0, 2], [4, 0, 2], [4, 4, 2], [0, 4, 2], [0, 0, 2]], [[1, 1, 2], [3, 1, 2], [3, 3, 2], [1, 3, 2], [1, 1, 2]]], 256, false, true))
|
98
97
|
|
99
|
-
@ewkt_parser.parse(
|
98
|
+
@ewkt_parser.parse('SRID=256;POLYGON((0 0 2 -45.1,4 0 2 5,4 4 2 4.67,0 4 2 1.34,0 0 2 -45.1),(1 1 2 12.3,3 1 2 123,3 3 2 12.2,1 3 2 12,1 1 2 12.3))')
|
100
99
|
polygon = @factory.geometry
|
101
100
|
expect(polygon).to be_instance_of GeoRuby::SimpleFeatures::Polygon
|
102
|
-
expect(polygon).to eq(GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[0,0,2
|
101
|
+
expect(polygon).to eq(GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[0, 0, 2, -45.1], [4, 0, 2, 5], [4, 4, 2, 4.67], [0, 4, 2, 1.34], [0, 0, 2, -45.1]], [[1, 1, 2, 12.3], [3, 1, 2, 123], [3, 3, 2, 12.2], [1, 3, 2, 12], [1, 1, 2, 12.3]]], 256, true, true))
|
103
102
|
end
|
104
103
|
|
105
|
-
it
|
106
|
-
#Form output by the current version of PostGIS. Future versions will output the one in the specification
|
107
|
-
@ewkt_parser.parse(
|
104
|
+
it 'test_multi_point' do
|
105
|
+
# Form output by the current version of PostGIS. Future versions will output the one in the specification
|
106
|
+
@ewkt_parser.parse('SRID=444;MULTIPOINT(12.4 -123.3,-65.1 123.4,123.55555555 123)')
|
108
107
|
multi_point = @factory.geometry
|
109
108
|
expect(multi_point).to be_instance_of GeoRuby::SimpleFeatures::MultiPoint
|
110
|
-
expect(multi_point).to eq(GeoRuby::SimpleFeatures::MultiPoint.from_coordinates([[12.4
|
109
|
+
expect(multi_point).to eq(GeoRuby::SimpleFeatures::MultiPoint.from_coordinates([[12.4, -123.3], [-65.1, 123.4], [123.55555555, 123]], 444))
|
111
110
|
expect(multi_point.srid).to eql(444)
|
112
111
|
expect(multi_point[0].srid).to eql(444)
|
113
112
|
|
114
|
-
@ewkt_parser.parse(
|
113
|
+
@ewkt_parser.parse('SRID=444;MULTIPOINT(12.4 -123.3 4.5,-65.1 123.4 6.7,123.55555555 123 7.8)')
|
115
114
|
multi_point = @factory.geometry
|
116
115
|
expect(multi_point).to be_instance_of GeoRuby::SimpleFeatures::MultiPoint
|
117
|
-
expect(multi_point).to eq(GeoRuby::SimpleFeatures::MultiPoint.from_coordinates([[12.4
|
116
|
+
expect(multi_point).to eq(GeoRuby::SimpleFeatures::MultiPoint.from_coordinates([[12.4, -123.3, 4.5], [-65.1, 123.4, 6.7], [123.55555555, 123, 7.8]], 444, true))
|
118
117
|
expect(multi_point.srid).to eql(444)
|
119
118
|
expect(multi_point[0].srid).to eql(444)
|
120
119
|
|
121
|
-
#Form in the EWKT specification (from the OGC)
|
122
|
-
@ewkt_parser.parse(
|
120
|
+
# Form in the EWKT specification (from the OGC)
|
121
|
+
@ewkt_parser.parse('SRID=444;MULTIPOINT( ( 12.4 -123.3 4.5 ) , (-65.1 123.4 6.7),(123.55555555 123 7.8))')
|
123
122
|
multi_point = @factory.geometry
|
124
123
|
expect(multi_point).to be_instance_of GeoRuby::SimpleFeatures::MultiPoint
|
125
|
-
expect(multi_point).to eq(GeoRuby::SimpleFeatures::MultiPoint.from_coordinates([[12.4
|
124
|
+
expect(multi_point).to eq(GeoRuby::SimpleFeatures::MultiPoint.from_coordinates([[12.4, -123.3, 4.5], [-65.1, 123.4, 6.7], [123.55555555, 123, 7.8]], 444, true))
|
126
125
|
expect(multi_point.srid).to eql(444)
|
127
126
|
expect(multi_point[0].srid).to eql(444)
|
128
127
|
end
|
129
128
|
|
130
|
-
it
|
131
|
-
@ewkt_parser.parse(
|
129
|
+
it 'test_multi_line_string' do
|
130
|
+
@ewkt_parser.parse('SRID=256;MULTILINESTRING((1.5 45.2,-54.12312 -0.012),(1.5 45.2,-54.12312 -0.012,45.123 123.3))')
|
132
131
|
multi_line_string = @factory.geometry
|
133
132
|
expect(multi_line_string).to be_instance_of GeoRuby::SimpleFeatures::MultiLineString
|
134
|
-
expect(multi_line_string).to eq(GeoRuby::SimpleFeatures::MultiLineString.from_line_strings([GeoRuby::SimpleFeatures::LineString.from_coordinates([[1.5,45.2],[-54.12312
|
133
|
+
expect(multi_line_string).to eq(GeoRuby::SimpleFeatures::MultiLineString.from_line_strings([GeoRuby::SimpleFeatures::LineString.from_coordinates([[1.5, 45.2], [-54.12312, -0.012]], 256), GeoRuby::SimpleFeatures::LineString.from_coordinates([[1.5, 45.2], [-54.12312, -0.012], [45.123, 123.3]], 256)], 256))
|
135
134
|
expect(multi_line_string.srid).to eql(256)
|
136
135
|
expect(multi_line_string[0].srid).to eql(256)
|
137
136
|
|
138
|
-
@ewkt_parser.parse(
|
137
|
+
@ewkt_parser.parse('SRID=256;MULTILINESTRING((1.5 45.2 1.3 1.2,-54.12312 -0.012 1.2 4.5),(1.5 45.2 5.1 -4.5,-54.12312 -0.012 -6.8 3.4,45.123 123.3 4.5 -5.3))')
|
139
138
|
multi_line_string = @factory.geometry
|
140
139
|
expect(multi_line_string).to be_instance_of GeoRuby::SimpleFeatures::MultiLineString
|
141
|
-
expect(multi_line_string).to eq(GeoRuby::SimpleFeatures::MultiLineString.from_line_strings([GeoRuby::SimpleFeatures::LineString.from_coordinates([[1.5,45.2,1.3,1.2],[-54.12312
|
140
|
+
expect(multi_line_string).to eq(GeoRuby::SimpleFeatures::MultiLineString.from_line_strings([GeoRuby::SimpleFeatures::LineString.from_coordinates([[1.5, 45.2, 1.3, 1.2], [-54.12312, -0.012, 1.2, 4.5]], 256, true, true), GeoRuby::SimpleFeatures::LineString.from_coordinates([[1.5, 45.2, 5.1, -4.5], [-54.12312, -0.012, -6.8, 3.4], [45.123, 123.3, 4.5, -5.3]], 256, true, true)], 256, true, true))
|
142
141
|
expect(multi_line_string.srid).to eql(256)
|
143
142
|
expect(multi_line_string[0].srid).to eql(256)
|
144
143
|
end
|
145
144
|
|
146
|
-
it
|
147
|
-
ewkt=
|
145
|
+
it 'test_multi_polygon' do
|
146
|
+
ewkt = 'SRID=256;MULTIPOLYGON(((12.4 -45.3,45.4 41.6,4.456 1.0698,12.4 -45.3),(2.4 5.3,5.4 1.4263,14.46 1.06,2.4 5.3)),((0.0 0.0,4.0 0.0,4.0 4.0,0.0 4.0,0.0 0.0),(1.0 1.0,3.0 1.0,3.0 3.0,1.0 3.0,1.0 1.0)))'
|
148
147
|
@ewkt_parser.parse(ewkt)
|
149
148
|
multi_polygon = @factory.geometry
|
150
149
|
expect(multi_polygon).to be_instance_of GeoRuby::SimpleFeatures::MultiPolygon
|
151
|
-
expect(multi_polygon).to eq(GeoRuby::SimpleFeatures::MultiPolygon.from_polygons([GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[12.4
|
150
|
+
expect(multi_polygon).to eq(GeoRuby::SimpleFeatures::MultiPolygon.from_polygons([GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[12.4, -45.3], [45.4, 41.6], [4.456, 1.0698], [12.4, -45.3]], [[2.4, 5.3], [5.4, 1.4263], [14.46, 1.06], [2.4, 5.3]]], 256), GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[1, 1], [3, 1], [3, 3], [1, 3], [1, 1]]], 256)], 256))
|
152
151
|
expect(multi_polygon.srid).to eql(256)
|
153
152
|
expect(multi_polygon[0].srid).to eql(256)
|
154
153
|
expect(ewkt).to eq(multi_polygon.as_ewkt)
|
155
154
|
|
156
|
-
ewkt=
|
155
|
+
ewkt = 'MULTIPOLYGON(((12.4 -45.3 2,45.4 41.6 3,4.456 1.0698 4,12.4 -45.3 2),(2.4 5.3 1,5.4 1.4263 3.44,14.46 1.06 4.5,2.4 5.3 1)),((0 0 5.6,4 0 5.4,4 4 1,0 4 23,0 0 5.6),(1 1 2.3,3 1 4,3 3 5,1 3 6,1 1 2.3)))'
|
157
156
|
@ewkt_parser.parse(ewkt)
|
158
157
|
multi_polygon = @factory.geometry
|
159
158
|
expect(multi_polygon).to be_instance_of GeoRuby::SimpleFeatures::MultiPolygon
|
160
|
-
expect(multi_polygon).to eq(GeoRuby::SimpleFeatures::MultiPolygon.from_polygons([GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[12.4
|
159
|
+
expect(multi_polygon).to eq(GeoRuby::SimpleFeatures::MultiPolygon.from_polygons([GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[12.4, -45.3, 2], [45.4, 41.6, 3], [4.456, 1.0698, 4], [12.4, -45.3, 2]], [[2.4, 5.3, 1], [5.4, 1.4263, 3.44], [14.46, 1.06, 4.5], [2.4, 5.3, 1]]], 4326, true), GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[0, 0, 5.6], [4, 0, 5.4], [4, 4, 1], [0, 4, 23], [0, 0, 5.6]], [[1, 1, 2.3], [3, 1, 4], [3, 3, 5], [1, 3, 6], [1, 1, 2.3]]], 4326, true)], 4326, true))
|
161
160
|
expect(multi_polygon.srid).to eql(4326)
|
162
161
|
expect(multi_polygon[0].srid).to eql(4326)
|
163
162
|
end
|
164
163
|
|
165
|
-
it
|
166
|
-
@ewkt_parser.parse(
|
164
|
+
it 'test_geometry_collection' do
|
165
|
+
@ewkt_parser.parse('SRID=256;GEOMETRYCOLLECTION(POINT(4.67 45.4),LINESTRING(5.7 12.45,67.55 54),POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1,3 1,3 3,1 3,1 1)))')
|
167
166
|
geometry_collection = @factory.geometry
|
168
167
|
expect(geometry_collection).to be_instance_of GeoRuby::SimpleFeatures::GeometryCollection
|
169
|
-
expect(geometry_collection).to eq(GeoRuby::SimpleFeatures::GeometryCollection.from_geometries([GeoRuby::SimpleFeatures::Point.from_x_y(4.67,45.4,256),GeoRuby::SimpleFeatures::LineString.from_coordinates([[5.7,12.45],[67.55,54]],256),GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[0,0],[4,0],[4,4],[0,4],[0,0]],[[1,1],[3,1],[3,3],[1,3],[1,1]]],256)],256))
|
168
|
+
expect(geometry_collection).to eq(GeoRuby::SimpleFeatures::GeometryCollection.from_geometries([GeoRuby::SimpleFeatures::Point.from_x_y(4.67, 45.4, 256), GeoRuby::SimpleFeatures::LineString.from_coordinates([[5.7, 12.45], [67.55, 54]], 256), GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[1, 1], [3, 1], [3, 3], [1, 3], [1, 1]]], 256)], 256))
|
170
169
|
expect(geometry_collection[0].srid).to eql(256)
|
171
170
|
|
172
|
-
@ewkt_parser.parse(
|
171
|
+
@ewkt_parser.parse('SRID=256;GEOMETRYCOLLECTIONM(POINTM(4.67 45.4 45.6),LINESTRINGM(5.7 12.45 5.6,67.55 54 6.7))')
|
173
172
|
geometry_collection = @factory.geometry
|
174
173
|
expect(geometry_collection).to be_instance_of GeoRuby::SimpleFeatures::GeometryCollection
|
175
|
-
expect(geometry_collection).to eq(GeoRuby::SimpleFeatures::GeometryCollection.from_geometries([GeoRuby::SimpleFeatures::Point.from_x_y_m(4.67,45.4,45.6,256),GeoRuby::SimpleFeatures::LineString.from_coordinates([[5.7,12.45,5.6],[67.55,54,6.7]],256,false,true)],256,false,true))
|
174
|
+
expect(geometry_collection).to eq(GeoRuby::SimpleFeatures::GeometryCollection.from_geometries([GeoRuby::SimpleFeatures::Point.from_x_y_m(4.67, 45.4, 45.6, 256), GeoRuby::SimpleFeatures::LineString.from_coordinates([[5.7, 12.45, 5.6], [67.55, 54, 6.7]], 256, false, true)], 256, false, true))
|
176
175
|
expect(geometry_collection[0].srid).to eql(256)
|
177
176
|
end
|
178
177
|
|
@@ -7,25 +7,25 @@ DATA_DIR = File.dirname(__FILE__) + '/../data/geojson/'
|
|
7
7
|
#
|
8
8
|
# TODO Refactor comon test approaches into methods
|
9
9
|
# TODO Add use of contexts?
|
10
|
-
describe GeoRuby::
|
10
|
+
describe GeoRuby::GeoJSONParser do
|
11
11
|
|
12
|
-
it
|
13
|
-
point_json = %
|
12
|
+
it 'should create a specified GeoRuby::SimpleFeatures::Point' do
|
13
|
+
point_json = %( { "type": "Point", "coordinates": [100.0, 0.0] } )
|
14
14
|
point = GeoRuby::SimpleFeatures::Geometry.from_geojson(point_json)
|
15
15
|
expect(point.class).to eql(GeoRuby::SimpleFeatures::Point)
|
16
16
|
point_hash = JSON.parse(point_json)
|
17
17
|
expect(point.to_coordinates).to eql(point_hash['coordinates'])
|
18
18
|
end
|
19
19
|
|
20
|
-
it
|
21
|
-
ls_json = %
|
20
|
+
it 'should create a specified GeoRuby::SimpleFeatures::LineString' do
|
21
|
+
ls_json = %( { "type": "LineString", "coordinates": [ [100.0, 0.0], [101.0, 1.0] ]} )
|
22
22
|
line_string = GeoRuby::SimpleFeatures::Geometry.from_geojson(ls_json)
|
23
23
|
expect(line_string.class).to eql(GeoRuby::SimpleFeatures::LineString)
|
24
24
|
ls_hash = JSON.parse(ls_json)
|
25
25
|
expect(line_string.to_coordinates).to eql(ls_hash['coordinates'])
|
26
26
|
end
|
27
27
|
|
28
|
-
it
|
28
|
+
it 'should create a specified GeoRuby::SimpleFeatures::Polygon' do
|
29
29
|
poly_json = <<-EOJ
|
30
30
|
{ "type": "Polygon",
|
31
31
|
"coordinates": [
|
@@ -41,7 +41,7 @@ describe GeoRuby::GeojsonParser do
|
|
41
41
|
expect(polygon.to_coordinates).to eql(poly_hash['coordinates'])
|
42
42
|
end
|
43
43
|
|
44
|
-
it
|
44
|
+
it 'should create a specified GeoRuby::SimpleFeatures::MultiPoint' do
|
45
45
|
mp_json = <<-EOJ
|
46
46
|
{ "type": "MultiPoint",
|
47
47
|
"coordinates": [ [100.0, 0.0], [101.0, 1.0] ]
|
@@ -53,7 +53,7 @@ describe GeoRuby::GeojsonParser do
|
|
53
53
|
expect(multi_point.to_coordinates).to eql(mp_hash['coordinates'])
|
54
54
|
end
|
55
55
|
|
56
|
-
it
|
56
|
+
it 'should create a specified GeoRuby::SimpleFeatures::MultiLineString' do
|
57
57
|
mls_json = <<-EOJ
|
58
58
|
{ "type": "MultiLineString",
|
59
59
|
"coordinates": [
|
@@ -68,7 +68,7 @@ describe GeoRuby::GeojsonParser do
|
|
68
68
|
expect(multi_ls.to_coordinates).to eql(mls_hash['coordinates'])
|
69
69
|
end
|
70
70
|
|
71
|
-
it
|
71
|
+
it 'should create a specifiead GeoRuby::SimpleFeatures::MultiPolygon' do
|
72
72
|
mpoly_json = <<-EOJ
|
73
73
|
{ "type": "MultiPolygon",
|
74
74
|
"coordinates": [
|
@@ -84,7 +84,7 @@ describe GeoRuby::GeojsonParser do
|
|
84
84
|
expect(mpoly.to_coordinates).to eql(mpoly_hash['coordinates'])
|
85
85
|
end
|
86
86
|
|
87
|
-
it
|
87
|
+
it 'should create a specified GeoRuby::SimpleFeatures::GeometryCollection' do
|
88
88
|
gcol_json = <<-EOJ
|
89
89
|
{ "type": "GeometryCollection",
|
90
90
|
"geometries": [
|
@@ -100,7 +100,7 @@ describe GeoRuby::GeojsonParser do
|
|
100
100
|
gcol = GeoRuby::SimpleFeatures::Geometry.from_geojson(gcol_json)
|
101
101
|
expect(gcol.class).to eql(GeoRuby::SimpleFeatures::GeometryCollection)
|
102
102
|
gcol_hash = JSON.parse(gcol_json)
|
103
|
-
gcol.geometries.each_with_index do |g,i|
|
103
|
+
gcol.geometries.each_with_index do |g, i|
|
104
104
|
gh = gcol_hash['geometries'][i]
|
105
105
|
expect(g.class).to eql(GeoRuby::SimpleFeatures.const_get(gh['type']))
|
106
106
|
expect(g.to_coordinates).to eql(gh['coordinates'])
|
@@ -108,7 +108,7 @@ describe GeoRuby::GeojsonParser do
|
|
108
108
|
end
|
109
109
|
|
110
110
|
# Feature GeoJSON test example from wikipedia entry
|
111
|
-
it
|
111
|
+
it 'should create a specified Feature' do
|
112
112
|
feature_json = <<-EOJ
|
113
113
|
{
|
114
114
|
"type":"Feature",
|
@@ -121,7 +121,7 @@ describe GeoRuby::GeojsonParser do
|
|
121
121
|
}
|
122
122
|
EOJ
|
123
123
|
f = GeoRuby::SimpleFeatures::Geometry.from_geojson(feature_json)
|
124
|
-
expect(f.class).to eql(GeoRuby::
|
124
|
+
expect(f.class).to eql(GeoRuby::GeoJSONFeature)
|
125
125
|
feature_hash = JSON.parse(feature_json)
|
126
126
|
expect(f.id).to eql(feature_hash['id'])
|
127
127
|
expect(f.properties).to eql(feature_hash['properties'])
|
@@ -129,12 +129,12 @@ describe GeoRuby::GeojsonParser do
|
|
129
129
|
expect(f.geometry.to_coordinates).to eql(feature_hash['geometry']['coordinates'])
|
130
130
|
end
|
131
131
|
|
132
|
-
it
|
132
|
+
it 'should create a specified FeatureCollection' do
|
133
133
|
fcol_json = File.read(DATA_DIR + 'feature_collection.json')
|
134
134
|
fcol = GeoRuby::SimpleFeatures::Geometry.from_geojson(fcol_json)
|
135
|
-
expect(fcol.class).to eql(GeoRuby::
|
135
|
+
expect(fcol.class).to eql(GeoRuby::GeoJSONFeatureCollection)
|
136
136
|
fcol_hash = JSON.parse(fcol_json)
|
137
|
-
fcol.features.each_with_index do |f,i|
|
137
|
+
fcol.features.each_with_index do |f, i|
|
138
138
|
fgh = fcol_hash['features'][i]['geometry']
|
139
139
|
fg = f.geometry
|
140
140
|
expect(f.properties).to eql(fcol_hash['features'][i]['properties'])
|
@@ -143,5 +143,22 @@ describe GeoRuby::GeojsonParser do
|
|
143
143
|
end
|
144
144
|
end
|
145
145
|
|
146
|
-
|
146
|
+
it 'should export a feature as JSON' do
|
147
|
+
fcol_json = File.read(DATA_DIR + 'feature.json')
|
148
|
+
geojson = GeoRuby::SimpleFeatures::Geometry.from_geojson(fcol_json)
|
149
|
+
expect(geojson).to be_a(GeoRuby::GeoJSONFeature)
|
150
|
+
|
151
|
+
export = GeoRuby::SimpleFeatures::Geometry.from_geojson(geojson.to_json)
|
152
|
+
expect(geojson).to eq(export)
|
153
|
+
end
|
154
|
+
|
155
|
+
it 'should export a feature collection as JSON' do
|
156
|
+
fcol_json = File.read(DATA_DIR + 'feature_collection.json')
|
157
|
+
geojson = GeoRuby::SimpleFeatures::Geometry.from_geojson(fcol_json)
|
158
|
+
expect(geojson).to be_a(GeoRuby::GeoJSONFeatureCollection)
|
159
|
+
|
160
|
+
export = GeoRuby::SimpleFeatures::Geometry.from_geojson(geojson.to_json)
|
161
|
+
expect(geojson).to eq(export)
|
162
|
+
end
|
147
163
|
|
164
|
+
end
|
@@ -4,71 +4,71 @@ RSS_DATA_DIR = File.dirname(__FILE__) + '/../data/georss/'
|
|
4
4
|
|
5
5
|
describe GeoRuby::GeorssParser do
|
6
6
|
|
7
|
-
it
|
8
|
-
geo = subject.parse(File.read(RSS_DATA_DIR +
|
7
|
+
it 'should parse an rss file' do
|
8
|
+
geo = subject.parse(File.read(RSS_DATA_DIR + '/w3c.xml'))
|
9
9
|
expect(geo).to be_a GeoRuby::SimpleFeatures::Point
|
10
10
|
end
|
11
11
|
|
12
|
-
it
|
13
|
-
point = GeoRuby::SimpleFeatures::Point.from_x_y(3,4)
|
12
|
+
it 'test_point_creation' do
|
13
|
+
point = GeoRuby::SimpleFeatures::Point.from_x_y(3, 4)
|
14
14
|
|
15
|
-
expect(point.as_georss(:
|
16
|
-
expect(point.as_georss(:
|
17
|
-
expect(point.as_georss(:
|
15
|
+
expect(point.as_georss(dialect: :simple, elev: 45.7, featuretypetag: 'hoyoyo').gsub("\n", '')).to eql("<georss:point featuretypetag=\"hoyoyo\" elev=\"45.7\">4 3</georss:point>")
|
16
|
+
expect(point.as_georss(dialect: :w3cgeo).gsub("\n", '')).to eql('<geo:lat>4</geo:lat><geo:long>3</geo:long>')
|
17
|
+
expect(point.as_georss(dialect: :gml).gsub("\n", '')).to eql('<georss:where><gml:Point><gml:pos>4 3</gml:pos></gml:Point></georss:where>')
|
18
18
|
|
19
|
-
expect(point.as_kml(:
|
19
|
+
expect(point.as_kml(id: 'HOYOYO-42').gsub("\n", '')).to eql("<Point id=\"HOYOYO-42\"><coordinates>3,4</coordinates></Point>")
|
20
20
|
end
|
21
21
|
|
22
|
-
it
|
23
|
-
ls = GeoRuby::SimpleFeatures::LineString.from_points([GeoRuby::SimpleFeatures::Point.from_lon_lat_z(12.4
|
22
|
+
it 'test_line_string' do
|
23
|
+
ls = GeoRuby::SimpleFeatures::LineString.from_points([GeoRuby::SimpleFeatures::Point.from_lon_lat_z(12.4, -45.3, 56), GeoRuby::SimpleFeatures::Point.from_lon_lat_z(45.4, 41.6, 45)], 123, true)
|
24
24
|
|
25
|
-
expect(ls.as_georss.gsub("\n",
|
26
|
-
expect(ls.as_georss(:
|
27
|
-
expect(ls.as_georss(:
|
25
|
+
expect(ls.as_georss.gsub("\n", '')).to eql('<georss:line>-45.3 12.4 41.6 45.4</georss:line>')
|
26
|
+
expect(ls.as_georss(dialect: :w3cgeo).gsub("\n", '')).to eql('<geo:lat>-45.3</geo:lat><geo:long>12.4</geo:long>')
|
27
|
+
expect(ls.as_georss(dialect: :gml).gsub("\n", '')).to eql('<georss:where><gml:LineString><gml:posList>-45.3 12.4 41.6 45.4</gml:posList></gml:LineString></georss:where>')
|
28
28
|
|
29
|
-
expect(ls.as_kml(:
|
29
|
+
expect(ls.as_kml(extrude: 1, altitude_mode: 'absolute').gsub("\n", '')).to eql('<LineString><extrude>1</extrude><altitudeMode>absolute</altitudeMode><coordinates>12.4,-45.3,56 45.4,41.6,45</coordinates></LineString>')
|
30
30
|
end
|
31
31
|
|
32
|
-
it
|
33
|
-
linear_ring1 = GeoRuby::SimpleFeatures::LinearRing.from_coordinates([[12.4
|
34
|
-
linear_ring2 = GeoRuby::SimpleFeatures::LinearRing.from_coordinates([[2.4,5.3],[5.4,1.4263],[14.46,1.06],[2.4,5.3]],256)
|
35
|
-
polygon = GeoRuby::SimpleFeatures::Polygon.from_linear_rings([linear_ring1,linear_ring2],256)
|
32
|
+
it 'test_polygon' do
|
33
|
+
linear_ring1 = GeoRuby::SimpleFeatures::LinearRing.from_coordinates([[12.4, -45.3], [45.4, 41.6], [4.456, 1.0698], [12.4, -45.3]], 256)
|
34
|
+
linear_ring2 = GeoRuby::SimpleFeatures::LinearRing.from_coordinates([[2.4, 5.3], [5.4, 1.4263], [14.46, 1.06], [2.4, 5.3]], 256)
|
35
|
+
polygon = GeoRuby::SimpleFeatures::Polygon.from_linear_rings([linear_ring1, linear_ring2], 256)
|
36
36
|
|
37
|
-
expect(polygon.as_georss(:
|
38
|
-
expect(polygon.as_georss(:
|
39
|
-
expect(polygon.as_georss(:
|
37
|
+
expect(polygon.as_georss(georss_ns: 'hoyoyo').gsub("\n", '')).to eql('<hoyoyo:polygon>-45.3 12.4 41.6 45.4 1.0698 4.456 -45.3 12.4</hoyoyo:polygon>')
|
38
|
+
expect(polygon.as_georss(dialect: :w3cgeo, w3cgeo_ns: 'bouyoul').gsub("\n", '')).to eql('<bouyoul:lat>-45.3</bouyoul:lat><bouyoul:long>12.4</bouyoul:long>')
|
39
|
+
expect(polygon.as_georss(dialect: :gml).gsub("\n", '')).to eql('<georss:where><gml:Polygon><gml:exterior><gml:LinearRing><gml:posList>-45.3 12.4 41.6 45.4 1.0698 4.456 -45.3 12.4</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon></georss:where>')
|
40
40
|
|
41
|
-
expect(polygon.as_kml.gsub("\n",
|
41
|
+
expect(polygon.as_kml.gsub("\n", '')).to eql('<Polygon><outerBoundaryIs><LinearRing><coordinates>12.4,-45.3 45.4,41.6 4.456,1.0698 12.4,-45.3</coordinates></LinearRing></outerBoundaryIs><innerBoundaryIs><LinearRing><coordinates>2.4,5.3 5.4,1.4263 14.46,1.06 2.4,5.3</coordinates></LinearRing></innerBoundaryIs></Polygon>')
|
42
42
|
end
|
43
43
|
|
44
|
-
it
|
45
|
-
gc = GeoRuby::SimpleFeatures::GeometryCollection.from_geometries([GeoRuby::SimpleFeatures::Point.from_x_y(4.67,45.4,256),GeoRuby::SimpleFeatures::LineString.from_coordinates([[5.7,12.45],[67.55,54]],256)],256)
|
44
|
+
it 'test_geometry_collection' do
|
45
|
+
gc = GeoRuby::SimpleFeatures::GeometryCollection.from_geometries([GeoRuby::SimpleFeatures::Point.from_x_y(4.67, 45.4, 256), GeoRuby::SimpleFeatures::LineString.from_coordinates([[5.7, 12.45], [67.55, 54]], 256)], 256)
|
46
46
|
|
47
|
-
#only the first geometry is output
|
48
|
-
expect(gc.as_georss(:
|
49
|
-
expect(gc.as_georss(:
|
50
|
-
expect(gc.as_georss(:
|
47
|
+
# only the first geometry is output
|
48
|
+
expect(gc.as_georss(dialect: :simple, floor: 4).gsub("\n", '')).to eql("<georss:point floor=\"4\">45.4 4.67</georss:point>")
|
49
|
+
expect(gc.as_georss(dialect: :w3cgeo).gsub("\n", '')).to eql('<geo:lat>45.4</geo:lat><geo:long>4.67</geo:long>')
|
50
|
+
expect(gc.as_georss(dialect: :gml).gsub("\n", '')).to eql('<georss:where><gml:Point><gml:pos>45.4 4.67</gml:pos></gml:Point></georss:where>')
|
51
51
|
|
52
|
-
expect(gc.as_kml(:
|
52
|
+
expect(gc.as_kml(id: 'HOYOYO-42').gsub("\n", '')).to eql("<MultiGeometry id=\"HOYOYO-42\"><Point><coordinates>4.67,45.4</coordinates></Point><LineString><coordinates>5.7,12.45 67.55,54</coordinates></LineString></MultiGeometry>")
|
53
53
|
end
|
54
54
|
|
55
|
-
it
|
56
|
-
linear_ring1 = GeoRuby::SimpleFeatures::LinearRing.from_coordinates([[12
|
57
|
-
linear_ring2 = GeoRuby::SimpleFeatures::LinearRing.from_coordinates([[2,5,9],[5.4,1
|
58
|
-
polygon = GeoRuby::SimpleFeatures::Polygon.from_linear_rings([linear_ring1,linear_ring2],256,true)
|
55
|
+
it 'test_envelope' do
|
56
|
+
linear_ring1 = GeoRuby::SimpleFeatures::LinearRing.from_coordinates([[12, -45, 5], [45, 41, 6], [4, 1, 8], [12.4, -45, 3]], 256, true)
|
57
|
+
linear_ring2 = GeoRuby::SimpleFeatures::LinearRing.from_coordinates([[2, 5, 9], [5.4, 1, -5.4], [14, 1, 34], [2, 5, 3]], 256, true)
|
58
|
+
polygon = GeoRuby::SimpleFeatures::Polygon.from_linear_rings([linear_ring1, linear_ring2], 256, true)
|
59
59
|
|
60
60
|
e = polygon.envelope
|
61
61
|
|
62
|
-
expect(e.as_georss(:
|
63
|
-
#center
|
64
|
-
expect(e.as_georss(:
|
65
|
-
expect(e.as_georss(:
|
62
|
+
expect(e.as_georss(dialect: :simple).gsub("\n", '')).to eql('<georss:box>-45 4 41 45</georss:box>')
|
63
|
+
# center
|
64
|
+
expect(e.as_georss(dialect: :w3cgeo).gsub("\n", '')).to eql('<geo:lat>-2</geo:lat><geo:long>24</geo:long>')
|
65
|
+
expect(e.as_georss(dialect: :gml).gsub("\n", '')).to eql('<georss:where><gml:Envelope><gml:LowerCorner>-45 4</gml:LowerCorner><gml:UpperCorner>41 45</gml:UpperCorner></gml:Envelope></georss:where>')
|
66
66
|
|
67
|
-
expect(e.as_kml.gsub("\n",
|
67
|
+
expect(e.as_kml.gsub("\n", '')).to eql('<LatLonAltBox><north>41</north><south>-45</south><east>45</east><west>4</west><minAltitude>-5.4</minAltitude><maxAltitude>34</maxAltitude></LatLonAltBox>')
|
68
68
|
end
|
69
69
|
|
70
|
-
it
|
71
|
-
#W3CGeo
|
70
|
+
it 'test_point_georss_read' do
|
71
|
+
# W3CGeo
|
72
72
|
str = " <geo:lat >12.3</geo:lat >\n\t <geo:long> 4.56</geo:long> "
|
73
73
|
geom = GeoRuby::SimpleFeatures::Geometry.from_georss(str)
|
74
74
|
expect(geom.class).to eql(GeoRuby::SimpleFeatures::Point)
|
@@ -81,49 +81,51 @@ describe GeoRuby::GeorssParser do
|
|
81
81
|
expect(geom.lat).to eql(12.3)
|
82
82
|
expect(geom.lon).to eql(4.56)
|
83
83
|
|
84
|
-
#gml
|
84
|
+
# gml
|
85
85
|
str = " <georss:where> \t\r <gml:Point > \t <gml:pos> 4 \t 3 </gml:pos> </gml:Point> </georss:where>"
|
86
86
|
geom = GeoRuby::SimpleFeatures::Geometry.from_georss(str)
|
87
87
|
expect(geom.class).to eql(GeoRuby::SimpleFeatures::Point)
|
88
88
|
expect(geom.lat).to eql(4.0)
|
89
89
|
expect(geom.lon).to eql(3.0)
|
90
90
|
|
91
|
-
#simple
|
91
|
+
# simple
|
92
92
|
str = "<georss:point > 4 \r\t 3 \t</georss:point >"
|
93
93
|
geom = GeoRuby::SimpleFeatures::Geometry.from_georss(str)
|
94
94
|
expect(geom.class).to eql(GeoRuby::SimpleFeatures::Point)
|
95
95
|
expect(geom.lat).to eql(4.0)
|
96
96
|
expect(geom.lon).to eql(3.0)
|
97
97
|
|
98
|
-
#simple with tags
|
99
|
-
str = "<georss:point featuretypetag=\"hoyoyo\" elev=\"45.7\" \n
|
100
|
-
|
98
|
+
# simple with tags
|
99
|
+
str = "<georss:point featuretypetag=\"hoyoyo\" elev=\"45.7\" \n" \
|
100
|
+
"floor=\"2\" relationshiptag=\"puyopuyo\" radius=\"42\" > 4" \
|
101
|
+
"\n 3 \t</georss:point >"
|
102
|
+
geom, tags = GeoRuby::SimpleFeatures::Geometry.from_georss_with_tags(str)
|
101
103
|
expect(geom.class).to eql(GeoRuby::SimpleFeatures::Point)
|
102
104
|
expect(geom.lat).to eql(4.0)
|
103
105
|
expect(geom.lon).to eql(3.0)
|
104
|
-
expect(tags.featuretypetag).to eql(
|
106
|
+
expect(tags.featuretypetag).to eql('hoyoyo')
|
105
107
|
expect(tags.elev).to eql(45.7)
|
106
|
-
expect(tags.relationshiptag).to eql(
|
108
|
+
expect(tags.relationshiptag).to eql('puyopuyo')
|
107
109
|
expect(tags.floor).to eql(2)
|
108
110
|
expect(tags.radius).to eql(42.0)
|
109
111
|
end
|
110
112
|
|
111
|
-
it
|
112
|
-
ls = GeoRuby::SimpleFeatures::LineString.from_points([GeoRuby::SimpleFeatures::Point.from_lon_lat(12.4
|
113
|
+
it 'test_line_string_georss_read' do
|
114
|
+
ls = GeoRuby::SimpleFeatures::LineString.from_points([GeoRuby::SimpleFeatures::Point.from_lon_lat(12.4, -45.3), GeoRuby::SimpleFeatures::Point.from_lon_lat(45.4, 41.6)])
|
113
115
|
|
114
116
|
str = "<georss:line > -45.3 12.4 \n \r41.6\t 45.4</georss:line>"
|
115
117
|
geom = GeoRuby::SimpleFeatures::Geometry.from_georss(str)
|
116
118
|
expect(geom.class).to eql(GeoRuby::SimpleFeatures::LineString)
|
117
119
|
expect(ls).to eq(geom)
|
118
120
|
|
119
|
-
str =
|
121
|
+
str = '<georss:where><gml:LineString><gml:posList>-45.3 12.4 41.6 45.4</gml:posList></gml:LineString></georss:where>'
|
120
122
|
geom = GeoRuby::SimpleFeatures::Geometry.from_georss(str)
|
121
123
|
expect(geom.class).to eql(GeoRuby::SimpleFeatures::LineString)
|
122
124
|
expect(ls).to eq(geom)
|
123
125
|
end
|
124
126
|
|
125
|
-
it
|
126
|
-
linear_ring = GeoRuby::SimpleFeatures::LinearRing.from_coordinates([[12.4
|
127
|
+
it 'test_polygon_georss_read' do
|
128
|
+
linear_ring = GeoRuby::SimpleFeatures::LinearRing.from_coordinates([[12.4, -45.3], [45.4, 41.6], [4.456, 1.0698], [12.4, -45.3]])
|
127
129
|
polygon = GeoRuby::SimpleFeatures::Polygon.from_linear_rings([linear_ring])
|
128
130
|
|
129
131
|
str = "<hoyoyo:polygon featuretypetag=\"42\" > -45.3 12.4 41.6 \n\r 45.4 1.0698 \r 4.456 -45.3 12.4 </hoyoyo:polygon>"
|
@@ -137,8 +139,8 @@ describe GeoRuby::GeorssParser do
|
|
137
139
|
expect(polygon).to eq(geom)
|
138
140
|
end
|
139
141
|
|
140
|
-
it
|
141
|
-
e = GeoRuby::SimpleFeatures::Envelope.from_coordinates([[4.456
|
142
|
+
it 'test_envelope_georss_read' do
|
143
|
+
e = GeoRuby::SimpleFeatures::Envelope.from_coordinates([[4.456, -45.3], [45.4, 41.6]])
|
142
144
|
|
143
145
|
str = "<georss:box >-45.3 4.456 \n41.6 45.4</georss:box>"
|
144
146
|
geom = GeoRuby::SimpleFeatures::Geometry.from_georss(str)
|
@@ -151,10 +153,10 @@ describe GeoRuby::GeorssParser do
|
|
151
153
|
expect(geom).to eq(e)
|
152
154
|
end
|
153
155
|
|
154
|
-
it
|
155
|
-
g = GeoRuby::SimpleFeatures::Geometry.from_kml(
|
156
|
+
it 'reads KML' do
|
157
|
+
g = GeoRuby::SimpleFeatures::Geometry.from_kml('<Point><coordinates>45,12,25</coordinates></Point>')
|
156
158
|
expect(g).to be_a GeoRuby::SimpleFeatures::Point
|
157
|
-
expect(g).to eq(GeoRuby::SimpleFeatures::Point.from_x_y_z('45','12','25'))
|
159
|
+
expect(g).to eq(GeoRuby::SimpleFeatures::Point.from_x_y_z('45', '12', '25'))
|
158
160
|
|
159
161
|
g = GeoRuby::SimpleFeatures::Geometry.from_kml("<LineString>
|
160
162
|
<extrude>1</extrude>
|
@@ -165,7 +167,7 @@ describe GeoRuby::GeorssParser do
|
|
165
167
|
</LineString>")
|
166
168
|
expect(g).to be_a GeoRuby::SimpleFeatures::LineString
|
167
169
|
expect(g.length).to eql(2)
|
168
|
-
expect(g).to eq(GeoRuby::SimpleFeatures::LineString.from_points([GeoRuby::SimpleFeatures::Point.from_x_y_z('-122.364383','37.824664','0'),GeoRuby::SimpleFeatures::Point.from_x_y_z('-122.364152','37.824322','0')],4326,true))
|
170
|
+
expect(g).to eq(GeoRuby::SimpleFeatures::LineString.from_points([GeoRuby::SimpleFeatures::Point.from_x_y_z('-122.364383', '37.824664', '0'), GeoRuby::SimpleFeatures::Point.from_x_y_z('-122.364152', '37.824322', '0')], 4326, true))
|
169
171
|
|
170
172
|
g = GeoRuby::SimpleFeatures::Geometry.from_kml("<Polygon>
|
171
173
|
<extrude>1</extrude>
|
@@ -208,18 +210,28 @@ describe GeoRuby::GeorssParser do
|
|
208
210
|
expect(g.length).to eql(3)
|
209
211
|
end
|
210
212
|
|
211
|
-
it
|
212
|
-
point = GeoRuby::SimpleFeatures::Point.from_coordinates([1.6,2.8],123)
|
213
|
+
it 'does not raise type error if point geom data not provided' do
|
214
|
+
point = GeoRuby::SimpleFeatures::Point.from_coordinates([1.6, 2.8], 123)
|
213
215
|
expect { point.kml_representation }.not_to raise_error
|
214
216
|
end
|
215
217
|
|
216
|
-
it
|
217
|
-
polygon =
|
218
|
+
it 'does not raise type error if polygon geom data not provided' do
|
219
|
+
polygon = GeoRuby::SimpleFeatures::Polygon
|
220
|
+
.from_coordinates([[
|
221
|
+
[12.4, -45.3], [45.4, 41.6],
|
222
|
+
[4.456, 1.0698], [12.4, -45.3]
|
223
|
+
],
|
224
|
+
[
|
225
|
+
[2.4, 5.3], [5.4, 1.4263],
|
226
|
+
[14.46, 1.06], [2.4, 5.3]
|
227
|
+
]
|
228
|
+
], 256)
|
218
229
|
expect { polygon.kml_representation }.not_to raise_error
|
219
230
|
end
|
220
231
|
|
221
|
-
it
|
222
|
-
ls = GeoRuby::SimpleFeatures::LineString
|
232
|
+
it 'does not raise type error if linestring geom data not provided' do
|
233
|
+
ls = GeoRuby::SimpleFeatures::LineString
|
234
|
+
.from_coordinates([[5.7, 12.45], [67.55, 54]], 256)
|
223
235
|
expect { ls.kml_representation }.not_to raise_error
|
224
236
|
end
|
225
237
|
|