tairu 0.10.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MDYzN2EyYWQ2MTZlMTBmNGVhMjcxMzYxM2M4MjRjOGNhOTE2OTI2ZA==
5
+ data.tar.gz: !binary |-
6
+ ZmNmNDEzZDFhNGVhMTA2MDNhNjkwOWNiZjhmYTI1YmE3NWY1YmIxZA==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ YmEyNTI0YWJkNWQxMDIzZmM5MTc0YWE2YTgyMTljMzk2YjRhZDgwZmFkMzA3
10
+ MTY2NWYxY2E1NTRlZGNiZWM5MWY3ZDdjZTg2MTM4N2E5YjIyNGQ3YjhmODUz
11
+ ZmVhYjYwMGM3ZmM0N2Q2OWM4MjU4N2QxYWZmNTVhYzU0YmY4NjE=
12
+ data.tar.gz: !binary |-
13
+ ZjMwZjMxNmM1YjNlYzZhMDJlMzRlOWU1ZjEwZTZmZTk2NTU4Mzk5MjZiNjI1
14
+ ZGE0NThlNTEwZjg1OTEzNmEzMGZhMzEzZWU1MGEyOTdjMWJiNTgzOTcxYjI0
15
+ ZGQ3YmQ3MjQzNDIxOGVmZDUyNGQ2YTJkNWQzZjkxYWEwMWI0M2I=
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Build Status](https://travis-ci.org/scooterw/tairu.png?branch=master)](https://travis-ci.org/scooterw/tairu)
2
+
1
3
  tairu ... simple map tile server
2
4
 
3
5
  In development mode (irb): `rake console`
@@ -28,6 +28,17 @@ module Tairu
28
28
  end
29
29
  end
30
30
 
31
+ def add_layers(layers={})
32
+ raise RuntimeError.new('No layers specified') if layers.empty?
33
+
34
+ layers.each do |k,v|
35
+ unless self.layers.include?(k)
36
+ self.layers[k] = v
37
+ self.tilesets[k] = Tairu::Store::TYPES[v['provider'].downcase].new(k)
38
+ end
39
+ end
40
+ end
41
+
31
42
  def configure_layers
32
43
  raise RuntimeError.new('At least one layer must be specified') unless self.layers
33
44
  end
@@ -32,7 +32,7 @@ module Tairu
32
32
  end
33
33
  end
34
34
 
35
- get '/:tileset/:zoom/:col/:row' do
35
+ get '/:tileset/:zoom/:col/:row.?:format' do
36
36
  coord = Tairu::Coordinate.new(Integer(params[:row]), Integer(params[:col]), Integer(params[:zoom]))
37
37
  tile = Tairu.get_tile(params[:tileset], coord)
38
38
 
@@ -1,13 +1,15 @@
1
1
  require 'store/mbtiles'
2
2
  require 'store/esri'
3
3
  require 'store/tms'
4
+ require 'store/geojson'
4
5
 
5
6
  module Tairu
6
7
  module Store
7
8
  TYPES = {
8
9
  'mbtiles' => Tairu::Store::MBTiles,
9
10
  'esri' => Tairu::Store::Esri,
10
- 'tms' => Tairu::Store::TMS
11
+ 'tms' => Tairu::Store::TMS,
12
+ 'json' => Tairu::Store::GeoJSON
11
13
  }
12
14
  end
13
- end
15
+ end
@@ -0,0 +1,35 @@
1
+ module Tairu
2
+ module Store
3
+ class GeoJSON
4
+ def initialize(layer)
5
+ @tileset = File.join(File.expand_path(Tairu.layers[layer]['location']), Tairu.layers[layer]['tileset'])
6
+ @flip = Tairu.layers[layer]['flip_y_coordinate']
7
+ end
8
+
9
+ def flip_y(z, y)
10
+ (2 ** z - 1) - y
11
+ end
12
+
13
+ def get(coord)
14
+ y = @flip ? flip_y(coord.zoom, coord.row) : coord.row
15
+
16
+ path = File.join(@tileset, coord.zoom, coord.column, "#{y}.json")
17
+
18
+ return nil unless File.exists?(path)
19
+
20
+ data = File.open(path, 'r') do |f|
21
+ begin
22
+ f.flock(File::LOCK_SH)
23
+ f.read
24
+ ensure
25
+ f.flock(File::LOCK_UN)
26
+ end
27
+ end
28
+
29
+ mime_type = 'application/json'
30
+ tile = data.nil? ? nil : Tairu::Tile.new(data, mime_type)
31
+ tile
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,3 +1,3 @@
1
1
  module Tairu
2
- VERSION = '0.10.0'
2
+ VERSION = '0.11.0'
3
3
  end
metadata CHANGED
@@ -1,116 +1,102 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tairu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
5
- prerelease:
4
+ version: 0.11.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Scooter Wadsworth
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-04-06 00:00:00.000000000 Z
11
+ date: 2013-06-08 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: sequel
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - '='
17
+ - - ! '>='
20
18
  - !ruby/object:Gem::Version
21
- version: 3.46.0
19
+ version: 3.48.0
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - '='
24
+ - - ! '>='
28
25
  - !ruby/object:Gem::Version
29
- version: 3.46.0
26
+ version: 3.48.0
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: redis
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - '='
31
+ - - ! '>='
36
32
  - !ruby/object:Gem::Version
37
- version: 3.0.3
33
+ version: 3.0.4
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - '='
38
+ - - ! '>='
44
39
  - !ruby/object:Gem::Version
45
- version: 3.0.3
40
+ version: 3.0.4
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: connection_pool
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - '='
45
+ - - ! '>='
52
46
  - !ruby/object:Gem::Version
53
- version: 1.0.0
47
+ version: 1.1.0
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - '='
52
+ - - ! '>='
60
53
  - !ruby/object:Gem::Version
61
- version: 1.0.0
54
+ version: 1.1.0
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: multi_json
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - '='
59
+ - - ! '>='
68
60
  - !ruby/object:Gem::Version
69
- version: 1.7.2
61
+ version: 1.7.6
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - '='
66
+ - - ! '>='
76
67
  - !ruby/object:Gem::Version
77
- version: 1.7.2
68
+ version: 1.7.6
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: sinatra
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - '='
73
+ - - ! '>='
84
74
  - !ruby/object:Gem::Version
85
- version: 1.4.2
75
+ version: 1.4.3
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - '='
80
+ - - ! '>='
92
81
  - !ruby/object:Gem::Version
93
- version: 1.4.2
82
+ version: 1.4.3
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: puma
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - '='
87
+ - - ! '>='
100
88
  - !ruby/object:Gem::Version
101
- version: 1.6.3
89
+ version: 2.0.1
102
90
  type: :runtime
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - '='
94
+ - - ! '>='
108
95
  - !ruby/object:Gem::Version
109
- version: 1.6.3
96
+ version: 2.0.1
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: rake
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
101
  - - ! '>='
116
102
  - !ruby/object:Gem::Version
@@ -118,7 +104,6 @@ dependencies:
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
108
  - - ! '>='
124
109
  - !ruby/object:Gem::Version
@@ -126,7 +111,6 @@ dependencies:
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: rspec
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
115
  - - ! '>='
132
116
  - !ruby/object:Gem::Version
@@ -134,7 +118,6 @@ dependencies:
134
118
  type: :development
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
122
  - - ! '>='
140
123
  - !ruby/object:Gem::Version
@@ -158,6 +141,7 @@ files:
158
141
  - lib/tairu/coordinate.rb
159
142
  - lib/tairu/server.rb
160
143
  - lib/tairu/store/esri.rb
144
+ - lib/tairu/store/geojson.rb
161
145
  - lib/tairu/store/mbtiles.rb
162
146
  - lib/tairu/store/tms.rb
163
147
  - lib/tairu/store.rb
@@ -167,26 +151,25 @@ files:
167
151
  homepage: https://github.com/scooterw/tairu
168
152
  licenses:
169
153
  - BSD
154
+ metadata: {}
170
155
  post_install_message:
171
156
  rdoc_options: []
172
157
  require_paths:
173
158
  - lib
174
159
  required_ruby_version: !ruby/object:Gem::Requirement
175
- none: false
176
160
  requirements:
177
161
  - - ! '>='
178
162
  - !ruby/object:Gem::Version
179
163
  version: 1.9.2
180
164
  required_rubygems_version: !ruby/object:Gem::Requirement
181
- none: false
182
165
  requirements:
183
166
  - - ! '>='
184
167
  - !ruby/object:Gem::Version
185
168
  version: 1.3.6
186
169
  requirements: []
187
170
  rubyforge_project:
188
- rubygems_version: 1.8.23
171
+ rubygems_version: 2.0.3
189
172
  signing_key:
190
- specification_version: 3
191
- summary: Simple Tile Server for Ruby
173
+ specification_version: 4
174
+ summary: Simple Tile Server (MBTiles, TMS, Esri) for Ruby
192
175
  test_files: []