georuby 2.5.1 → 2.5.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8c4f8b3106e7d2ab362c2ec0adc1586e2d944855
4
- data.tar.gz: a13bbeceb85ae96f24d484a5c63815f9aa00a3f7
3
+ metadata.gz: 5dd38fae8554f897092835e5e185ec4739777764
4
+ data.tar.gz: 11a04ca5adb946903ce550758105658a7636f1dd
5
5
  SHA512:
6
- metadata.gz: 921c17e80d12c6175cebcb3dbecc98fe57aa8c87a49017bfa0839d6487b618c022b57d4418569c05a15a21c0e30bf7a2f7ddb537600900b88406f9d207ce0cac
7
- data.tar.gz: 04d7b3314b08f2a5b7f084e21c68d2083f2318f16bf3bba9e632e600f753dd581a49ab0c67ce35042352fe675810060faf96a970ec0fced2f7a83ad32b5a70db
6
+ metadata.gz: 32a42777bd969c252b1b47d852ab9d28442148b8b8f8f7275c56cd6114271310ee80a020f64190bd63d2c365587bf9e729c9db9a2d50ab9a464a0570d56a97a9
7
+ data.tar.gz: d386fd14dcacc221719441f9ff5bd896012d386fcd787a68567694a86068d77bddcd17b7b0ec4be4bafa4c08c46c28bf3a9658cfb04a143b5af2b3d3eb5cf1f5
data/README.md CHANGED
@@ -59,6 +59,7 @@ Optional, require if you need the functionality:
59
59
  require 'geo_ruby/georss' # GeoRSS
60
60
  require 'geo_ruby/geojson' # GeoJSON
61
61
 
62
+ TODO: https://github.com/AnalyticalGraphicsInc/czml-writer
62
63
 
63
64
  Use
64
65
  ===
@@ -108,7 +109,7 @@ the altitude data will not be output even if present. Envelopes output a LatLonA
108
109
  For the output, the following geometric types are supported : Point, LineString, Polygon.
109
110
 
110
111
 
111
- SHP reading et writing
112
+ SHP reading and writing
112
113
  ---
113
114
 
114
115
  Georuby has support for reading ESRI shapefiles (http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf).
@@ -221,4 +222,3 @@ can be sent to guilhem.vellut@gmail.com.
221
222
 
222
223
 
