georuby 2.3.0 → 2.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +16 -9
  3. data/Rakefile +13 -14
  4. data/lib/geo_ruby/ewk.rb +2 -0
  5. data/lib/geo_ruby/{simple_features → ewk}/ewkb_parser.rb +206 -218
  6. data/lib/geo_ruby/ewk/ewkt_parser.rb +321 -0
  7. data/lib/geo_ruby/geojson.rb +27 -32
  8. data/lib/geo_ruby/georss.rb +88 -66
  9. data/lib/geo_ruby/gpx.rb +113 -1
  10. data/lib/geo_ruby/kml.rb +43 -31
  11. data/lib/geo_ruby/shp.rb +1 -0
  12. data/lib/geo_ruby/shp4r/dbf.rb +7 -3
  13. data/lib/geo_ruby/shp4r/shp.rb +297 -284
  14. data/lib/geo_ruby/simple_features.rb +2 -6
  15. data/lib/geo_ruby/simple_features/circle.rb +15 -13
  16. data/lib/geo_ruby/simple_features/envelope.rb +84 -77
  17. data/lib/geo_ruby/simple_features/geometry.rb +89 -69
  18. data/lib/geo_ruby/simple_features/geometry_collection.rb +46 -43
  19. data/lib/geo_ruby/simple_features/geometry_factory.rb +50 -47
  20. data/lib/geo_ruby/simple_features/helper.rb +14 -14
  21. data/lib/geo_ruby/simple_features/line_string.rb +94 -97
  22. data/lib/geo_ruby/simple_features/linear_ring.rb +4 -9
  23. data/lib/geo_ruby/simple_features/multi_line_string.rb +18 -21
  24. data/lib/geo_ruby/simple_features/multi_point.rb +18 -20
  25. data/lib/geo_ruby/simple_features/multi_polygon.rb +19 -25
  26. data/lib/geo_ruby/simple_features/point.rb +134 -128
  27. data/lib/geo_ruby/simple_features/polygon.rb +60 -59
  28. data/lib/geo_ruby/version.rb +1 -1
  29. data/spec/data/geojson/feature.json +9 -0
  30. data/spec/data/geojson/feature_collection.json +3 -4
  31. data/spec/geo_ruby/{simple_features → ewk}/ewkb_parser_spec.rb +56 -57
  32. data/spec/geo_ruby/{simple_features → ewk}/ewkt_parser_spec.rb +62 -63
  33. data/spec/geo_ruby/geojson_spec.rb +34 -17
  34. data/spec/geo_ruby/georss_spec.rb +76 -64
  35. data/spec/geo_ruby/{gpx4r/gpx_spec.rb → gpx_spec.rb} +25 -25
  36. data/spec/geo_ruby/kml_spec.rb +40 -36
  37. data/spec/geo_ruby/shp4r/shp_spec.rb +51 -51
  38. data/spec/geo_ruby/simple_features/circle_spec.rb +2 -2
  39. data/spec/geo_ruby/simple_features/envelope_spec.rb +8 -8
  40. data/spec/geo_ruby/simple_features/geometry_collection_spec.rb +26 -26
  41. data/spec/geo_ruby/simple_features/geometry_factory_spec.rb +5 -5
  42. data/spec/geo_ruby/simple_features/geometry_spec.rb +8 -8
  43. data/spec/geo_ruby/simple_features/line_string_spec.rb +102 -102
  44. data/spec/geo_ruby/simple_features/linear_ring_spec.rb +7 -7
  45. data/spec/geo_ruby/simple_features/multi_line_string_spec.rb +20 -20
  46. data/spec/geo_ruby/simple_features/multi_point_spec.rb +16 -16
  47. data/spec/geo_ruby/simple_features/multi_polygon_spec.rb +19 -19
  48. data/spec/geo_ruby/simple_features/point_spec.rb +180 -174
  49. data/spec/geo_ruby/simple_features/polygon_spec.rb +55 -56
  50. data/spec/geo_ruby_spec.rb +4 -4
  51. data/spec/spec_helper.rb +19 -13
  52. metadata +10 -9
  53. data/lib/geo_ruby/gpx4r/gpx.rb +0 -118
  54. data/lib/geo_ruby/simple_features/ewkt_parser.rb +0 -336
@@ -1,87 +1,87 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
1
+ require 'spec_helper'
2
2
 
3
3
  describe GeoRuby::Gpx4r do
4
4
 
5
5
  it "should add gpx extension and raise if doesn't exists" do
6
6
  expect do
7
- expect(File).to receive(:exists?).with("short.gpx").and_return(false)
7
+ expect(File).to receive(:exist?).with('short.gpx').and_return(false)
8
8
  expect(GeoRuby::Gpx4r::GpxFile.open('short')).to be_truthy
9
9
  end.to raise_error GeoRuby::Gpx4r::MalformedGpxException
10
10
  end
11
11
 
12
- describe "Waypoints" do
12
+ describe 'Waypoints' do
13
13
 
14
14
  before(:all) do
