charta 0.2.0 → 0.2.1

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
- SHA1:
3
- metadata.gz: 94a236f9258dcbbbaa9a215a5af25e1ddeb904bb
4
- data.tar.gz: 8251595d5fc8c7a70881108b37b43507b694f034
2
+ SHA256:
3
+ metadata.gz: 6e1a6955069e9535ef7d8b3b7e72a38902f161a5c040a6ba3e86ebf010ddcf7c
4
+ data.tar.gz: c413fb93fdb9ccf1328b58d7a721a1eca54c219e5ca54bc61066df2a4ccce1ac
5
5
  SHA512:
6
- metadata.gz: 2440f9a26b7cd4d3d14c5f8b3840f3be1ba51ac7e11269c4ef2d5e615956d87f652b210b70861d803f11a1748533e67166c33732c946eac46f31e57470bf1496
7
- data.tar.gz: a426cc2d10067261ad61666d63373cb7e28be1ac6c5b4887926b44d1ae7efe8e3d089e4092d19e791d6b5dc9df9ee6bbd96faa687568ae8253c3e367b7bfc6a2
6
+ metadata.gz: f4457d1afc0c7289e3748a07a95b9422e797edee230447bb90bfa6423614dc9133f330aab1acb8be0a485b8de4172673933c3d7c493602a29422053d45435f12
7
+ data.tar.gz: 33942453f7c1863b13b2011a05923ffcdeae0098899ea50bd8ee7b012be3a135564d95b030bc781aedaca57237fa4f8ffd5e1701010e73f4169dc8ec3699ed2e
@@ -0,0 +1,14 @@
1
+ stages:
2
+ - test
3
+
4
+ test:
5
+ image: registry.gitlab.com/ekylibre/docker-base-images/ruby2.3:master
6
+ before_script:
7
+ - gem install bundler
8
+ - bundle install --path vendor/bundle
9
+ cache:
10
+ key: bundle
11
+ paths:
12
+ - vendor/bundle
13
+ script:
14
+ - bundle exec rake test
@@ -18,12 +18,12 @@ Gem::Specification.new do |spec|
18
18
  spec.require_paths = ['lib']
19
19
 
20
20
  spec.add_dependency 'nokogiri', '>= 1.7.0'
21
- spec.add_dependency 'rgeo', '~> 1.0.0'
21
+ spec.add_dependency 'rgeo', '~> 1.0'
22
22
  spec.add_dependency 'json', '>= 1.8.0'
23
- spec.add_dependency 'rgeo-geojson', '~> 1.0.0'
24
- spec.add_dependency 'rgeo-proj4', '~> 1.0.0'
25
- spec.add_dependency 'activesupport', '>= 5.1'
26
- spec.add_development_dependency 'bundler', '~> 1.14'
23
+ spec.add_dependency 'rgeo-geojson', '~> 1.0'
24
+ spec.add_dependency 'rgeo-proj4', '~> 1.0'
25
+ spec.add_dependency 'activesupport', '~> 5.0'
26
+ spec.add_development_dependency 'bundler', '~> 2.0'
27
27
  spec.add_development_dependency 'rake', '~> 10.0'
28
28
  spec.add_development_dependency 'minitest', '~> 5.0'
29
29
  spec.add_development_dependency 'byebug'
@@ -6,8 +6,6 @@ require 'active_support/core_ext/module/delegation'
6
6
  module Charta
7
7
  # Represents a Geometry with SRID
8
8
  class Geometry
9
- delegate_missing_to :to_rgeo
10
-
11
9
  def initialize(feature, properties = {})
12
10
  self.feature = feature
13
11
  @properties = properties
@@ -36,16 +34,12 @@ module Charta
36
34
  feature.srid.to_i
37
35
  end
38
36
 
39
- # Returns the underlaying object managed by Charta: the RGeo feature
40
- def to_rgeo
41
- feature
42
- end
43
-
44
37
  # Returns the Well-Known Text (WKT) representation of the geometry/geography
45
38
  # without SRID metadata
46
39
  def to_text
47
40
  feature.as_text.match(/\ASRID=.*;(.*)/)[1]
