cartocss_helper 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,121 @@
1
+ # encoding: UTF-8
2
+ require_relative 'configuration.rb'
3
+ require_relative 'heuristic.rb'
4
+ require_relative 'data_file_handling.rb'
5
+ require 'fileutils'
6
+ include CartoCSSHelper::Configuration
7
+ include CartoCSSHelper::Heuristic
8
+
9
+ module CartoCSSHelper
10
+ class Scene
11
+ attr_reader :tags, :zlevel, :on_water, :type
12
+ def initialize(tags, zlevel, on_water, type)
13
+ raise 'tags not in hash' unless tags.respond_to?(:has_key?)
14
+ @tags = tags
15
+ @zlevel = zlevel
16
+ @on_water = on_water
17
+ @type = type
18
+ if type == 'area'
19
+ @tags['area'] = 'yes'
20
+ @type = 'closed_way'
21
+ end
22
+ end
23
+
24
+ def is_output_different(another_scene)
25
+ if @on_water != another_scene.on_water
26
+ raise 'on_water mismatch'
27
+ end
28
+ #Returns true if the contents of a file A and a file B are identical.
29
+ return !FileUtils.compare_file(self.get_image_filename, another_scene.get_image_filename)
30
+ end
31
+
32
+ def flush_cache
33
+ File.delete(self.get_filename)
34
+ end
35
+
36
+ def get_image_filename(silent=true, debug=false)
37
+ lat = 0
38
+ lon = 20
39
+ on_water_string = ''
40
+ if @on_water
41
+ lon = 0
42
+ on_water_string = 'on_water'
43
+ end
44
+ export_filename = self.get_filename
45
+ if File.exists?(export_filename)
46
+ return export_filename
47
+ end
48
+ description = "tags: #{@tags.to_s}, zlevel: #{@zlevel}, type: #{@type} #{on_water_string}"
49
+ if !silent
50
+ puts "generating: #{description}"
51
+ end
52
+ generate_map(lat, lon, debug)
53
+ if !File.exists?(export_filename)
54
+ description = "get_image failed - #{description}. File <\n#{export_filename}\n> was expected."
55
+ if debug
56
+ raise description
57
+ else
58
+ puts description
59
+ return get_image_filename(false, true)
60
+ end
61
+ end
62
+ return export_filename
63
+ end
64
+
65
+ protected
66
+
67
+ def get_filename
68
+ water_part = ''
69
+ if @on_water
70
+ water_part = '_water'
71
+ end
72
+ return Configuration.get_path_to_folder_for_branch_specific_cache+@tags.to_a.sort.to_s+'_'+@zlevel.to_s+water_part+'_'+@type+'.png'
73
+ end
74
+
75
+ def generate_map(lat, lon, debug)
76
+ data_file_maker = DataFileGenerator.new(tags, @type, lat, lon, get_bbox_size)
77
+ data_file_maker.generate
78
+ DataFileLoader.load_data_into_database(Configuration.get_data_filename, debug)
79
+ generate_image lat, lon, debug
80
+ end
81
+
82
+ def get_bbox_size
83
+ return 0.2
84
+ end
85
+
86
+ def generate_image(lat, lon, debug)
87
+ export_filename = self.get_filename
88
+ bbox_size = self.get_bbox_size
89
+ Scene.run_tilemill_export_image(lat, lon, @zlevel, bbox_size, 200, export_filename, debug)
90
+ end
91
+
92
+ def self.run_tilemill_export_image(lat, lon, zlevel, bbox_size, image_size, export_filename, debug=false)
93
+ if File.exists?(export_filename)
94
+ if debug
95
+ puts 'wanted file exists'
96
+ end
97
+ return
98
+ end
99
+ silence = '> /dev/null 2>&1'
100
+ if debug
101
+ silence = ''
102
+ end
103
+ #--bbox=[xmin,ymin,xmax,ymax]
104
+ bbox = "#{lon-bbox_size/2},#{lat-bbox_size/2},#{lon+bbox_size/2},#{lat+bbox_size/2}"
105
+ params = "--format=png --width=#{image_size} --height=#{image_size} --static_zoom=#{zlevel} --bbox=\"#{bbox}\""
106
+ project_name = CartoCSSHelper::Configuration.get_tilemill_project_name
107
+ command = "node /usr/share/tilemill/index.js export #{project_name} '#{export_filename}' #{params} #{silence}"
108
+ if debug
109
+ puts command
110
+ end
111
+ system command
112
+ unless File.exists?(export_filename)
113
+ if !debug
114
+ puts 'rerunning failed image generation with enabled debug'
115
+ return self.run_tilemill_export_image(lat, lon, zlevel, bbox_size, image_size, export_filename, true)
116
+ end
117
+ raise 'generation of file ' + export_filename + ' failed'
118
+ end
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,553 @@
1
+ require_relative('style_specific')
2
+
3
+ module CartoCSSHelper
4
+ module StyleDataForDefaultOSM
5
+ def self.get_style_data
6
+ min_z = 4
7
+ max_z = 22
8
+ return CartoCSSHelper::StyleSpecificData.new(min_z, max_z, get_expected_tag_status, get_composite_sets)
9
+ end
10
+
11
+ def self.get_expected_tag_status
12
+ return [
13
+ TagRenderingStatus.new('access', '*', :composite, {'amenity'=>'parking'}),
14
+ TagRenderingStatus.new('access', 'destination', :composite, {'highway'=>'service'}),
15
+ TagRenderingStatus.new('access', 'no', :composite, {'highway'=>'service'}),
16
+ TagRenderingStatus.new('access', 'private', :composite, {'highway'=>'service'}),
17
+ TagRenderingStatus.new('addr:housename', '*', :primary),
18
+ TagRenderingStatus.new('addr:housenumber', '*', :primary),
19
+ TagRenderingStatus.new('addr:interpolation', '*', :primary),
20
+ TagRenderingStatus.new('admin_level', '10', :composite, {'boundary'=>'administrative'}),
21
+ TagRenderingStatus.new('admin_level', '2', :composite, {'boundary'=>'administrative'}),
22
+ TagRenderingStatus.new('admin_level', '3', :composite, {'boundary'=>'administrative'}),
23
+ TagRenderingStatus.new('admin_level', '4', :composite, {'boundary'=>'administrative'}),
24
+ TagRenderingStatus.new('admin_level', '5', :composite, {'boundary'=>'administrative'}),
25
+ TagRenderingStatus.new('admin_level', '6', :composite, {'boundary'=>'administrative'}),
26
+ TagRenderingStatus.new('admin_level', '7', :composite, {'boundary'=>'administrative'}),
27
+ TagRenderingStatus.new('admin_level', '8', :composite, {'boundary'=>'administrative'}),
28
+ TagRenderingStatus.new('admin_level', '9', :composite, {'boundary'=>'administrative'}),
29
+ TagRenderingStatus.new('aerialway', 'cable_car', :primary),
30
+ TagRenderingStatus.new('aerialway', 'chair_lift', :primary),
31
+ TagRenderingStatus.new('aerialway', 'drag_lift', :primary),
32
+ TagRenderingStatus.new('aerialway', 'gondola', :primary),
33
+ TagRenderingStatus.new('aerialway', 'goods', :primary),
34
+ TagRenderingStatus.new('aerialway', 'platter', :primary),
35
+ TagRenderingStatus.new('aerialway', 'rope_tow', :primary),
36
+ TagRenderingStatus.new('aerialway', 'station', :primary),
37
+ TagRenderingStatus.new('aeroway', 'aerodrome', :primary),
38
+ TagRenderingStatus.new('aeroway', 'apron', :primary),
39
+ TagRenderingStatus.new('aeroway', 'gate', :composite, {'ref'=>'3'}),
40
+ TagRenderingStatus.new('aeroway', 'helipad', :primary),
41
+ TagRenderingStatus.new('aeroway', 'runway', :primary),
42
+ TagRenderingStatus.new('aeroway', 'taxiway', :primary),
43
+ TagRenderingStatus.new('aeroway', 'terminal', :primary),
44
+ TagRenderingStatus.new('amenity', 'atm', :primary),
45
+ TagRenderingStatus.new('amenity', 'bank', :primary),
46
+ TagRenderingStatus.new('amenity', 'bar', :primary),
47
+ TagRenderingStatus.new('amenity', 'bicycle_parking', :primary),
48
+ TagRenderingStatus.new('amenity', 'bicycle_rental', :primary),
49
+ TagRenderingStatus.new('amenity', 'biergarten', :primary),
50
+ TagRenderingStatus.new('amenity', 'bus_station', :primary),
51
+ TagRenderingStatus.new('amenity', 'cafe', :primary),
52
+ TagRenderingStatus.new('amenity', 'car_rental', :primary),
53
+ TagRenderingStatus.new('amenity', 'car_sharing', :primary),
54
+ TagRenderingStatus.new('amenity', 'cinema', :primary),
55
+ TagRenderingStatus.new('amenity', 'college', :primary),
56
+ TagRenderingStatus.new('amenity', 'courthouse', :primary),
57
+ TagRenderingStatus.new('amenity', 'dentist', :primary),
58
+ TagRenderingStatus.new('amenity', 'drinking_water', :primary),
59
+ TagRenderingStatus.new('amenity', 'doctors', :primary),
60
+ TagRenderingStatus.new('amenity', 'embassy', :primary),
61
+ TagRenderingStatus.new('amenity', 'emergency_phone', :primary),
62
+ TagRenderingStatus.new('amenity', 'food_court', :primary),
63
+ TagRenderingStatus.new('amenity', 'fast_food', :primary),
64
+ TagRenderingStatus.new('amenity', 'fire_station', :primary),
65
+ TagRenderingStatus.new('amenity', 'fuel', :primary),
66
+ TagRenderingStatus.new('amenity', 'grave_yard', :primary),
67
+ TagRenderingStatus.new('amenity', 'hospital', :primary),
68
+ TagRenderingStatus.new('amenity', 'hunting_stand', :primary),
69
+ TagRenderingStatus.new('amenity', 'kindergarten', :primary),
70
+ TagRenderingStatus.new('amenity', 'library', :primary),
71
+ TagRenderingStatus.new('amenity', 'parking', :primary),
72
+ TagRenderingStatus.new('amenity', 'pharmacy', :primary),
73
+ TagRenderingStatus.new('amenity', 'place_of_worship', :primary),
74
+ TagRenderingStatus.new('amenity', 'police', :primary),
75
+ TagRenderingStatus.new('amenity', 'post_box', :primary),
76
+ TagRenderingStatus.new('amenity', 'post_office', :primary),
77
+ TagRenderingStatus.new('amenity', 'prison', :primary),
78
+ TagRenderingStatus.new('amenity', 'pub', :primary),
79
+ TagRenderingStatus.new('amenity', 'recycling', :primary),
80
+ TagRenderingStatus.new('amenity', 'restaurant', :primary),
81
+ TagRenderingStatus.new('amenity', 'school', :primary),
82
+ TagRenderingStatus.new('amenity', 'shelter', :primary),
83
+ TagRenderingStatus.new('amenity', 'telephone', :primary),
84
+ TagRenderingStatus.new('amenity', 'theatre', :primary),
85
+ TagRenderingStatus.new('amenity', 'toilets', :primary),
86
+ TagRenderingStatus.new('amenity', 'townhall', :primary),
87
+ TagRenderingStatus.new('amenity', 'university', :primary),
88
+ TagRenderingStatus.new('area', 'no', :composite, {'barrier' => 'hedge'}),
89
+ TagRenderingStatus.new('area', 'yes', :composite, {'barrier' => 'hedge'}),
90
+ TagRenderingStatus.new('barrier', '*', :primary),
91
+ TagRenderingStatus.new('barrier', 'block', :primary),
92
+ TagRenderingStatus.new('barrier', 'bollard', :primary),
93
+ TagRenderingStatus.new('barrier', 'embankment', :primary),
94
+ TagRenderingStatus.new('barrier', 'gate', :primary),
95
+ TagRenderingStatus.new('barrier', 'hedge', :primary),
96
+ TagRenderingStatus.new('barrier', 'lift_gate', :primary),
97
+ TagRenderingStatus.new('bicycle', 'designated', :composite, {'highway'=>'path'}),
98
+ TagRenderingStatus.new('boundary', 'administrative', :composite, {'admin_level'=>'2'}),
99
+ TagRenderingStatus.new('boundary', 'national_park', :primary),
100
+ TagRenderingStatus.new('bridge', 'aqueduct', :composite, {'waterway'=>'river'}),
101
+ TagRenderingStatus.new('bridge', 'boardwalk', :composite, {'highway'=>'service'}),
102
+ TagRenderingStatus.new('bridge', 'cantilever', :composite, {'highway'=>'service'}),
103
+ TagRenderingStatus.new('bridge', 'covered', :composite, {'highway'=>'service'}),
104
+ TagRenderingStatus.new('bridge', 'low_water_crossing', :composite, {'highway'=>'service'}),
105
+ TagRenderingStatus.new('bridge', 'movable', :composite, {'highway'=>'service'}),
106
+ TagRenderingStatus.new('bridge', 'trestle', :composite, {'highway'=>'service'}),
107
+ TagRenderingStatus.new('bridge', 'viaduct', :composite, {'highway'=>'service'}),
108
+ TagRenderingStatus.new('bridge', 'yes', :composite, {'highway'=>'service'}),
109
+ TagRenderingStatus.new('building', '*', :primary),
110
+ TagRenderingStatus.new('building', 'no', :not_displayed),
111
+ TagRenderingStatus.new('capital', 'yes', :composite, {'place'=>'city'}),
112
+ TagRenderingStatus.new('capital', '4', :composite, {'place'=>'city'}),
113
+ TagRenderingStatus.new('construction', 'bridleway', :composite, {'highway'=>'construction'}),
114
+ TagRenderingStatus.new('construction', 'cycleway', :composite, {'highway'=>'construction'}),
115
+ TagRenderingStatus.new('construction', 'footway', :composite, {'highway'=>'construction'}),
116
+ TagRenderingStatus.new('construction', 'living_street', :composite, {'highway'=>'construction'}),
117
+ TagRenderingStatus.new('construction', 'motorway', :composite, {'highway'=>'construction'}),
118
+ TagRenderingStatus.new('construction', 'motorway_link', :composite, {'highway'=>'construction'}),
119
+ TagRenderingStatus.new('construction', 'path', :composite, {'highway'=>'construction'}),
120
+ TagRenderingStatus.new('construction', 'primary', :composite, {'highway'=>'construction'}),
121
+ TagRenderingStatus.new('construction', 'primary_link', :composite, {'highway'=>'construction'}),
122
+ TagRenderingStatus.new('construction', 'residential', :composite, {'highway'=>'construction'}),
123
+ TagRenderingStatus.new('construction', 'secondary', :composite, {'highway'=>'construction'}),
124
+ TagRenderingStatus.new('construction', 'secondary_link', :composite, {'highway'=>'construction'}),
125
+ TagRenderingStatus.new('construction', 'service', :composite, {'highway'=>'construction'}),
126
+ TagRenderingStatus.new('construction', 'tertiary', :composite, {'highway'=>'construction'}),
127
+ TagRenderingStatus.new('construction', 'tertiary_link', :composite, {'highway'=>'construction'}),
128
+ TagRenderingStatus.new('construction', 'track', :composite, {'highway'=>'construction'}),
129
+ TagRenderingStatus.new('construction', 'trunk', :composite, {'highway'=>'construction'}),
130
+ TagRenderingStatus.new('construction', 'trunk_link', :composite, {'highway'=>'construction'}),
131
+ TagRenderingStatus.new('construction', 'unclassified', :composite, {'highway'=>'construction'}),
132
+ TagRenderingStatus.new('covered', 'yes', :composite, {'highway'=>'service'}),
133
+ TagRenderingStatus.new('denomination', 'jehovahs_witness', :composite, {'amenity'=>'place_of_worship', 'religion'=>'christian'}),
134
+ TagRenderingStatus.new('ele', '*', :composite, {'natural'=>'peak'}),
135
+ TagRenderingStatus.new('foot', 'designated', :composite, {'highway'=>'path'}),
136
+ TagRenderingStatus.new('generator:source', 'wind', :composite, {'power'=>'generator'}),
137
+ TagRenderingStatus.new('highway', 'bridleway', :primary),
138
+ TagRenderingStatus.new('highway', 'bus_guideway', :primary),
139
+ TagRenderingStatus.new('highway', 'bus_stop', :primary),
140
+ TagRenderingStatus.new('highway', 'construction', :primary),
141
+ TagRenderingStatus.new('highway', 'cycleway', :primary),
142
+ TagRenderingStatus.new('highway', 'footway', :primary),
143
+ TagRenderingStatus.new('highway', 'ford', :primary),
144
+ TagRenderingStatus.new('highway', 'living_street', :primary),
145
+ TagRenderingStatus.new('highway', 'mini_roundabout', :primary),
146
+ TagRenderingStatus.new('highway', 'motorway', :primary),
147
+ TagRenderingStatus.new('highway', 'motorway_junction', :composite, {'name'=>'a'}),
148
+ TagRenderingStatus.new('highway', 'motorway_link', :primary),
149
+ TagRenderingStatus.new('highway', 'path', :primary),
150
+ TagRenderingStatus.new('highway', 'pedestrian', :primary),
151
+ TagRenderingStatus.new('highway', 'platform', :primary),
152
+ TagRenderingStatus.new('highway', 'primary', :primary),
153
+ TagRenderingStatus.new('highway', 'primary_link', :primary),
154
+ TagRenderingStatus.new('highway', 'proposed', :primary),
155
+ TagRenderingStatus.new('highway', 'raceway', :primary),
156
+ TagRenderingStatus.new('highway', 'residential', :primary),
157
+ TagRenderingStatus.new('highway', 'rest_area', :primary),
158
+ TagRenderingStatus.new('highway', 'road', :primary),
159
+ TagRenderingStatus.new('highway', 'secondary', :primary),
160
+ TagRenderingStatus.new('highway', 'secondary_link', :primary),
161
+ TagRenderingStatus.new('highway', 'service', :primary),
162
+ TagRenderingStatus.new('highway', 'services', :primary),
163
+ TagRenderingStatus.new('highway', 'steps', :primary),
164
+ TagRenderingStatus.new('highway', 'tertiary', :primary),
165
+ TagRenderingStatus.new('highway', 'tertiary_link', :primary),
166
+ TagRenderingStatus.new('highway', 'track', :primary),
167
+ TagRenderingStatus.new('highway', 'traffic_signals', :primary),
168
+ TagRenderingStatus.new('highway', 'trunk', :primary),
169
+ TagRenderingStatus.new('highway', 'trunk_link', :primary),
170
+ TagRenderingStatus.new('highway', 'turning_circle', :primary), #note: special topology is required
171
+ TagRenderingStatus.new('highway', 'turning_loop', :primary), #note: special topology is required
172
+ TagRenderingStatus.new('highway', 'unclassified', :primary),
173
+ TagRenderingStatus.new('historic', 'archaeological_site', :primary),
174
+ TagRenderingStatus.new('historic', 'castle_walls', :primary),
175
+ TagRenderingStatus.new('historic', 'citywalls', :primary),
176
+ TagRenderingStatus.new('historic', 'memorial', :primary),
177
+ TagRenderingStatus.new('horse', 'designated', :composite, {'highway'=>'path'}),
178
+ TagRenderingStatus.new('intermittent', 'yes', :composite, {'waterway'=>'river'}),
179
+ TagRenderingStatus.new('junction', 'yes', :composite, {'name'=>'a'}),
180
+ TagRenderingStatus.new('junction', 'roundabout', :composite, {'highway'=>'service'}),
181
+ TagRenderingStatus.new('landuse', 'allotments', :primary),
182
+ TagRenderingStatus.new('landuse', 'basin', :primary),
183
+ TagRenderingStatus.new('landuse', 'brownfield', :primary),
184
+ TagRenderingStatus.new('landuse', 'cemetery', :primary),
185
+ TagRenderingStatus.new('landuse', 'commercial', :primary),
186
+ TagRenderingStatus.new('landuse', 'conservation', :primary),
187
+ TagRenderingStatus.new('landuse', 'construction', :primary),
188
+ TagRenderingStatus.new('landuse', 'farm', :primary),
189
+ TagRenderingStatus.new('landuse', 'farmland', :primary),
190
+ TagRenderingStatus.new('landuse', 'farmyard', :primary),
191
+ TagRenderingStatus.new('landuse', 'forest', :primary),
192
+ TagRenderingStatus.new('landuse', 'garages', :primary),
193
+ TagRenderingStatus.new('landuse', 'grass', :primary),
194
+ TagRenderingStatus.new('landuse', 'industrial', :primary),
195
+ TagRenderingStatus.new('landuse', 'landfill', :primary),
196
+ TagRenderingStatus.new('landuse', 'meadow', :primary),
197
+ TagRenderingStatus.new('landuse', 'military', :primary),
198
+ TagRenderingStatus.new('landuse', 'orchard', :primary),
199
+ TagRenderingStatus.new('landuse', 'quarry', :primary),
200
+ TagRenderingStatus.new('landuse', 'railway', :primary),
201
+ TagRenderingStatus.new('landuse', 'recreation_ground', :primary),
202
+ TagRenderingStatus.new('landuse', 'reservoir', :primary),
203
+ TagRenderingStatus.new('landuse', 'residential', :primary),
204
+ TagRenderingStatus.new('landuse', 'retail', :primary),
205
+ TagRenderingStatus.new('landuse', 'village_green', :primary),
206
+ TagRenderingStatus.new('landuse', 'vineyard', :primary),
207
+ TagRenderingStatus.new('layer', '1', :composite, {'highway' => 'service'}), #modifies ordering
208
+ TagRenderingStatus.new('layer', '2', :composite, {'highway' => 'service'}), #modifies ordering
209
+ TagRenderingStatus.new('layer', '3', :composite, {'highway' => 'service'}), #modifies ordering
210
+ TagRenderingStatus.new('layer', '4', :composite, {'highway' => 'service'}), #modifies ordering
211
+ TagRenderingStatus.new('layer', '5', :composite, {'highway' => 'service'}), #modifies ordering
212
+ TagRenderingStatus.new('layer', '-1', :composite, {'highway' => 'service'}), #modifies ordering
213
+ TagRenderingStatus.new('layer', '-2', :composite, {'highway' => 'service'}), #modifies ordering
214
+ TagRenderingStatus.new('layer', '-3', :composite, {'highway' => 'service'}), #modifies ordering
215
+ TagRenderingStatus.new('layer', '-4', :composite, {'highway' => 'service'}), #modifies ordering
216
+ TagRenderingStatus.new('layer', '-5', :composite, {'highway' => 'service'}), #modifies ordering
217
+ TagRenderingStatus.new('leisure', 'common', :primary),
218
+ TagRenderingStatus.new('leisure', 'garden', :primary),
219
+ TagRenderingStatus.new('leisure', 'golf_course', :primary),
220
+ TagRenderingStatus.new('leisure', 'marina', :primary),
221
+ TagRenderingStatus.new('leisure', 'miniature_golf', :primary),
222
+ TagRenderingStatus.new('leisure', 'nature_reserve', :primary),
223
+ TagRenderingStatus.new('leisure', 'park', :primary),
224
+ TagRenderingStatus.new('leisure', 'picnic_table', :primary),
225
+ TagRenderingStatus.new('leisure', 'pitch', :primary),
226
+ TagRenderingStatus.new('leisure', 'playground', :primary),
227
+ TagRenderingStatus.new('leisure', 'recreation_ground', :primary),
228
+ TagRenderingStatus.new('leisure', 'slipway', :primary),
229
+ TagRenderingStatus.new('leisure', 'sports_centre', :primary),
230
+ TagRenderingStatus.new('leisure', 'stadium', :primary),
231
+ TagRenderingStatus.new('leisure', 'swimming_pool', :primary),
232
+ TagRenderingStatus.new('leisure', 'track', :primary),
233
+ TagRenderingStatus.new('leisure', 'water_park', :primary),
234
+ TagRenderingStatus.new('man_made', 'breakwater', :primary),
235
+ TagRenderingStatus.new('man_made', 'cutline', :primary),
236
+ TagRenderingStatus.new('man_made', 'embankment', :primary),
237
+ TagRenderingStatus.new('man_made', 'groyne', :primary),
238
+ TagRenderingStatus.new('man_made', 'lighthouse', :primary),
239
+ TagRenderingStatus.new('man_made', 'mast', :primary),
240
+ TagRenderingStatus.new('man_made', 'pier', :primary),
241
+ TagRenderingStatus.new('man_made', 'water_tower', :primary),
242
+ TagRenderingStatus.new('man_made', 'windmill', :primary),
243
+ TagRenderingStatus.new('military', 'danger_area', :primary),
244
+ TagRenderingStatus.new('name', '*', :composite, {'highway'=>'service'}),
245
+ TagRenderingStatus.new('natural', 'bare_rock', :primary),
246
+ TagRenderingStatus.new('natural', 'bay', :composite, {'name'=>'a'}),
247
+ TagRenderingStatus.new('natural', 'beach', :primary),
248
+ TagRenderingStatus.new('natural', 'cave_entrance', :primary),
249
+ TagRenderingStatus.new('natural', 'cliff', :primary),
250
+ TagRenderingStatus.new('natural', 'glacier', :primary),
251
+ TagRenderingStatus.new('natural', 'grassland', :primary),
252
+ TagRenderingStatus.new('natural', 'heath', :primary),
253
+ TagRenderingStatus.new('natural', 'marsh', :primary),
254
+ TagRenderingStatus.new('natural', 'mud', :primary),
255
+ TagRenderingStatus.new('natural', 'peak', :primary),
256
+ TagRenderingStatus.new('natural', 'sand', :primary),
257
+ TagRenderingStatus.new('natural', 'scree', :primary),
258
+ TagRenderingStatus.new('natural', 'saddle', :primary),
259
+ TagRenderingStatus.new('natural', 'scrub', :primary),
260
+ TagRenderingStatus.new('natural', 'shingle', :primary),
261
+ TagRenderingStatus.new('natural', 'spring', :primary),
262
+ TagRenderingStatus.new('natural', 'tree', :primary),
263
+ TagRenderingStatus.new('natural', 'tree_row', :primary),
264
+ TagRenderingStatus.new('natural', 'volcano', :primary),
265
+ TagRenderingStatus.new('natural', 'water', :primary),
266
+ TagRenderingStatus.new('natural', 'wetland', :primary),
267
+ TagRenderingStatus.new('natural', 'wood', :primary),
268
+ TagRenderingStatus.new('oneway', '-1', :composite, {'highway'=>'service'}),
269
+ TagRenderingStatus.new('oneway', 'yes', :composite, {'highway'=>'service'}),
270
+ TagRenderingStatus.new('place', 'city', :composite, {'name'=>'a'}),
271
+ TagRenderingStatus.new('place', 'farm', :composite, {'name'=>'a'}),
272
+ TagRenderingStatus.new('place', 'hamlet', :composite, {'name'=>'a'}),
273
+ TagRenderingStatus.new('place', 'island', :composite, {'name'=>'a'}),
274
+ TagRenderingStatus.new('place', 'islet', :composite, {'name'=>'a'}),
275
+ TagRenderingStatus.new('place', 'isolated_dwelling', :composite, {'name'=>'a'}),
276
+ TagRenderingStatus.new('place', 'locality', :composite, {'name'=>'a'}),
277
+ TagRenderingStatus.new('place', 'neighbourhood', :composite, {'name'=>'a'}),
278
+ TagRenderingStatus.new('place', 'suburb', :composite, {'name'=>'a'}),
279
+ TagRenderingStatus.new('place', 'town', :composite, {'name'=>'a'}),
280
+ TagRenderingStatus.new('place', 'village', :composite, {'name'=>'a'}),
281
+ TagRenderingStatus.new('power', 'generator', :primary),
282
+ TagRenderingStatus.new('power', 'line', :primary),
283
+ TagRenderingStatus.new('power', 'minor_line', :primary),
284
+ TagRenderingStatus.new('power', 'pole', :primary),
285
+ TagRenderingStatus.new('power', 'station', :primary),
286
+ TagRenderingStatus.new('power', 'sub_station', :primary),
287
+ TagRenderingStatus.new('power', 'substation', :primary),
288
+ TagRenderingStatus.new('power', 'tower', :primary),
289
+ TagRenderingStatus.new('power_source', 'wind', :composite, {'power'=>'generator'}),
290
+ TagRenderingStatus.new('railway', 'construction', :primary),
291
+ TagRenderingStatus.new('railway', 'disused', :primary),
292
+ TagRenderingStatus.new('railway', 'funicular', :primary),
293
+ TagRenderingStatus.new('railway', 'halt', :primary),
294
+ TagRenderingStatus.new('railway', 'level_crossing', :primary),
295
+ TagRenderingStatus.new('railway', 'light_rail', :primary),
296
+ TagRenderingStatus.new('railway', 'miniature', :primary),
297
+ TagRenderingStatus.new('railway', 'monorail', :primary),
298
+ TagRenderingStatus.new('railway', 'narrow_gauge', :primary),
299
+ TagRenderingStatus.new('railway', 'platform', :primary),
300
+ TagRenderingStatus.new('railway', 'preserved', :primary),
301
+ TagRenderingStatus.new('railway', 'rail', :primary),
302
+ TagRenderingStatus.new('railway', 'station', :primary),
303
+ TagRenderingStatus.new('railway', 'subway', :primary),
304
+ TagRenderingStatus.new('railway', 'subway_entrance', :primary),
305
+ TagRenderingStatus.new('railway', 'tram', :primary),
306
+ TagRenderingStatus.new('railway', 'tram_stop', :primary),
307
+ TagRenderingStatus.new('railway', 'turntable', :primary),
308
+ TagRenderingStatus.new('ref', '*', :composite, {'aeroway'=>'gate'}),
309
+ TagRenderingStatus.new('religion', 'buddhist', :composite, {'amenity'=>'place_of_worship'}),
310
+ TagRenderingStatus.new('religion', 'christian', :composite, {'amenity'=>'place_of_worship'}),
311
+ TagRenderingStatus.new('religion', 'hindu', :composite, {'amenity'=>'place_of_worship'}),
312
+ TagRenderingStatus.new('religion', 'jewish', :composite, {'amenity'=>'place_of_worship'}),
313
+ TagRenderingStatus.new('religion', 'muslim', :composite, {'amenity'=>'place_of_worship'}),
314
+ TagRenderingStatus.new('religion', 'shinto', :composite, {'amenity'=>'place_of_worship'}),
315
+ TagRenderingStatus.new('religion', 'sikh', :composite, {'amenity'=>'place_of_worship'}),
316
+ TagRenderingStatus.new('religion', 'taoist', :composite, {'amenity'=>'place_of_worship'}),
317
+ TagRenderingStatus.new('route', 'ferry', :primary),
318
+ TagRenderingStatus.new('service', 'drive-through', :composite, {'highway'=>'service'}),
319
+ TagRenderingStatus.new('service', 'driveway', :composite, {'highway'=>'service'}),
320
+ TagRenderingStatus.new('service', 'parking_aisle', :composite, {'highway'=>'service'}),
321
+ TagRenderingStatus.new('service', 'siding', :composite, {'railway'=>'rail'}),
322
+ TagRenderingStatus.new('service', 'spur', :composite, {'railway'=>'rail'}),
323
+ TagRenderingStatus.new('service', 'yard', :composite, {'railway'=>'rail'}),
324
+ TagRenderingStatus.new('shop', 'accessories', :primary),
325
+ TagRenderingStatus.new('shop', 'alcohol', :primary),
326
+ TagRenderingStatus.new('shop', 'antique', :primary),
327
+ TagRenderingStatus.new('shop', 'antiques', :primary),
328
+ TagRenderingStatus.new('shop', 'appliance', :primary),
329
+ TagRenderingStatus.new('shop', 'art', :primary),
330
+ TagRenderingStatus.new('shop', 'baby_goods', :primary),
331
+ TagRenderingStatus.new('shop', 'bag', :primary),
332
+ TagRenderingStatus.new('shop', 'bags', :primary),
333
+ TagRenderingStatus.new('shop', 'bakery', :primary),
334
+ TagRenderingStatus.new('shop', 'bathroom_furnishing', :primary),
335
+ TagRenderingStatus.new('shop', 'beauty', :primary),
336
+ TagRenderingStatus.new('shop', 'bed', :primary),
337
+ TagRenderingStatus.new('shop', 'betting', :primary),
338
+ TagRenderingStatus.new('shop', 'beverages', :primary),
339
+ TagRenderingStatus.new('shop', 'bicycle', :primary),
340
+ TagRenderingStatus.new('shop', 'boat', :primary),
341
+ TagRenderingStatus.new('shop', 'bookmaker', :primary),
342
+ TagRenderingStatus.new('shop', 'books', :primary),
343
+ TagRenderingStatus.new('shop', 'boutique', :primary),
344
+ TagRenderingStatus.new('shop', 'builder', :primary),
345
+ TagRenderingStatus.new('shop', 'building_materials', :primary),
346
+ TagRenderingStatus.new('shop', 'butcher', :primary),
347
+ TagRenderingStatus.new('shop', 'camera', :primary),
348
+ TagRenderingStatus.new('shop', 'car', :primary),
349
+ TagRenderingStatus.new('shop', 'car_parts', :primary),
350
+ TagRenderingStatus.new('shop', 'car_repair', :primary),
351
+ TagRenderingStatus.new('shop', 'car_service', :primary),
352
+ TagRenderingStatus.new('shop', 'carpet', :primary),
353
+ TagRenderingStatus.new('shop', 'charity', :primary),
354
+ TagRenderingStatus.new('shop', 'cheese', :primary),
355
+ TagRenderingStatus.new('shop', 'chemist', :primary),
356
+ TagRenderingStatus.new('shop', 'chocolate', :primary),
357
+ TagRenderingStatus.new('shop', 'clothes', :primary),
358
+ TagRenderingStatus.new('shop', 'coffee', :primary),
359
+ TagRenderingStatus.new('shop', 'communication', :primary),
360
+ TagRenderingStatus.new('shop', 'computer', :primary),
361
+ TagRenderingStatus.new('shop', 'confectionery', :primary),
362
+ TagRenderingStatus.new('shop', 'convenience', :primary),
363
+ TagRenderingStatus.new('shop', 'copyshop', :primary),
364
+ TagRenderingStatus.new('shop', 'cosmetics', :primary),
365
+ TagRenderingStatus.new('shop', 'craft', :primary),
366
+ TagRenderingStatus.new('shop', 'curtain', :primary),
367
+ TagRenderingStatus.new('shop', 'dairy', :primary),
368
+ TagRenderingStatus.new('shop', 'deli', :primary),
369
+ TagRenderingStatus.new('shop', 'delicatessen', :primary),
370
+ TagRenderingStatus.new('shop', 'department_store', :primary),
371
+ TagRenderingStatus.new('shop', 'discount', :primary),
372
+ TagRenderingStatus.new('shop', 'dive', :primary),
373
+ TagRenderingStatus.new('shop', 'doityourself', :primary),
374
+ TagRenderingStatus.new('shop', 'dry_cleaning', :primary),
375
+ TagRenderingStatus.new('shop', 'e-cigarette', :primary),
376
+ TagRenderingStatus.new('shop', 'electrical', :primary),
377
+ TagRenderingStatus.new('shop', 'electronics', :primary),
378
+ TagRenderingStatus.new('shop', 'energy', :primary),
379
+ TagRenderingStatus.new('shop', 'erotic', :primary),
380
+ TagRenderingStatus.new('shop', 'estate_agent', :primary),
381
+ TagRenderingStatus.new('shop', 'fabric', :primary),
382
+ TagRenderingStatus.new('shop', 'farm', :primary),
383
+ TagRenderingStatus.new('shop', 'fashion', :primary),
384
+ TagRenderingStatus.new('shop', 'fish', :primary),
385
+ TagRenderingStatus.new('shop', 'fishing', :primary),
386
+ TagRenderingStatus.new('shop', 'fishmonger', :primary),
387
+ TagRenderingStatus.new('shop', 'flooring', :primary),
388
+ TagRenderingStatus.new('shop', 'florist', :primary),
389
+ TagRenderingStatus.new('shop', 'food', :primary),
390
+ TagRenderingStatus.new('shop', 'frame', :primary),
391
+ TagRenderingStatus.new('shop', 'frozen_food', :primary),
392
+ TagRenderingStatus.new('shop', 'funeral_directors', :primary),
393
+ TagRenderingStatus.new('shop', 'furnace', :primary),
394
+ TagRenderingStatus.new('shop', 'furniture', :primary),
395
+ TagRenderingStatus.new('shop', 'gallery', :primary),
396
+ TagRenderingStatus.new('shop', 'gambling', :primary),
397
+ TagRenderingStatus.new('shop', 'games', :primary),
398
+ TagRenderingStatus.new('shop', 'garden_centre', :primary),
399
+ TagRenderingStatus.new('shop', 'gas', :primary),
400
+ TagRenderingStatus.new('shop', 'general', :primary),
401
+ TagRenderingStatus.new('shop', 'gift', :primary),
402
+ TagRenderingStatus.new('shop', 'glaziery', :primary),
403
+ TagRenderingStatus.new('shop', 'greengrocer', :primary),
404
+ TagRenderingStatus.new('shop', 'grocery', :primary),
405
+ TagRenderingStatus.new('shop', 'hairdresser', :primary),
406
+ TagRenderingStatus.new('shop', 'hardware', :primary),
407
+ TagRenderingStatus.new('shop', 'health', :primary),
408
+ TagRenderingStatus.new('shop', 'health_food', :primary),
409
+ TagRenderingStatus.new('shop', 'hearing_aids', :primary),
410
+ TagRenderingStatus.new('shop', 'herbalist', :primary),
411
+ TagRenderingStatus.new('shop', 'hifi', :primary),
412
+ TagRenderingStatus.new('shop', 'hobby', :primary),
413
+ TagRenderingStatus.new('shop', 'household', :primary),
414
+ TagRenderingStatus.new('shop', 'houseware', :primary),
415
+ TagRenderingStatus.new('shop', 'hunting', :primary),
416
+ TagRenderingStatus.new('shop', 'ice_cream', :primary),
417
+ TagRenderingStatus.new('shop', 'insurance', :primary),
418
+ TagRenderingStatus.new('shop', 'interior_decoration', :primary),
419
+ TagRenderingStatus.new('shop', 'jewellery', :primary),
420
+ TagRenderingStatus.new('shop', 'jewelry', :primary),
421
+ TagRenderingStatus.new('shop', 'kiosk', :primary),
422
+ TagRenderingStatus.new('shop', 'kitchen', :primary),
423
+ TagRenderingStatus.new('shop', 'laundry', :primary),
424
+ TagRenderingStatus.new('shop', 'leather', :primary),
425
+ TagRenderingStatus.new('shop', 'lighting', :primary),
426
+ TagRenderingStatus.new('shop', 'locksmith', :primary),
427
+ TagRenderingStatus.new('shop', 'lottery', :primary),
428
+ TagRenderingStatus.new('shop', 'mall', :composite, {'name'=>'a'}),
429
+ TagRenderingStatus.new('shop', 'market', :primary),
430
+ TagRenderingStatus.new('shop', 'massage', :primary),
431
+ TagRenderingStatus.new('shop', 'medical', :primary),
432
+ TagRenderingStatus.new('shop', 'medical_supply', :primary),
433
+ TagRenderingStatus.new('shop', 'mobile_phone', :primary),
434
+ TagRenderingStatus.new('shop', 'money_lender', :primary),
435
+ TagRenderingStatus.new('shop', 'motorcycle', :primary),
436
+ TagRenderingStatus.new('shop', 'motorcycle_repair', :primary),
437
+ TagRenderingStatus.new('shop', 'music', :primary),
438
+ TagRenderingStatus.new('shop', 'musical_instrument', :primary),
439
+ TagRenderingStatus.new('shop', 'newsagent', :primary),
440
+ TagRenderingStatus.new('shop', 'office_supplies', :primary),
441
+ TagRenderingStatus.new('shop', 'optician', :primary),
442
+ TagRenderingStatus.new('shop', 'organic', :primary),
443
+ TagRenderingStatus.new('shop', 'outdoor', :primary),
444
+ TagRenderingStatus.new('shop', 'paint', :primary),
445
+ TagRenderingStatus.new('shop', 'pastry', :primary),
446
+ TagRenderingStatus.new('shop', 'pawnbroker', :primary),
447
+ TagRenderingStatus.new('shop', 'perfumery', :primary),
448
+ TagRenderingStatus.new('shop', 'pet', :primary),
449
+ TagRenderingStatus.new('shop', 'pharmacy', :primary),
450
+ TagRenderingStatus.new('shop', 'phone', :primary),
451
+ TagRenderingStatus.new('shop', 'photo', :primary),
452
+ TagRenderingStatus.new('shop', 'photo_studio', :primary),
453
+ TagRenderingStatus.new('shop', 'photography', :primary),
454
+ TagRenderingStatus.new('shop', 'pottery', :primary),
455
+ TagRenderingStatus.new('shop', 'printing', :primary),
456
+ TagRenderingStatus.new('shop', 'radiotechnics', :primary),
457
+ TagRenderingStatus.new('shop', 'real_estate', :primary),
458
+ TagRenderingStatus.new('shop', 'religion', :primary),
459
+ TagRenderingStatus.new('shop', 'rental', :primary),
460
+ TagRenderingStatus.new('shop', 'salon', :primary),
461
+ TagRenderingStatus.new('shop', 'scuba_diving', :primary),
462
+ TagRenderingStatus.new('shop', 'seafood', :primary),
463
+ TagRenderingStatus.new('shop', 'second_hand', :primary),
464
+ TagRenderingStatus.new('shop', 'sewing', :primary),
465
+ TagRenderingStatus.new('shop', 'shoe_repair', :primary),
466
+ TagRenderingStatus.new('shop', 'shoes', :primary),
467
+ TagRenderingStatus.new('shop', 'shopping_centre', :primary),
468
+ TagRenderingStatus.new('shop', 'solarium', :primary),
469
+ TagRenderingStatus.new('shop', 'souvenir', :primary),
470
+ TagRenderingStatus.new('shop', 'sports', :primary),
471
+ TagRenderingStatus.new('shop', 'stationery', :primary),
472
+ TagRenderingStatus.new('shop', 'supermarket', :primary),
473
+ TagRenderingStatus.new('shop', 'tailor', :primary),
474
+ TagRenderingStatus.new('shop', 'tanning', :primary),
475
+ TagRenderingStatus.new('shop', 'tattoo', :primary),
476
+ TagRenderingStatus.new('shop', 'tea', :primary),
477
+ TagRenderingStatus.new('shop', 'ticket', :primary),
478
+ TagRenderingStatus.new('shop', 'tiles', :primary),
479
+ TagRenderingStatus.new('shop', 'tobacco', :primary),
480
+ TagRenderingStatus.new('shop', 'toys', :primary),
481
+ TagRenderingStatus.new('shop', 'trade', :primary),
482
+ TagRenderingStatus.new('shop', 'travel_agency', :primary),
483
+ TagRenderingStatus.new('shop', 'tyres', :primary),
484
+ TagRenderingStatus.new('shop', 'vacuum_cleaner', :primary),
485
+ TagRenderingStatus.new('shop', 'variety_store', :primary),
486
+ TagRenderingStatus.new('shop', 'video', :primary),
487
+ TagRenderingStatus.new('shop', 'video_games', :primary),
488
+ TagRenderingStatus.new('shop', 'watches', :primary),
489
+ TagRenderingStatus.new('shop', 'wholesale', :primary),
490
+ TagRenderingStatus.new('shop', 'wine', :primary),
491
+ TagRenderingStatus.new('shop', 'winery', :primary),
492
+ TagRenderingStatus.new('shop', 'yes', :primary),
493
+ TagRenderingStatus.new('tourism', 'alpine_hut', :primary),
494
+ TagRenderingStatus.new('tourism', 'attraction', :primary),
495
+ TagRenderingStatus.new('tourism', 'camp_site', :primary),
496
+ TagRenderingStatus.new('tourism', 'caravan_site', :primary),
497
+ TagRenderingStatus.new('tourism', 'chalet', :primary),
498
+ TagRenderingStatus.new('tourism', 'guest_house', :primary),
499
+ TagRenderingStatus.new('tourism', 'hostel', :primary),
500
+ TagRenderingStatus.new('tourism', 'hotel', :primary),
501
+ TagRenderingStatus.new('tourism', 'information', :primary),
502
+ TagRenderingStatus.new('tourism', 'motel', :primary),
503
+ TagRenderingStatus.new('tourism', 'museum', :primary),
504
+ TagRenderingStatus.new('tourism', 'picnic_site', :primary),
505
+ TagRenderingStatus.new('tourism', 'theme_park', :primary),
506
+ TagRenderingStatus.new('tourism', 'viewpoint', :primary),
507
+ TagRenderingStatus.new('tourism', 'zoo', :primary),
508
+ TagRenderingStatus.new('tracktype', 'grade1', :composite, {'highway' => 'track'}),
509
+ TagRenderingStatus.new('tracktype', 'grade2', :composite, {'highway' => 'track'}),
510
+ TagRenderingStatus.new('tracktype', 'grade3', :composite, {'highway' => 'track'}),
511
+ TagRenderingStatus.new('tracktype', 'grade4', :composite, {'highway' => 'track'}),
512
+ TagRenderingStatus.new('tracktype', 'grade5', :composite, {'highway' => 'track'}),
513
+ TagRenderingStatus.new('tunnel', 'building_passage', :composite, {'highway' => 'service'}),
514
+ TagRenderingStatus.new('tunnel', 'culvert', :composite, {'waterway'=>'river'}),
515
+ TagRenderingStatus.new('tunnel', 'yes', :composite, {'highway'=>'service'}),
516
+ TagRenderingStatus.new('waterway', 'canal', :primary),
517
+ TagRenderingStatus.new('waterway', 'dam', :primary),
518
+ TagRenderingStatus.new('waterway', 'derelict_canal', :primary),
519
+ TagRenderingStatus.new('waterway', 'ditch', :primary),
520
+ TagRenderingStatus.new('waterway', 'dock', :primary),
521
+ TagRenderingStatus.new('waterway', 'drain', :primary),
522
+ TagRenderingStatus.new('waterway', 'lock_gate', :primary),
523
+ TagRenderingStatus.new('waterway', 'river', :primary),
524
+ TagRenderingStatus.new('waterway', 'riverbank', :primary),
525
+ TagRenderingStatus.new('waterway', 'stream', :primary),
526
+ TagRenderingStatus.new('waterway', 'wadi', :primary),
527
+ TagRenderingStatus.new('waterway', 'weir', :primary),
528
+ ]
529
+ end
530
+
531
+ def self.get_composite_sets
532
+ return [
533
+ {'name' => 'a'}, #place=city...
534
+ {'highway' => 'service'}, #access, ref, bridge, tunnel, service=parking_aisle...
535
+ {'railway' => 'rail'}, #service=siding
536
+ {'boundary' => 'administrative'}, #admin_level
537
+ {'admin_level' => '2'}, #boundary=administrative
538
+ {'natural' => 'peak'}, #ele=*
539
+ {'ref' => '3'}, #aeroway=gate
540
+ {'aeroway' => 'gate'}, #ref=*
541
+ {'amenity' => 'place_of_worship'}, #religion=christian
542
+ {'amenity' => 'place_of_worship', 'religion' => 'christian'}, #denomination=jehovahs_witness
543
+ {'waterway' => 'river'}, #bridge=aqueduct, tunnel=culvert, intermittent=yes
544
+ {'power' => 'generator'}, #power_source=wind
545
+ {'highway' => 'path'}, #bicycle=designated
546
+ {'highway' => 'construction'}, #construction=motorway...
547
+ {'highway' => 'track'}, #tracktype=grade1...
548
+ {'amenity' => 'parking'}, #access=*...
549
+ #{'barrier' => 'hedge'}, #area=yes
550
+ ]
551
+ end
552
+ end
553
+ end