15
- @gpxfile = GeoRuby::Gpx4r::GpxFile.open(File.dirname(__FILE__) + '/../../data/gpx/short.gpx', :with_z => true, :with_m => true)
16
- @gpxfile2 = GeoRuby::Gpx4r::GpxFile.open(File.dirname(__FILE__) + '/../../data/gpx/fells_loop', :with_z => true, :with_m => true)
17
- @gpxfile3 = GeoRuby::Gpx4r::GpxFile.open(File.dirname(__FILE__) + '/../../data/gpx/tracktreks.gpx', :with_z => true)
15
+ @gpxfile = GeoRuby::Gpx4r::GpxFile.open(File.dirname(__FILE__) + '/../data/gpx/short.gpx', with_z: true, with_m: true)
16
+ @gpxfile2 = GeoRuby::Gpx4r::GpxFile.open(File.dirname(__FILE__) + '/../data/gpx/fells_loop', with_z: true, with_m: true)
17
+ @gpxfile3 = GeoRuby::Gpx4r::GpxFile.open(File.dirname(__FILE__) + '/../data/gpx/tracktreks.gpx', with_z: true)
18
18
  end
19
19
 
20
- it "should open and parse" do
20
+ it 'should open and parse' do
21
21
  expect(@gpxfile.record_count).to eql(2724)
22
22
  end
23
23
 
24
- it "should open and parse no trkpt one" do
24
+ it 'should open and parse no trkpt one' do
25
25
  expect(@gpxfile2.record_count).to eql(86)
26
26
  end
27
27
 
28
- it "should open and parse 3" do
28
+ it 'should open and parse 3' do
29
29
  expect(@gpxfile3.record_count).to eql(225)
30
30
  end
31
31
 
32
- it "should read X and Y" do
32
+ it 'should read X and Y' do
33
33
  expect(@gpxfile[0].x).to be_within(0.0001).of(9.093942)
34
34
  expect(@gpxfile[0].y).to be_within(0.0001).of(48.731813)
35
35
  end
36
36
 
37
- it "should read Z and M" do
37
+ it 'should read Z and M' do
38
38
  expect(@gpxfile[0].z).to eql(468.0)
39
- expect(@gpxfile[0].m).to eql("2008-09-07T17:36:57Z")
39
+ expect(@gpxfile[0].m).to eql('2008-09-07T17:36:57Z')
40
40
  end
41
41
 
42
- it "should read X and Y 2" do
42
+ it 'should read X and Y 2' do
43
43
  expect(@gpxfile2[0].x).to be_within(0.0001).of(-71.119277)
44
44
  expect(@gpxfile2[0].y).to be_within(0.0001).of(42.438878)
45
45
  end
46
46
 
47
- it "should read Z and M 2" do
47
+ it 'should read Z and M 2' do
48
48
  expect(@gpxfile2[0].z).to eql(44.586548)
49
- expect(@gpxfile2[0].m).to eql("2001-11-28T21:05:28Z")
49
+ expect(@gpxfile2[0].m).to eql('2001-11-28T21:05:28Z')
50
50
  end
51
51
 
52
- it "should read X and Y 3" do
52
+ it 'should read X and Y 3' do
53
53
  expect(@gpxfile3[0].x).to be_within(0.0001).of(-149.8358011)
54
54
  expect(@gpxfile3[0].y).to be_within(0.0001).of(-17.5326508)
55
55
  end
56
56
 
57
- it "should read Z and M 3" do
57
+ it 'should read Z and M 3' do
58
58
  expect(@gpxfile3[0].z).to eql(88.5787354)
59
59
  expect(@gpxfile3[0].m).to eql(0.0)
60
60
  end
61
61
 
62
- it "should return it as a linestring" do
62
+ it 'should return it as a linestring' do
63
63
  expect(@gpxfile.as_line_string).to be_instance_of GeoRuby::SimpleFeatures::LineString
64
64
  expect(@gpxfile.as_polyline).to be_instance_of GeoRuby::SimpleFeatures::LineString
65
65
  end
66
66
 
67
- it "should return it as a linestring 3" do
67
+ it 'should return it as a linestring 3' do
68
68
  expect(@gpxfile3.as_line_string).to be_instance_of GeoRuby::SimpleFeatures::LineString
69
69
  expect(@gpxfile3.as_polyline).to be_instance_of GeoRuby::SimpleFeatures::LineString
70
70
  end
71
71
 
72
- it "should return a envelope" do
72
+ it 'should return a envelope' do
73
73
  expect(@gpxfile.envelope).to be_instance_of GeoRuby::SimpleFeatures::Envelope
74
74
  expect(@gpxfile.envelope.lower_corner.x).to be_within(0.001).of(9.08128)
75
75
  expect(@gpxfile.envelope.lower_corner.y).to be_within(0.001).of(48.7169)
76
76
  end
77
77
 
78
- it "should return a envelope 3" do
78
+ it 'should return a envelope 3' do
79
79
  expect(@gpxfile3.envelope).to be_instance_of GeoRuby::SimpleFeatures::Envelope
80
80
  expect(@gpxfile3.envelope.lower_corner.x).to be_within(0.001).of(-149.8422613)
81
81
  expect(@gpxfile3.envelope.lower_corner.y).to be_within(0.001).of(-17.547636)
82
82
  end
83
83
 
84
- it "should return it as a polygon" do
84
+ it 'should return it as a polygon' do
85
85
  [@gpxfile, @gpxfile2, @gpxfile3].each do |g|
