161
161
COUNT(*) > 1
162
162
"""
163
163
164
- sql40 = """
165
- SELECT
166
- ways.id,
167
- ST_AsText(way_locate(ways.linestring)),
168
- ways.tags->'area',
169
- ways.tags->'landuse',
170
- ways.tags->'natural',
171
- ways.tags->'waterway',
172
- ways.tags->'leisure',
173
- ways.tags->'amenity',
174
- ways.tags->'building',
175
- COALESCE(ways.tags->'area', ways.tags->'landuse', ways.tags->'natural', ways.tags->'waterway', ways.tags->'leisure', ways.tags->'amenity', ways.tags->'building')
176
- FROM
177
- {0}ways AS ways
178
- LEFT JOIN relation_members ON
179
- relation_members.member_id = ways.id AND
180
- relation_members.member_type = 'W'
181
- WHERE
182
- ways.tags != ''::hstore AND
183
- (
184
- (ways.tags?'area' AND ways.tags->'area' in ('yes', 'true')) OR
185
- ways.tags?'landuse' OR
186
- (ways.tags?'natural' AND ways.tags->'natural' in ('bare_rock', 'bay', 'beach', 'fell', 'glacier', 'grassland', 'heath', 'hot_spring', 'moor', 'mud', 'rock', 'sand', 'scree', 'scrub', 'shingle', 'sinkhole', 'stone', 'water', 'wetland', 'wood') AND (NOT ways.tags?'bay' OR ways.tags->'bay' != 'fjord')) OR
187
- (ways.tags?'waterway' AND ways.tags->'waterway' in ('boatyard', 'dock', 'fuel', 'riverbank')) OR
188
- (ways.tags?'leisure' AND ways.tags->'leisure' in ('adult_gaming_centre', 'amusement_arcade', 'bandstand', 'beach_resort', 'bird_hide', 'common', 'dance', 'dog_park', 'firepit', 'fishing', 'fitness_centre', 'garden', 'golf_course', 'hackerspace', 'horse_riding', 'ice_rink', 'marina', 'miniature_golf', 'nature_reserve', 'park', 'picnic_table', 'pitch', 'playground', 'sports_centre', 'stadium', 'summer_camp', 'swimming_area', 'swimming_pool', 'water_park', 'wildlife_hide')) OR
189
- (ways.tags?'amenity' AND ways.tags->'amenity' in ('animal_boarding', 'animal_shelter', 'arts_centre', 'baby_hatch', 'bank', 'bar', 'bicycle_rental', 'bicycle_repair_station', 'biergarten', 'blood_donation', 'boat_sharing', 'brothel', 'bus_station', 'cafe', 'car_rental', 'car_sharing', 'car_wash', 'casino', 'cinema', 'clinic', 'college', 'community_centre', 'courthouse', 'coworking_space', 'crematorium', 'crypt', 'dentist', 'dive_centre', 'doctors', 'dojo', 'driving_school', 'embassy', 'fast_food', 'ferry_terminal', 'fire_station', 'firepit', 'food_court', 'fountain', 'fuel', 'gambling', 'game_feeding', 'grave_yard', 'gym', 'hospital', 'hunting_stand', 'ice_cream', 'internet_cafe', 'kindergarten', 'kneipp_water_cure', 'language_school', 'library', 'marketplace', 'motorcycle_parking', 'music_school', 'nightclub', 'nursing_home', 'parking', 'parking_space', 'pharmacy', 'place_of_worship', 'planetarium', 'police', 'post_office', 'prison', 'pub', 'public_bookcase', 'public_building', 'ranger_station', 'recycling', 'rescue_station', 'restaurant', 'sauna', 'school', 'shelter', 'shower', 'social_centre', 'social_facility', 'studio', 'swingerclub', 'taxi', 'theatre', 'toilets', 'townhall', 'university', 'veterinary', 'waste_transfer_station')) OR
190
- ways.tags?'building'
191
- ) AND
192
- ways.linestring IS NOT NULL AND
193
- NOT ways.is_polygon AND
194
- relation_members.member_id IS NULL AND
195
- -- Avoid confusing warnings for invalid polygons. Any closed way with >3 nodes that doesn't match
196
- -- is_polygon (with any of the tags above) must be an invalid polygon (which is checked elsewhere)
197
- -- Note: use array_length instead of ST_NPoints as the former includes nodes outside of the extract
198
- (NOT ST_IsClosed(ways.linestring) OR array_length(ways.nodes,1) = 3)
199
- """
200
-
201
164
class Analyser_Osmosis_Relation_Multipolygon (Analyser_Osmosis ):
202
165
203
166
def __init__ (self , config , logger = None ):
@@ -220,13 +183,6 @@ def __init__(self, config, logger = None):
220
183
detail = T_ (
221
184
'''Multipolygon does not define nature, several found on the outer role
222
185
members.''' ))
223
- self .classs_change [4 ] = self .def_class (item = 1170 , level = 1 , tags = ['relation' , 'fix:chair' , 'geom' ],
224
- title = T_ ('Should be polygon, part of multipolygon or not having area tag' ),
225
- detail = T_ (
226
- '''The nature of the way indicates that it is a surface, the way would be
227
- a polygon or a part of a multipolygon as outer role.''' ),
228
- fix = T_ (
229
- '''Close the way to make a polygon or add to a multipolygon.''' ))
230
186
231
187
self .callback10 = lambda res : {"class" :1 , "data" :[self .relation_full , self .way_full , self .way_full , self .positionAsText ]}
232
188
self .callback20 = lambda res : {"class" :2 , "subclass" :stablehash64 (res [11 ]), "data" :[self .relation_full , self .way_full , self .positionAsText ],
@@ -235,9 +191,6 @@ def __init__(self, config, logger = None):
235
191
self .callback30 = lambda res : {"class" :3 , "subclass" :1 , "data" :[self .relation_full , self .positionAsText ],
236
192
"text" : {"en" : u", " .join (map (lambda k : "{0}=({1})" .format (* k ), filter (lambda k : k [1 ], (("landuse" ,res [2 ]), ("natural" ,res [3 ]), ("waterway" ,res [4 ]), ("building" ,res [5 ])))))}
237
193
}
238
- self .callback40 = lambda res : {"class" :4 , "subclass" :stablehash64 (res [9 ]), "data" :[self .way_full , self .positionAsText ],
239
- "text" : {"en" : u", " .join (map (lambda k : "{0}={1}" .format (* k ), filter (lambda k : k [1 ], (("area" ,res [2 ]), ("landuse" ,res [3 ]), ("natural" ,res [4 ]), ("waterway" ,res [5 ]), ("leisure" ,res [6 ]), ("amenity" ,res [7 ]), ("building" ,res [8 ])))))}
240
- }
241
194
242
195
def analyser_osmosis_common (self ):
243
196
self .run (sql30 , self .callback30 )
@@ -247,7 +200,6 @@ def analyser_osmosis_full(self):
247
200
self .run (sql11 )
248
201
self .run (sql12 .format ("" , "" , "" ), self .callback10 )
249
202
self .run (sql20 .format ("" , "" ), self .callback20 )
250
- self .run (sql40 .format ("" ), self .callback40 )
251
203
252
204
def analyser_osmosis_diff (self ):
253
205
self .run (sql10 )
@@ -258,4 +210,3 @@ def analyser_osmosis_diff(self):
258
210
self .run (sql12 .format ("not_touched_" , "not_touched_" , "touched_" ), self .callback10 )
259
211
self .run (sql20 .format ("touched_" , "" ), self .callback20 )
260
212
self .run (sql20 .format ("not_touched_" , "touched_" ), self .callback20 )
261
- self .run (sql40 .format ("touched_" ), self .callback40 )
0 commit comments