223
224
  [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/nofxx/georuby/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
224
-
@@ -4,30 +4,29 @@ require 'rubygems'
4
4
  begin
5
5
  require 'dbf'
6
6
  rescue LoadError
7
- puts "You've loaded GeoRuby SHP Support."
8
- puts "Please install the gem 'dbf' to use it. `gem install dbf`"
7
+ puts 'You\'ve loaded GeoRuby SHP Support.'
8
+ puts 'Please install the gem "dbf" to use it. `gem install dbf`'
9
9
  end
10
10
 
11
11
  module GeoRuby
12
12
  # Ruby .shp files
13
13
  module Shp4r
14
- Dbf = DBF
15
14
 
16
- module Dbf
15
+ module DBF
17
16
  class Record
18
17
  def [](v)
19
18
  attributes[v]
20
19
  end
21
20
  end
22
21
 
23
- class Field < Column::Base
24
- def initialize(name, type, length, decimal = 0, version = 1, enc = nil)
25
- super(name, type, length, decimal, version, enc)
26
- end
27
- end
22
+ # class Field < Column::Base
23
+ # def initialize(name, type, length, decimal = 0, version = 1, enc = nil)
24
+ # super(name, type, length, decimal, version, enc)
25
+ # end
26
+ # end
28
27
 
29
28
  # Main DBF File Reader
30
- class Reader < Table
29
+ class Reader < ::DBF::Table
31
30
  alias_method :fields, :columns
32
31
  def header_length
33
32
  @columns_count
@@ -35,11 +35,13 @@ module GeoRuby
35
35
  # strip the shp out of the file if present
36
36
  @file_root = file.gsub(/.shp$/i, '')
37
37
  # check existence of shp, dbf and shx files
38
- unless File.exist?(@file_root + '.shp') && File.exist?(@file_root + '.dbf') && File.exist?(@file_root + '.shx')
38
+ unless File.exist?(@file_root + '.shp') &&
39
+ File.exist?(@file_root + '.dbf') &&
40
+ File.exist?(@file_root + '.shx')
39
41
  fail MalformedShpException.new("Missing one of shp, dbf or shx for: #{@file}")
40
42
  end
41
43
 
42
- @dbf = Dbf::Reader.open(@file_root + '.dbf')
44
+ @dbf = DBF::Reader.open(@file_root + '.dbf')
43
45
  @shx = File.open(@file_root + '.shx', 'rb')
44
46
  @shp = File.open(@file_root + '.shp', 'rb')
45
47
  read_index
@@ -65,7 +67,7 @@ module GeoRuby
65
67
  end
66
68
 
67
69
  # create a new Shapefile of the specified shp type (see ShpType) and
68
- # with the attribute specified in the +fields+ array (see Dbf::Field).
70
+ # with the attribute specified in the +fields+ array (see DBF::Field).
69
71
  # If a block is given, the ShpFile object newly created is passed to it.
70
72
  def self.create(file, shp_type, fields, &proc)
71
73
  file_root = file.gsub(/.shp$/i, '')
@@ -425,30 +427,23 @@ module GeoRuby
425
427
 
426
428
  private
427
429
 
428
- def to_shp_type(geom)
429
- root = if geom.is_a? GeoRuby::SimpleFeatures::Point
430
- 'POINT'
431
- elsif geom.is_a? GeoRuby::SimpleFeatures::LineString
432
- 'POLYLINE'
433
- elsif geom.is_a? GeoRuby::SimpleFeatures::Polygon
434
- 'POLYGON'
435
- elsif geom.is_a? GeoRuby::SimpleFeatures::MultiPoint
436
- 'MULTIPOINT'
437
- elsif geom.is_a? GeoRuby::SimpleFeatures::MultiLineString
438
- 'POLYLINE'
439
- elsif geom.is_a? GeoRuby::SimpleFeatures::MultiPolygon
440
- 'POLYGON'
441
- else
442
- false
443
- end
444
- return false unless root
445
-
446
- if geom.with_z
447
- root = root + 'Z'
448
- elsif geom.with_m
449
- root = root + 'M'
430
+ def geom_type(geom)
431
+ case geom
432
+ when GeoRuby::SimpleFeatures::Point then 'POINT'
433
+ when GeoRuby::SimpleFeatures::LineString then 'POLYLINE'
434
+ when GeoRuby::SimpleFeatures::Polygon then 'POLYGON'
435
+ when GeoRuby::SimpleFeatures::MultiPoint then 'MULTIPOINT'
436
+ when GeoRuby::SimpleFeatures::MultiLineString then 'POLYLINE'
437
+ when GeoRuby::SimpleFeatures::MultiPolygon then 'POLYGON'
438
+ else false
450
439
  end
451
- eval 'ShpType::' + root
440
+ end
441
+
442
+ def to_shp_type(geom)
443
+ return false unless klass = geom_type(geom)
444
+ klass += 'Z' if geom.with_z
445
+ klass += 'M' if geom.with_m
446
+ GeoRuby::Shp4r.const_get('ShpType::' + klass)
452
447
  end
453
448
 
454
449
  def commit_add(index)
@@ -1,3 +1,3 @@
1
1
  module GeoRuby
2
- VERSION = '2.5.1'
2
+ VERSION = '2.5.2'
3
3
  end
Binary file
@@ -51,7 +51,7 @@ describe GeoRuby::Shp4r do
51
51
  it 'should parse fields' do
52
52
  field = @shpfile.fields.first
53
53
  expect(field.name).to eql('Chipoto')
54
- # GeoRuby::Shp4r::Dbf now uses the decimal to choose between int and float
54
+ # GeoRuby::Shp4r::DBF now uses the decimal to choose between int and float
55
55
  # So here is N instead of F
56
56
  expect(field.type).to eql('N')
57
57
  end
@@ -213,17 +213,24 @@ describe GeoRuby::Shp4r do
213
213
  end
214
214
 
215
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)])
216
+ shpfile = GeoRuby::Shp4r::ShpFile.create(
217
+ File.dirname(__FILE__) + '/../../data/point3.shp',
218
+ GeoRuby::Shp4r::ShpType::POINT,
219
+ [DBF::Column::Base.new('test', 'Hoyoyo', 'C', 10, 0)])
220
+
217
221
  shpfile.transaction do |tr|