86
86
  expect(g.as_polygon).to be_instance_of GeoRuby::SimpleFeatures::Polygon
87
87
  expect(g.as_polygon[0]).to be_instance_of GeoRuby::SimpleFeatures::LinearRing
@@ -90,13 +90,13 @@ describe GeoRuby::Gpx4r do
90
90
  end
91
91
  end
92
92
 
93
- it "should close the polygon" do
93
+ it 'should close the polygon' do
94
94
  se = GeoRuby::SimpleFeatures::Point.from_x_y(-44, -23)
95
95
  sw = GeoRuby::SimpleFeatures::Point.from_x_y(-42, -22)
96
96
  nw = GeoRuby::SimpleFeatures::Point.from_x_y(-42, -25)
97
97
  ne = GeoRuby::SimpleFeatures::Point.from_x_y(-44, -21)
98
- @gpxfile.instance_variable_set(:@points, [se,sw,nw,ne])
99
- expect(@gpxfile.as_polygon).to eq(GeoRuby::SimpleFeatures::Polygon.from_points([[se,sw,nw,ne,se]]))
98
+ @gpxfile.instance_variable_set(:@points, [se, sw, nw, ne])
99
+ expect(@gpxfile.as_polygon).to eq(GeoRuby::SimpleFeatures::Polygon.from_points([[se, sw, nw, ne, se]]))
100
100
  end
101
101
  end
102
102
 
@@ -2,97 +2,101 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe GeoRuby::KmlParser do
4
4
  before(:all) do
5
- POINT = "<Point><coordinates>-82.4898187291883,34.2473206042649</coordinates></Point>"
6
- LINESTRING = "<LineString><coordinates>-122.365662,37.826988 -122.365202,37.826302 -122.364581,37.82655 -122.365038,37.827237</coordinates></LineString>"
7
- LINEARRING = "<LinearRing><coordinates>-122.365662,37.826988 -122.365202,37.826302 -122.364581,37.82655 -122.365038,37.827237 -122.365662,37.826988</coordinates></LinearRing>"
8
- POLYGON = "<Polygon><outerBoundaryIs><LinearRing><coordinates>-82.5961385808407,34.0134202383713 -82.6029437979289,34.0346366848087 -82.6603553035687,34.1083560439036 -82.7357807829899,34.1697961502507 -82.7425935601244,34.2055536194311 -82.3145921793097,34.4812209701586 -82.2758648198483,34.4347213073308 -82.2405017851073,34.4067761024174 -82.3327002190662,34.3417863447576 -82.2910826671599,34.2708004396966 -82.2497468801283,34.2261551348023 -82.2370438982521,34.1709424545969 -82.2569955519648,34.1119142196088 -82.3237086862075,34.0601294413679 -82.368425596693,34.0533120146082 -82.4455985300521,34.0562556252352 -82.4806178108032,34.0759686807282 -82.5334224196077,34.0620944842448 -82.5961385808407,34.0134202383713</coordinates></LinearRing></outerBoundaryIs></Polygon>"
9
- COMPLEX_POLYGON = "<Polygon><outerBoundaryIs><LinearRing><coordinates>-122.366278,37.818844 -122.365248,37.819267 -122.36564,37.819861 -122.366669,37.819429 -122.366278,37.818844</coordinates></LinearRing></outerBoundaryIs><innerBoundaryIs><LinearRing><coordinates>-122.366212,37.818977 -122.365424,37.819294 -122.365704,37.819731 -122.366488,37.819402 -122.366212,37.818977</coordinates></LinearRing></innerBoundaryIs></Polygon>"
10
- MULTIGEOMETRY = "<MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>-82.5961385808407,34.0134202383713 -82.6029437979289,34.0346366848087 -82.6603553035687,34.1083560439036 -82.7357807829899,34.1697961502507 -82.7425935601244,34.2055536194311 -82.3145921793097,34.4812209701586 -82.2758648198483,34.4347213073308 -82.2405017851073,34.4067761024174 -82.3327002190662,34.3417863447576 -82.2910826671599,34.2708004396966 -82.2497468801283,34.2261551348023 -82.2370438982521,34.1709424545969 -82.2569955519648,34.1119142196088 -82.3237086862075,34.0601294413679 -82.368425596693,34.0533120146082 -82.4455985300521,34.0562556252352 -82.4806178108032,34.0759686807282 -82.5334224196077,34.0620944842448 -82.5961385808407,34.0134202383713</coordinates></LinearRing></outerBoundaryIs></Polygon><Point><coordinates>-82.4898187291883,34.2473206042649</coordinates></Point></MultiGeometry>"
11
- POINT3D = "<Point><coordinates>-82.4898187291883,34.2473206042649,5</coordinates></Point>"
12
- LINESTRING3D = "<LineString><coordinates>-122.365662,37.826988,1 -122.365202,37.826302,2 -122.364581,37.82655,3 -122.365038,37.827237,4</coordinates></LineString>"
5
+ POINT = '<Point><coordinates>-82.4898187291883,34.2473206042649</coordinates></Point>'
6
+ LINESTRING = '<LineString><coordinates>-122.365662,37.826988 -122.365202,37.826302 -122.364581,37.82655 -122.365038,37.827237</coordinates></LineString>'
7
+ LINEARRING = '<LinearRing><coordinates>-122.365662,37.826988 -122.365202,37.826302 -122.364581,37.82655 -122.365038,37.827237 -122.365662,37.826988</coordinates></LinearRing>'
8
+ POLYGON = '<Polygon><outerBoundaryIs><LinearRing><coordinates>-82.5961385808407,34.0134202383713 -82.6029437979289,34.0346366848087 -82.6603553035687,34.1083560439036 -82.7357807829899,34.1697961502507 -82.7425935601244,34.2055536194311 -82.3145921793097,34.4812209701586 -82.2758648198483,34.4347213073308 -82.2405017851073,34.4067761024174 -82.3327002190662,34.3417863447576 -82.2910826671599,34.2708004396966 -82.2497468801283,34.2261551348023 -82.2370438982521,34.1709424545969 -82.2569955519648,34.1119142196088 -82.3237086862075,34.0601294413679 -82.368425596693,34.0533120146082 -82.4455985300521,34.0562556252352 -82.4806178108032,34.0759686807282 -82.5334224196077,34.0620944842448 -82.5961385808407,34.0134202383713</coordinates></LinearRing></outerBoundaryIs></Polygon>'
9
+ COMPLEX_POLYGON = '<Polygon><outerBoundaryIs><LinearRing><coordinates>-122.366278,37.818844 -122.365248,37.819267 -122.36564,37.819861 -122.366669,37.819429 -122.366278,37.818844</coordinates></LinearRing></outerBoundaryIs><innerBoundaryIs><LinearRing><coordinates>-122.366212,37.818977 -122.365424,37.819294 -122.365704,37.819731 -122.366488,37.819402 -122.366212,37.818977</coordinates></LinearRing></innerBoundaryIs></Polygon>'
10
+ MULTIGEOMETRY = '<MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>-82.5961385808407,34.0134202383713 -82.6029437979289,34.0346366848087 -82.6603553035687,34.1083560439036 -82.7357807829899,34.1697961502507 -82.7425935601244,34.2055536194311 -82.3145921793097,34.4812209701586 -82.2758648198483,34.4347213073308 -82.2405017851073,34.4067761024174 -82.3327002190662,34.3417863447576 -82.2910826671599,34.2708004396966 -82.2497468801283,34.2261551348023 -82.2370438982521,34.1709424545969 -82.2569955519648,34.1119142196088 -82.3237086862075,34.0601294413679 -82.368425596693,34.0533120146082 -82.4455985300521,34.0562556252352 -82.4806178108032,34.0759686807282 -82.5334224196077,34.0620944842448 -82.5961385808407,34.0134202383713</coordinates></LinearRing></outerBoundaryIs></Polygon><Point><coordinates>-82.4898187291883,34.2473206042649</coordinates></Point></MultiGeometry>'
11
+ POINT3D = '<Point><coordinates>-82.4898187291883,34.2473206042649,5</coordinates></Point>'
12
+ LINESTRING3D = '<LineString><coordinates>-122.365662,37.826988,1 -122.365202,37.826302,2 -122.364581,37.82655,3 -122.365038,37.827237,4</coordinates></LineString>'
13
13
  end