48
41
  end
42
+
49
43
  alias as_text to_text
50
44
  alias to_wkt to_text
51
45
 
@@ -53,6 +47,7 @@ module Charta
53
47
  def to_ewkt
54
48
  Charta.generate_ewkt(feature).to_s
55
49
  end
50
+
56
51
  alias to_s to_ewkt
57
52
 
58
53
  def ewkt
@@ -65,6 +60,7 @@ module Charta
65
60
  generator = RGeo::WKRep::WKBGenerator.new(tag_format: :ewkbt, emit_ewkbt_srid: true)
66
61
  generator.generate(feature)
67
62
  end
63
+
68
64
  alias to_ewkb to_binary
69
65
 
70
66
  # Pas bien compris le fonctionnement
@@ -88,6 +84,7 @@ module Charta
88
84
  def to_geojson
89
85
  to_json_object.to_json
90
86
  end
87
+
91
88
  alias to_json to_geojson
92
89
 
93
90
  # Returns object in JSON (Hash)
@@ -126,6 +123,7 @@ module Charta
126
123
  def empty?
127
124
  feature.is_empty?
128
125
  end
126
+
129
127
  alias blank? empty?
130
128
 
131
129
  # Computes the geometric center of a geometry, or equivalently, the center
@@ -199,6 +197,7 @@ module Charta
199
197
  other_geometry = Charta.new_geometry(other).transform(srid)
200
198
  feature.union(other_geometry.feature)
201
199
  end
200
+
202
201
  alias + merge
203
202
 
204
203
  def intersection(other)
@@ -210,6 +209,7 @@ module Charta
210
209
  other_geometry = Charta.new_geometry(other).transform(srid)
211
210
  feature.difference(other_geometry.feature)
212
211
  end
212
+
213
213
  alias - difference
214
214
 
215
215
  def bounding_box
@@ -234,8 +234,7 @@ module Charta
234
234
  Charta.find_srid(name_or_srid)
235
235
  end
236
236
 
237
- # TODO: Manage YAML domain type to ensure maintainability of YAML
238
- # serialization in time.
237
+ # Returns the underlaying object managed by Charta: the RGeo feature
239
238
  def feature
240
239
  unless defined? @feature
241
240
  if defined? @ewkt
@@ -248,6 +247,8 @@ module Charta
248
247
  @feature.dup
249
248
  end
250
249
 
250
+ alias to_rgeo feature
251
+
251
252
  def feature=(new_feature)
252
253
  raise ArgumentError, "Feature can't be nil" if new_feature.nil?
253
254
  @feature = new_feature
@@ -279,7 +280,7 @@ module Charta
279
280
 
280
281
  def from_ewkt(ewkt)
281
282
  # Cleans empty geometries
282
- ewkt.gsub!(/(GEOMETRYCOLLECTION|GEOMETRY|((MULTI)?(POINT|LINESTRING|POLYGON)))\(\)/, '\1 EMPTY')
283
+ ewkt = ewkt.gsub(/(GEOMETRYCOLLECTION|GEOMETRY|((MULTI)?(POINT|LINESTRING|POLYGON)))\(\)/, '\1 EMPTY')
283
284
  srs = ewkt.split(/[\=\;]+/)[0..1]
284
285
  srid = nil
285
286
  srid = srs[1] if srs[0] =~ /srid/i
@@ -291,57 +292,68 @@ module Charta
291
292
 
292
293
  private
293
294
 
294
- def geos_factory(srid)
295
- RGeo::Geos.factory(
296
- srid: srid,
297
- wkt_generator: {
298
- type_format: :ewkt,
299
- emit_ewkt_srid: true,
300
- convert_case: :upper
301
- },
302
- wkt_parser: {
303
- support_ewkt: true
304
- },
305
- wkb_generator: {
306
- type_format: :ewkb,
307
- emit_ewkb_srid: true,
308
- hex_format: true
309
- },
310
- wkb_parser: {
311
- support_ewkb: true
312
- }
313
- )
314
- end
295
+ def geos_factory(srid)
296
+ RGeo::Geos.factory(
297
+ srid: srid,
298
+ wkt_generator: {
299
+ type_format: :ewkt,
300
+ emit_ewkt_srid: true,
301
+ convert_case: :upper
302
+ },
303
+ wkt_parser: {
304
+ support_ewkt: true
305
+ },
306
+ wkb_generator: {
307
+ type_format: :ewkb,
308
+ emit_ewkb_srid: true,
309
+ hex_format: true
310
+ },
311
+ wkb_parser: {
312
+ support_ewkb: true
313
+ }
314
+ )
315
+ end
315
316
 