218
- tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::Point.from_x_y(123, 123.4), 'Hoyoyo' => 'HJHJJ'))
222
+ tr.add(GeoRuby::Shp4r::ShpRecord.new(
223
+ GeoRuby::SimpleFeatures::Point.from_x_y(123, 123.4),
224
+ 'Hoyoyo' => 'HJHJJ'))
219
225
  end
226
+
220
227
  expect(shpfile.record_count).to eql(1)
221
228
  shpfile.close
222
229
  rm_all_shp(File.dirname(__FILE__) + '/../../data/point3')
223
230
  end
224
231
 
225
232
  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)])
233
+ 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
234
  shpfile.transaction do |tr|
228
235
  tr.add(GeoRuby::Shp4r::ShpRecord.new(GeoRuby::SimpleFeatures::MultiPoint.from_coordinates([[123, 123.4], [345, 12.2]]), 'Hoyoyo' => 'HJHJJ', 'Hello' => 5))
229
236
  end
@@ -232,6 +239,24 @@ describe GeoRuby::Shp4r do
232
239
  rm_all_shp(File.dirname(__FILE__) + '/../../data/multipoint3')
233
240
  end
234
241
 
242
+ it 'should work fine with upcase filenames' do
243
+ shpfile = GeoRuby::Shp4r::ShpFile.open(
244
+ File.dirname(__FILE__) + '/../../data/POLYGON.SHP')
245
+
246
+ shpfile.transaction do |tr|
247
+ expect(tr).to be_instance_of GeoRuby::Shp4r::ShpTransaction
248
+ tr.delete(0)
249
+ tr.add(GeoRuby::Shp4r::ShpRecord.new(
250
+ GeoRuby::SimpleFeatures::Polygon.from_coordinates(
251
+ [[[0, 0], [40, 0], [40, 40], [0, 40], [0, 0]],
252
+ [[10, 10], [10, 20], [20, 20], [10, 10]]]),
253
+ 'Hello' => 'oook'))
254
+ end
255
+
256
+ expect(shpfile.record_count).to eql(1)
257
+
258
+ shpfile.close
259
+ end
235
260
  end
236
261
 
237
262
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: georuby
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.1
4
+ version: 2.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Guilhem Vellut
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2014-12-06 00:00:00.000000000 Z
14
+ date: 2015-02-06 00:00:00.000000000 Z
15
15
  dependencies: []
16
16
  description: GeoRuby provides geometric data types from the OGC 'Simple Features'
17
17
  specification.
@@ -49,6 +49,7 @@ files:
49
49
  - lib/geo_ruby/simple_features/polygon.rb
50
50
  - lib/geo_ruby/version.rb
51
51
  - lib/georuby.rb
52
+ - spec/data/POLYGON.SHP
52
53
  - spec/data/geojson/feature.json
53
54
  - spec/data/geojson/feature_collection.json
54
55
  - spec/data/georss/atom.xml
@@ -114,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
115
  version: '0'
115
116
  requirements: []
116
117
  rubyforge_project:
117
- rubygems_version: 2.4.3
118
+ rubygems_version: 2.4.5
118
119
  signing_key:
119
120
  specification_version: 4
120
121
  summary: Ruby data holder for OGC Simple Features