14
-
14
+
15
15
  before(:each) do
16
16
  @factory = GeoRuby::SimpleFeatures::GeometryFactory.new
17
17
  @kml_parser = described_class.new(@factory)
18
18
  end
19
-
20
- it "should parse a GeoRuby::SimpleFeatures::Point correctly" do
19
+
20
+ it 'should parse a GeoRuby::SimpleFeatures::Point correctly' do
21
21
  @kml_parser.parse(POINT)
22
22
  g = @factory.geometry
23
23
  expect(g).not_to eql(nil)
24
24
  expect(g).to be_an_instance_of(GeoRuby::SimpleFeatures::Point)
25
- expect(g.as_kml.gsub(/\n/,'')).to eql(POINT)
25
+ expect(g.as_kml.gsub(/\n/, '')).to eql(POINT)
26
26
  end
27
-
28
- it "should parse a GeoRuby::SimpleFeatures::LineString correctly" do
27
+
28
+ it 'should parse a GeoRuby::SimpleFeatures::LineString correctly' do
29
29
  @kml_parser.parse(LINESTRING)
30
30
  g = @factory.geometry
31
31
  expect(g).not_to eql(nil)
32
32
  expect(g).to be_an_instance_of(GeoRuby::SimpleFeatures::LineString)
33
- expect(g.as_kml.gsub(/\n/,'')).to eql(LINESTRING)
33
+ expect(g.as_kml.gsub(/\n/, '')).to eql(LINESTRING)
34
34
 
35
35
  @kml_parser.parse(LINEARRING)
36
36
  g = @factory.geometry
37
37
  expect(g).not_to eql(nil)
38
38
  expect(g).to be_an_instance_of(GeoRuby::SimpleFeatures::LinearRing)
39
- expect(g.as_kml.gsub(/\n/,'')).to eql(LINEARRING)
39
+ expect(g.as_kml.gsub(/\n/, '')).to eql(LINEARRING)
40
40
  end
41
-
42
- it "should parse a GeoRuby::SimpleFeatures::Polygon correctly" do
41
+
42
+ it 'should parse a GeoRuby::SimpleFeatures::Polygon correctly' do
43
43
  @kml_parser.parse(POLYGON)