316
- def projected_factory(srid)
317
- proj4 = '+proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs'
318
- RGeo::Geographic.projected_factory(
319
- srid: srid,
320
- wkt_generator: {
321
- type_format: :ewkt,
322
- emit_ewkt_srid: true,
323
- convert_case: :upper
324
- },
325
- wkt_parser: {
326
- support_ewkt: true
327
- },
328
- wkb_generator: {
329
- type_format: :ewkb,
330
- emit_ewkb_srid: true,
331
- hex_format: true
332
- },
333
- wkb_parser: {
334
- support_ewkb: true
335
- },
336
- projection_srid: 6933,
337
- projection_proj4: proj4
338
- )
339
- end
340
- end
317
+ def projected_factory(srid)
318
+ proj4 = '+proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs'
319
+ RGeo::Geographic.projected_factory(
320
+ srid: srid,
321
+ wkt_generator: {
322
+ type_format: :ewkt,
323
+ emit_ewkt_srid: true,
324
+ convert_case: :upper
325
+ },
326
+ wkt_parser: {
327
+ support_ewkt: true
328
+ },
329
+ wkb_generator: {
330
+ type_format: :ewkb,
331
+ emit_ewkb_srid: true,
332
+ hex_format: true
333
+ },
334
+ wkb_parser: {
335
+ support_ewkb: true
336
+ },
337
+ projection_srid: 6933,
338
+ projection_proj4: proj4
339
+ )
340
+ end
341
+
342
+ def method_missing(name, *args, &block)
343
+ target = to_rgeo
344
+ if target.respond_to? name
345
+ target.send name, *args
346
+ else
347
+ raise StandardError.new("Method #{name} does not exist for #{self.class.name}")
348
+ end
349
+ end
350
+
351
+ def respond_to_missing?(name, include_private = false)
352
+ return false if name == :init_with
353
+ return true if to_rgeo.respond_to? name, include_private
354
+ super
355
+ end
341
356
 
342
- def respond_to_missing?(name, include_private = false)
343
- return false if name == :init_with
344
- super
345
357
  end
346
358
  end
347
359
  end
@@ -1,3 +1,3 @@
1
1
  module Charta
2
- VERSION = '0.2.0'.freeze
2
+ VERSION = '0.2.1'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: charta
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brice TEXIER
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-01 00:00:00.000000000 Z
11
+ date: 2019-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.0.0
33
+ version: '1.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.0.0
40
+ version: '1.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: json
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,56 +58,56 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.0.0
61
+ version: '1.0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 1.0.0
68
+ version: '1.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rgeo-proj4
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 1.0.0
75
+ version: '1.0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 1.0.0
82
+ version: '1.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: activesupport
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '5.1'
89
+ version: '5.0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '5.1'
96
+ version: '5.0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: bundler
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '1.14'
103
+ version: '2.0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '1.14'
110
+ version: '2.0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rake
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -158,6 +158,7 @@ extensions: []
158
158
  extra_rdoc_files: []
159
159
  files:
160
160
  - ".gitignore"
161
+ - ".gitlab-ci.yml"
161
162
  - ".travis.yml"
162
163
  - CODE_OF_CONDUCT.md
163
164
  - Gemfile
@@ -199,8 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
199
200
  - !ruby/object:Gem::Version
200
201
  version: '0'
201
202
  requirements: []
202
- rubyforge_project:
203
- rubygems_version: 2.6.14
203
+ rubygems_version: 3.0.1
204
204
  signing_key:
205
205
  specification_version: 4
206
206
  summary: Simple tool over geos and co