44
44
  g = @factory.geometry
45
45
  expect(g).not_to eql(nil)
46
46
  expect(g).to be_an_instance_of(GeoRuby::SimpleFeatures::Polygon)
47
- expect(g.as_kml.gsub(/\n/,'')).to eql(POLYGON)
47
+ expect(g.as_kml.gsub(/\n/, '')).to eql(POLYGON)
48
48
 
49
49
  @kml_parser.parse(COMPLEX_POLYGON)
50
50
  g = @factory.geometry
51
51
  expect(g).not_to eql(nil)
52
52
  expect(g).to be_an_instance_of(GeoRuby::SimpleFeatures::Polygon)
53
- expect(g.as_kml.gsub(/\n/,'')).to eql(COMPLEX_POLYGON)
53
+ expect(g.as_kml.gsub(/\n/, '')).to eql(COMPLEX_POLYGON)
54
54
  end
55
-
56
- it "should parse a MultiGeometry correctly" do
55
+
56
+ it 'should parse a MultiGeometry correctly' do
57
57
  @kml_parser.parse(MULTIGEOMETRY)
58
58
  g = @factory.geometry
59
59
  expect(g).not_to eql(nil)
60
60
  expect(g.geometries.length).to eql(2)
61
61
  expect(g).to be_an_instance_of(GeoRuby::SimpleFeatures::GeometryCollection)
62
- expect(g.as_kml.gsub(/\n/,'')).to eql(MULTIGEOMETRY)
62
+ expect(g.as_kml.gsub(/\n/, '')).to eql(MULTIGEOMETRY)
63
63
  end
64
-
65
- it "should parse 3D geometries correctly" do
66
- # not testing generation because GeoRuby kml generation logic currently requires additional
67
- # XML nodes to actually output 3D coordinate information. I might modify that behavior
64
+
65
+ it 'should parse 3D geometries correctly' do
66
+ # not testing generation because GeoRuby kml generation logic currently
67
+ # requires additional XML nodes to actually output 3D coordinate
68
+ # information. I might modify that behavior.
68
69
  g = @kml_parser.parse(POINT3D)
69
70
  expect(g).not_to eql(nil)
70
71
  expect(g.with_z).to eql(true)
71
- # g.as_kml(:altitude_mode => "clampToGround").gsub(/\n/,'').should eql(POINT3D)
72
+ # g.as_kml(:altitude_mode => "clampToGround").gsub(/\n/,'')
73
+ # .should eql(POINT3D)
72
74
 
73
75
  g = @kml_parser.parse(LINESTRING3D)
74
76
  expect(g).not_to eql(nil)
75
77
  expect(g.with_z).to eql(true)
76
- # g.as_kml(:altitude_mode => "clampToGround").gsub(/\n/,'').should eql(LINESTRING3D)
78
+ # g.as_kml(:altitude_mode => "clampToGround").gsub(/\n/,'')
79
+ # .should eql(LINESTRING3D)
77
80
  end
78
81
 
79
- it "should yield a geometries with functional bounding boxes" do
80
- [LINESTRING, LINEARRING, POLYGON, COMPLEX_POLYGON, MULTIGEOMETRY, LINESTRING3D].each do |kml|
82
+ it 'should yield a geometries with functional bounding boxes' do
83
+ [LINESTRING, LINEARRING, POLYGON, COMPLEX_POLYGON,
84
+ MULTIGEOMETRY, LINESTRING3D].each do |kml|
81
85
  @kml_parser.parse(kml)
82
86
  g = @factory.geometry
83
- expect {
87
+ expect do
84
88
  g.bounding_box
85
- }.not_to raise_error
89
+ end.not_to raise_error
86
90
  end
87
91
  end
88
92
 
89
- it "should yield a geometries with functional envelopes" do
93
+ it 'should yield a geometries with functional envelopes' do
90
94
  [LINESTRING, LINEARRING, POLYGON, COMPLEX_POLYGON, MULTIGEOMETRY, LINESTRING3D].each do |kml|
91
95
  @kml_parser.parse(kml)
92
96
  g = @factory.geometry
93
- expect {
97
+ expect do
94
98
  g.envelope.center
95
- }.not_to raise_error
99
+ end.not_to raise_error
96
100
  end
97
101
  end
98
102
  end
@@ -2,119 +2,119 @@ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
2
 
3
3
  describe GeoRuby::Shp4r do
4
4
 
5
- describe "Point" do
5
+ describe 'Point' do
6
6
  before(:each) do
7
7
  @shpfile = GeoRuby::Shp4r::ShpFile.open(File.dirname(__FILE__) + '/../../data/point.shp')
8
8
  end
9
9
 
10
- it "should parse ok" do
10
+ it 'should parse ok' do
11
11
  expect(@shpfile.record_count).to eql(2)
12
12
  expect(@shpfile.fields.size).to eq(1)
13
13
  expect(@shpfile.shp_type).to eql(GeoRuby::Shp4r::ShpType::POINT)
14
14
  end
15
15
 
16
- it "should parse fields" do
16
+ it 'should parse fields' do
17
17
  field = @shpfile.fields.first
18
- expect(field.name).to eql("Hoyoyo")
19
- expect(field.type).to eql("N")
18
+ expect(field.name).to eql('Hoyoyo')
19
+ expect(field.type).to eql('N')
20
20
  end
21
21
 
22
- it "should parse record 1" do
22
+ it 'should parse record 1' do
23
23
  rec = @shpfile[0]
24
24
  expect(rec.geometry).to be_kind_of GeoRuby::SimpleFeatures::Point
25
25
  expect(rec.geometry.x).to be_within(0.00001).of(-90.08375)
26
26
  expect(rec.geometry.y).to be_within(0.00001).of(34.39996)
27
- expect(rec.data["Hoyoyo"]).to eql(6)
27
+ expect(rec.data['Hoyoyo']).to eql(6)
28
28
  end
29
29
 
30
- it "should parse record 2" do
30
+ it 'should parse record 2' do
31
31
  rec = @shpfile[1]
32
32
  expect(rec.geometry).to be_kind_of GeoRuby::SimpleFeatures::Point
33
33
  expect(rec.geometry.x).to be_within(0.00001).of(-87.82580)
34
34
  expect(rec.geometry.y).to be_within(0.00001).of(33.36416)
35
- expect(rec.data["Hoyoyo"]).to eql(9)
35
+ expect(rec.data['Hoyoyo']).to eql(9)
36
36
  end
37
37
 
38
38
  end
39
39
 
40
- describe "Polyline" do
40
+ describe 'Polyline' do
41
41
  before(:each) do
42
42
  @shpfile = GeoRuby::Shp4r::ShpFile.open(File.dirname(__FILE__) + '/../../data/polyline.shp')
43
43
  end
44
44
 
45
- it "should parse ok" do
45
+ it 'should parse ok' do
46
46
  expect(@shpfile.record_count).to eql(1)
47
47
  expect(@shpfile.fields.size).to eq(1)
48
48
  expect(@shpfile.shp_type).to eql(GeoRuby::Shp4r::ShpType::POLYLINE)
49
49
  end
50
50
 
51
- it "should parse fields" do
51
+ it 'should parse fields' do
52
52
  field = @shpfile.fields.first
53
- expect(field.name).to eql("Chipoto")
53
+ expect(field.name).to eql('Chipoto')
54
54
  # GeoRuby::Shp4r::Dbf now uses the decimal to choose between int and float
55
55
  # So here is N instead of F
56
- expect(field.type).to eql("N")
56
+ expect(field.type).to eql('N')
57
57
  end
58
58
 
59
- it "should parse record 1" do
59
+ it 'should parse record 1' do
60
60
  rec = @shpfile[0]
61
61
  expect(rec.geometry).to be_kind_of GeoRuby::SimpleFeatures::MultiLineString
62
62
  expect(rec.geometry.length).to eql(1)
63
63
  expect(rec.geometry[0].length).to eql(6)
64
- expect(rec.data["Chipoto"]).to eql(5.678)
64
+ expect(rec.data['Chipoto']).to eql(5.678)
65
65
  end
66
66
 
67
67
  end
68
68
 
69
- describe "Polygon" do
69
+ describe 'Polygon' do
70
70
  before(:each) do
71
71
  @shpfile = GeoRuby::Shp4r::ShpFile.open(File.dirname(__FILE__) + '/../../data/polygon.shp')
72
72
  end
73
73
 
74
- it "should parse ok" do
74
+ it 'should parse ok' do
75
75
  expect(@shpfile.record_count).to eql(1)
76
76
  expect(@shpfile.fields.size).to eq(1)
77
77
  expect(@shpfile.shp_type).to eql(GeoRuby::Shp4r::ShpType::POLYGON)
78
78
  end
79
79
 
80
- it "should parse fields" do
80
+ it 'should parse fields' do
81
81
  field = @shpfile.fields.first
82
- expect(field.name).to eql("Hello")
83
- expect(field.type).to eql("C")
82
+ expect(field.name).to eql('Hello')
83
+ expect(field.type).to eql('C')
84
84
  end
85
85
 
86
- it "should parse record 1" do
86
+ it 'should parse record 1' do
87
87
  rec = @shpfile[0]
88
88
  expect(rec.geometry).to be_kind_of GeoRuby::SimpleFeatures::MultiPolygon
89
89
  expect(rec.geometry.length).to eql(1)
90
90
  expect(rec.geometry[0].length).to eql(1)
91
91
  expect(rec.geometry[0][0].length).to eql(7)
92
- expect(rec.data["Hello"]).to eql("Bouyoul!")
92
+ expect(rec.data['Hello']).to eql('Bouyoul!')
93
93
  end
94
94
  end
95
95
 
96
- describe "Write" do
97
- def cp_all_shp(file1,file2)
98
- FileUtils.copy(file1 + ".shp",file2 + ".shp")
99
- FileUtils.copy(file1 + ".shx",file2 + ".shx")
100
- FileUtils.copy(file1 + ".dbf",file2 + ".dbf")
96
+ describe 'Write' do
97
+ def cp_all_shp(file1, file2)
98
+ FileUtils.copy(file1 + '.shp', file2 + '.shp')
99
+ FileUtils.copy(file1 + '.shx', file2 + '.shx')
100
+ FileUtils.copy(file1 + '.dbf', file2 + '.dbf')
101
101
  end
102
102
 
103
103
  def rm_all_shp(file)
104
- FileUtils.rm(file + ".shp")
105
- FileUtils.rm(file + ".shx")
106
- FileUtils.rm(file + ".dbf")
104
+ FileUtils.rm(file + '.shp')
105
+ FileUtils.rm(file + '.shx')
106
+ FileUtils.rm(file + '.dbf')
107
107
  end
108
108
 
109
- it "test_point" do
109
+ it 'test_point' do
110
110
  cp_all_shp(File.dirname(__FILE__) + '/../../data/point',
111
111
  File.dirname(__FILE__) + '/../../data/point2')
112
112
  shpfile = GeoRuby::Shp4r::ShpFile.open(File.dirname(__FILE__) + '/../../data/point2.shp')
113
113
 
114
114
  shpfile.transaction do |tr|
115
115
  expect(tr).to be_instance_of GeoRuby::Shp4r::ShpTransaction
116
- tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::Point.from_x_y(123.4,123.4),'Hoyoyo' => 5))
117
- tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::Point.from_x_y(-16.67,16.41),'Hoyoyo' => -7))
116
+ tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::Point.from_x_y(123.4, 123.4), 'Hoyoyo' => 5))
117
+ tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::Point.from_x_y(-16.67, 16.41), 'Hoyoyo' => -7))
118
118
  tr.delete(1)
119
119
  end
120
120
 
@@ -124,7 +124,7 @@ describe GeoRuby::Shp4r do
124
124
  rm_all_shp(File.dirname(__FILE__) + '/../../data/point2')
125
125
  end
126
126
 
127
- it "test_linestring" do
127
+ it 'test_linestring' do
128
128
  cp_all_shp(File.dirname(__FILE__) + '/../../data/polyline',
129
129
  File.dirname(__FILE__) + '/../../data/polyline2')
130
130
 
@@ -132,8 +132,8 @@ describe GeoRuby::Shp4r do
132
132
 
133
133
  shpfile.transaction do |tr|
134
134
  expect(tr).to be_instance_of GeoRuby::Shp4r::ShpTransaction
135
- tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::LineString.from_coordinates([[123.4,123.4],[45.6,12.3]]),'Chipoto' => 5.6778))
136
- tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::LineString.from_coordinates([[23.4,13.4],[45.6,12.3],[12,-67]]),'Chipoto' => -7.1))
135
+ tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::LineString.from_coordinates([[123.4, 123.4], [45.6, 12.3]]), 'Chipoto' => 5.6778))
136
+ tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::LineString.from_coordinates([[23.4, 13.4], [45.6, 12.3], [12, -67]]), 'Chipoto' => -7.1))
137
137
  tr.delete(0)
138
138
  end
139
139
 
@@ -142,7 +142,7 @@ describe GeoRuby::Shp4r do
142
142
  rm_all_shp(File.dirname(__FILE__) + '/../../data/polyline2')
143
143
  end
144
144
 
145
- it "test_polygon" do
145
+ it 'test_polygon' do
146
146
  cp_all_shp(File.dirname(__FILE__) + '/../../data/polygon',
147
147
  File.dirname(__FILE__) + '/../../data/polygon2')
148
148
  shpfile = GeoRuby::Shp4r::ShpFile.open(File.dirname(__FILE__) + '/../../data/polygon2.shp')
@@ -150,7 +150,7 @@ describe GeoRuby::Shp4r do
150
150
  shpfile.transaction do |tr|
151
151
  expect(tr).to be_instance_of GeoRuby::Shp4r::ShpTransaction
152
152
  tr.delete(0)
153
- tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[0,0],[40,0],[40,40],[0,40],[0,0]],[[10,10],[10,20],[20,20],[10,10]]]),'Hello' => "oook"))
153
+ tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[0, 0], [40, 0], [40, 40], [0, 40], [0, 0]], [[10, 10], [10, 20], [20, 20], [10, 10]]]), 'Hello' => 'oook'))
154
154
  end
155
155
 
156
156
  expect(shpfile.record_count).to eql(1)
@@ -159,14 +159,14 @@ describe GeoRuby::Shp4r do
159
159
  rm_all_shp(File.dirname(__FILE__) + '/../../data/polygon2')
160
160
  end
161
161
 
162
- it "test_multipoint" do
162
+ it 'test_multipoint' do
163
163
  cp_all_shp(File.dirname(__FILE__) + '/../../data/multipoint',
164
164
  File.dirname(__FILE__) + '/../../data/multipoint2')
165
165
  shpfile = GeoRuby::Shp4r::ShpFile.open(File.dirname(__FILE__) + '/../../data/multipoint2.shp')
166
166
 
167
167
  shpfile.transaction do |tr|
168
168
  expect(tr).to be_instance_of GeoRuby::Shp4r::ShpTransaction
169
- tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::MultiPoint.from_coordinates([[45.6,-45.1],[12.4,98.2],[51.2,-0.12],[156.12345,56.109]]),'Hello' => 5,"Hoyoyo" => "AEZAE"))
169
+ tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::MultiPoint.from_coordinates([[45.6, -45.1], [12.4, 98.2], [51.2, -0.12], [156.12345, 56.109]]), 'Hello' => 5, 'Hoyoyo' => 'AEZAE'))
170
170
  end
171
171
 
172
172
  expect(shpfile.record_count).to eql(2)
@@ -175,7 +175,7 @@ describe GeoRuby::Shp4r do
175
175
  rm_all_shp(File.dirname(__FILE__) + '/../../data/multipoint2')
176
176
  end
177
177
 
178
- it "test_multi_polygon" do
178
+ it 'test_multi_polygon' do
179
179
  cp_all_shp(File.dirname(__FILE__) + '/../../data/polygon',
180
180
  File.dirname(__FILE__) + '/../../data/polygon4')
181
181
 
@@ -183,7 +183,7 @@ describe GeoRuby::Shp4r do
183
183
 
184
184
  shpfile.transaction do |tr|
185
185
  expect(tr).to be_instance_of GeoRuby::Shp4r::ShpTransaction
186
- tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::MultiPolygon.from_polygons([GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[0,0],[40,0],[40,40],[0,40],[0,0]],[[10,10],[10,20],[20,20],[10,10]]])]),'Hello' => "oook"))
186
+ tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::MultiPolygon.from_polygons([GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[0, 0], [40, 0], [40, 40], [0, 40], [0, 0]], [[10, 10], [10, 20], [20, 20], [10, 10]]])]), 'Hello' => 'oook'))
187
187
  end
188
188
 
189
189
  expect(shpfile.record_count).to eql(2)
@@ -193,7 +193,7 @@ describe GeoRuby::Shp4r do
193
193
  rm_all_shp(File.dirname(__FILE__) + '/../../data/polygon4')
194
194
  end
195
195
 
196
- it "test_rollback" do
196
+ it 'test_rollback' do
197
197
  cp_all_shp(File.dirname(__FILE__) + '/../../data/polygon',
198
198
  File.dirname(__FILE__) + '/../../data/polygon5')
199
199
 
@@ -201,7 +201,7 @@ describe GeoRuby::Shp4r do
201
201
 
202
202
  shpfile.transaction do |tr|
203
203
  expect(tr).to be_instance_of GeoRuby::Shp4r::ShpTransaction
204
- tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::MultiPolygon.from_polygons([GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[0,0],[40,0],[40,40],[0,40],[0,0]],[[10,10],[10,20],[20,20],[10,10]]])]),'Hello' => "oook"))
204
+ tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::MultiPolygon.from_polygons([GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[0, 0], [40, 0], [40, 40], [0, 40], [0, 0]], [[10, 10], [10, 20], [20, 20], [10, 10]]])]), 'Hello' => 'oook'))
205
205
  tr.rollback
206
206
  end
207
207
  expect(shpfile.record_count).to eql(1)
@@ -212,20 +212,20 @@ describe GeoRuby::Shp4r do
212
212
 
213
213
  end
214
214
 
215
- it "test_creation" do
216
- shpfile = GeoRuby::Shp4r::ShpFile.create(File.dirname(__FILE__) + '/../../data/point3.shp',GeoRuby::Shp4r::ShpType::POINT,[GeoRuby::Shp4r::Dbf::Field.new("Hoyoyo","C",10,0)])
215
+ it 'test_creation' do
216
+ shpfile = GeoRuby::Shp4r::ShpFile.create(File.dirname(__FILE__) + '/../../data/point3.shp', GeoRuby::Shp4r::ShpType::POINT, [GeoRuby::Shp4r::Dbf::Field.new('Hoyoyo', 'C', 10, 0)])
217
217
  shpfile.transaction do |tr|
218
- tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::Point.from_x_y(123,123.4),'Hoyoyo' => "HJHJJ"))
218
+ tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::Point.from_x_y(123, 123.4), 'Hoyoyo' => 'HJHJJ'))
219
219
  end
220
220
  expect(shpfile.record_count).to eql(1)
221
221
  shpfile.close
222
222
  rm_all_shp(File.dirname(__FILE__) + '/../../data/point3')
223
223
  end
224
224
 
225
- it "test_creation_multipoint" do
226
- shpfile = GeoRuby::Shp4r::ShpFile.create(File.dirname(__FILE__) + '/../../data/multipoint3.shp',GeoRuby::Shp4r::ShpType::MULTIPOINT,[GeoRuby::Shp4r::Dbf::Field.new("Hoyoyo","C",10),GeoRuby::Shp4r::Dbf::Field.new("Hello","N",10)])
225
+ it 'test_creation_multipoint' do
226
+ shpfile = GeoRuby::Shp4r::ShpFile.create(File.dirname(__FILE__) + '/../../data/multipoint3.shp', GeoRuby::Shp4r::ShpType::MULTIPOINT, [GeoRuby::Shp4r::Dbf::Field.new('Hoyoyo', 'C', 10), GeoRuby::Shp4r::Dbf::Field.new('Hello', 'N', 10)])
227
227
  shpfile.transaction do |tr|
228
- tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::MultiPoint.from_coordinates([[123,123.4],[345,12.2]]),'Hoyoyo' => "HJHJJ","Hello" => 5))
228
+ tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::MultiPoint.from_coordinates([[123, 123.4], [345, 12.2]]), 'Hoyoyo' => 'HJHJJ', 'Hello' => 5))
229
229
  end
230
230
  expect(shpfile.record_count).to eql(1)
231
231
  shpfile.close