def init(self, logger): Plugin.init(self, logger) self.errors[2070] = {"item": 2070, "level": 2, "tag": ["tag", "fix:chair"], "desc": T_(u"Missing tag by cooccurrence") } bdd = update_cache("http://taginfo.openstreetmap.org/download/taginfo-db.db.bz2", 30, bz2_decompress=True) if not os.path.exists(bdd): self.info = {} for type in ['nodes', 'ways', 'relations']: self.info[type] = {} return # Taginfo wiki extract database con = sqlite3.connect(bdd) with con: cur = con.cursor() cur.execute(sql01) self.info = {} for type in ['nodes', 'ways', 'relations']: cur.execute(sql02 % {'type':'nodes'}) rows = cur.fetchall() info = {} for row in rows: if row[1] in info: info[row[1]].append(row) else: info[row[1]] = [row] self.info[type] = info
def init(self, logger): Plugin.init(self, logger) self.errors[703] = { "item": 5010, "level": 2, "tag": ["name", "fix:chair"], "desc": T_(u"Word not found in dictionary") } self.errors[704] = { "item": 5010, "level": 1, "tag": ["value", "fix:chair"], "desc": T_(u"Encoding problem") } self.DictKnownWords = [""] self.DictCorrections = {} self.DictUnknownWords = [] self.DictCommonWords = [""] self.DictEncoding = {} self.apostrophe = None self.init_dictionaries() # Inconsistencies: words and dict and bad dict #self.LogInformation(u"Mot(s) à corriger et à accepter") #for k in self.DictCorrectionsK: # if k in self.DictKnownWords: # self.DictKnownWords.remove(k) # self.LogInformation(u" " + k) # Inconsistencies: #self.LogInformation(u"Correction(s) absentes du dictionnaire") #for k in self.DictCorrectionsK: # for v in self.DictCorrections[k].split("|"): # if v not in self.DictKnownWords: # self.LogInformation(u" " + k + " => " + self.DictCorrections[k]) # self.DictCorrectionsK.remove(k) # self.DictCorrections.pop(k) # break self.DictKnownWords = set(self.DictKnownWords) self.DictUnknownWords = set(self.DictUnknownWords)
def init(self, logger): Plugin.init(self, logger) self.errors[30310] = { "item": 3031, "level": 2, "tag": ["value", "wikipedia", "fix:chair"], "desc": T_(u"Not a Wikipedia URL"), } self.errors[30311] = { "item": 3031, "level": 2, "tag": ["value", "wikipedia", "fix:chair"], "desc": T_(u"Wikipedia URL instead of article title"), } self.errors[30312] = { "item": 3031, "level": 2, "tag": ["value", "wikipedia", "fix:chair"], "desc": T_(u"Missing Wikipedia language before article title"), } self.errors[30313] = { "item": 3031, "level": 2, "tag": ["value", "wikipedia", "fix:chair"], "desc": T_(u"Use human Wikipedia page title"), } self.errors[30314] = { "item": 3031, "level": 2, "tag": ["value", "wikipedia", "fix:chair"], "desc": T_(u"Missing primary Wikipedia tag"), } self.errors[30315] = { "item": 3031, "level": 2, "tag": ["value", "wikipedia", "fix:chair"], "desc": T_(u"Invalid wikipedia suffix"), } self.errors[30316] = { "item": 3031, "level": 2, "tag": ["value", "wikipedia", "fix:chair"], "desc": T_(u"Duplicate wikipedia tag as suffix and prefix"), } self.errors[30317] = { "item": 3031, "level": 2, "tag": ["value", "wikipedia", "fix:chair"], "desc": T_(u"Same wikipedia topic on other language"), } import re self.wiki_regexp = re.compile(u"(https?://)?([^\.]+)\.wikipedia.+/wiki/(.+)") self.lang_regexp = re.compile(u"[-a-z]+:.*") self.lang_restriction_regexp = re.compile(u"^[a-z]{2}$") self.Language = self.father.config.options.get("language") if not isinstance(self.Language, basestring): self.Language = None
def init(self, logger): Plugin.init(self, logger) self.Language = self.father.config.options.get("language") if not self.Language: # no language return False elif isinstance(self.Language, list): # more than one language return False # Checked by Name_Multilingual self.errors[50601] = self.def_class( item=5060, level=1, tags=['name', 'fix:chair'], title=T_('Default and local language name not the same')) self.errors[50602] = self.def_class( item=5060, level=1, tags=['name', 'fix:chair'], title=T_('Local language name without default name')) self.errors[50603] = self.def_class( item=5060, level=1, tags=['name', 'fix:chair'], title=T_('Language name without default name')) self.Language = self.father.config.options.get("language").split( '_')[0] self.LocalName = re.compile("^name:[a-z][a-z](_.*$|$)")
def init(self, logger): Plugin.init(self, logger) self.Language = self.father.config.options.get("language") if not self.Language: # no language return False if not isinstance(self.Language, basestring) and len(self.Language) != 1: # more than one language return False # Checked by Name_Multilingual if not isinstance(self.Language, basestring): self.Language = None self.errors[50601] = { "item": 5060, "level": 1, "tag": ["name", "fix:chair"], "desc": T_(u"Default and local language name not the same") } self.errors[50602] = { "item": 5060, "level": 1, "tag": ["name", "fix:chair"], "desc": T_(u"Local language name without default name") } self.errors[50603] = { "item": 5060, "level": 1, "tag": ["name", "fix:chair"], "desc": T_(u"Language name without default name") } self.Language = self.father.config.options.get("language") self.LocalName = re.compile("^name:[a-z][a-z](_.*$|$)")
def init(self, logger): Plugin.init(self, logger) self.errors[3090] = { "item": 3090, "level": 3, "tag": ["value", "fix:chair"], "desc": T_(u"Bad date format") } self.tag_date = [ "date", "start_date", "end_date", "paved:date", "date_closed", "built_date", "opening_date", "check_date", "open_date", "construction:date", "temporary:date_on", # Construction "mhs:inscription_date", # Heritage ] self.default_date = datetime.datetime(9999, 12, 1) self.Year = re.compile(u"^[12][0-9][0-9][0-9]$") self.Day1 = re.compile(u"^[12][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$") self.Day2 = re.compile(u"^[0-9][0-9]/[0-9][0-9]/[12][0-9][0-9][0-9]$") self.Aprox = re.compile( u"^(?:early|mid|late|before|after|spring|summer|autumn|winter) [^ ]+" )
def init(self, logger): Plugin.init(self, logger) self.errors[11701] = { "item": 1170, "level": 2, "tag": ["relation", "multipolygon", "fix:chair"], "desc": T_(u"Inadequate role for multipolygon") } self.errors[11702] = { "item": 1170, "level": 2, "tag": ["relation", "multipolygon", "fix:chair"], "desc": T_(u"Inadequate member for multipolygon") } self.errors[11703] = { "item": 1170, "level": 1, "tag": ["relation", "multipolygon", "fix:imagery"], "desc": T_(u"Missing outer role for multipolygon") } self.errors[11704] = { "item": 1170, "level": 3, "tag": ["relation", "multipolygon", "fix:chair"], "desc": T_(u"This multipolygon is a simple polygon") }
def init(self, logger): Plugin.init(self, logger) tags = capture_tags = {} self.errors[50109001] = {'item': 5010, 'level': 2, 'tag': mapcss.list_(u'name', u'fix:chair'), 'desc': mapcss.tr(u'Arabic letter detected in Farsi name')} self.re_4234bf3b = re.compile(r'ك') self.re_5eeade1c = re.compile(r'ي')
def init(self, logger): Plugin.init(self, logger) self.errors[3140] = {"item": 3140, "level": 2, "tag": ["tag"], "desc": {"en": u"Object taggin type", "fr": u"Type d'objet pour un tag"} } # Taginfo wiki extract database # http://taginfo.openstreetmap.org/download/taginfo-wiki.db.bz2 con = lite.connect('taginfo-wiki.db') with con: cur = con.cursor() cur.execute("select tag, on_node, on_way, on_area, on_relation from wikipages where lang='en' and (on_node or on_way or on_area or on_relation)") rows = cur.fetchall() self.tag_supported = set() self.tag_node = set() self.tag_way = set() self.tag_area = set() self.tag_relation = set() for row in rows: if not "=" in row[0]: self.tag_supported.add(row[0]) if row[1]: self.tag_node.add(row[0]) if row[2]: self.tag_way.add(row[0]) if row[3]: self.tag_area.add(row[0]) if row[4]: self.tag_relation.add(row[0])
def init(self, logger): Plugin.init(self, logger) self.errors[702] = { "item": 5020, "level": 2, "tag": ["name", "fix:chair"], "desc": T_(u"Badly written way type"), } self.ReTests = {} # Captial at start already checked by Toponymie plugin self.ReTests[(0, u"Allée")] = re.compile(u"^([A][Ll][Ll]?[EÉée][Ee]?|[Aa][Ll][Ll]\.) .*$") self.ReTests[(0, u"Allées")] = re.compile(u"^([A][Ll][Ll]?[EÉée][Ee]?[sS]) .*$") self.ReTests[(1, u"Boulevard")] = re.compile(u"^([B]([Oo][Uu][Ll][Ll]?[Ee]?)?[Vv]?([Aa][Rr])?[Dd]\.?) .*$") self.ReTests[(2, u"Avenue")] = self.generator(u"Av|enue") self.ReTests[(4, u"Chemin")] = self.generator(u"Che|min") self.ReTests[(5, u"Route")] = re.compile(u"^([R]([Oo][Uu])?[Tt][Ee]?\.?) .*$") self.ReTests[(6, u"Esplanade")] = re.compile(u"^([EÉ][Ss][Pp][Ll][Aa][Nn][Aa][Dd][Ee]) .*$") self.ReTests[(7, u"Rue")] = self.generator(u"R|ue") self.ReTests[(8, u"Giratoire")] = re.compile(u"^([G][Ii][Rr][Aa][Tt][Oo][Ii][Rr][Ee]) .*$") self.ReTests[(9, u"Rond-Point")] = re.compile(u"^([R][Oo][Nn][Dd]-[p][Oo][Ii][Nn][Tt]) .*$") self.ReTests[(9, u"Rondpoint")] = re.compile(u"^([R][Oo][Nn][Dd][Pp][Oo][Ii][Nn][Tt]) .*$") self.ReTests[(10, u"Carrefour")] = re.compile(u"^([C][Aa][Rr][Rr][Ee][Ff][Oo][Uu][Rr]) .*$") self.ReTests[(11, u"Place")] = self.generator(u"Pl|ace") self.ReTests[(12, u"Impasse")] = self.generator(u"Imp|asse") self.ReTests[(13, u"Quai")] = self.generator(u"Qu|ai") self.ReTests[(14, u"Square")] = self.generator(u"Sq|uare") self.ReTests = self.ReTests.items()
def init(self, logger): Plugin.init(self, logger) self.errors[3110] = {"item": 3110, "level": 3, "tag": ["fixme", "fix:chair"], "desc": T_(u"Possible improvement for note or comment tag") } self.FixmeFull = ( "fix me", "grosso modo", "note de memoire", ) self.FixmeWord = ( "?", "accurate", "approximatif", "approximation", "approximativement", "attendre", "bad", "check", "checkme", "completer", "corriger", "crappy", "draft", "effacer", "estimation", "exact", "gourre", "incomplete", "renderers", "rendering", "semblant", "semble", "tag", "tagged", "tagguer", "todo", "uncertain", "verified", "verifier", "wip", ) self.Opening_hours = ( "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche", "janvier", "fevrier", "mars", "avril", "mai", "juin", "juillet", "aout", "septembre", "octobre", "novembre", "decembre", ) self.Destruction = ( "ferme", "fermee", "ancien", "ancienne", "brule", "brulee", "burn", "closed", "declasse", "declassee", "demoli", "demolished", "demolition", "destroyed", "detruit", "no_longer", "rase", "rasee", ) self.Construction = ( "construction", "travaux", "ouvert", "ouverture") self.TagFull = ( "arret de bus", "http://", "maison de retraite", "reserve naturelle", "salle des fetes", "voies de service", "zone 30", ) self.TagWord = ( "football", "basket", "bassin", "canal", "cyclable", "ecluse", "ehpad", "entree", "etang", "garages", "gare", "gendarmerie", "gynmase", "halles", "handball", "hangar", "jardin", "piste", "plot", "prairie", "prive", "ruin", "ruine", "sortie", "tel", "toilettes", "transformateur", "verger", "volley", ) self.Hours = re.compile("[0-9]{1,2}h") self.Date = re.compile("[0-9]{4,8}|(?:(?:[0-9]{1,2}/){2}/[0-9]{2,4})") self.Split = re.compile('[- _\(\),.:/''"+!;<>=\[\]]')
def init(self, logger): Plugin.init(self, logger) self.errors[3091] = { "item": 3091, "level": 2, "tag": ["value", "fix:chair"], "desc": T_(u"Numerical value") } self.tag_number = ["height", "maxheight", "maxheight:physical", "width", "maxwidth", "length", "maxlength", "maxweight", "maxspeed", "population", "admin_level", "ele"] self.Number = re.compile(u"^((?:[0-9]+(?:[.][0-9]+)?)|(?:[.][0-9]+))(?: ?(?:m|ft|cm|km|lbs|tons|t|T|mph|knots)|'(?:[0-9]*(?:[.][0-9]+)?\")?|\")?$") self.MaxspeedExtraValue = ["none", "signals", "national", "no", "unposted", "walk", "urban", "variable"] self.MaxspeedClassValue = re.compile(u'^[A-Z]*:.*$')
def init(self, logger): Plugin.init(self, logger) self.errors[3070] = self.def_class(item = 3070, level = 2, tags = ['value', 'fix:chair'], title = T_('Multiple values'), detail = T_( '''The tag contains multiple values.'''), fix = T_( '''Check the accuracy of the values, if necessary, delete the obsolete values.''')) self.SimpleValuedTag = set(( 'addr:street', 'admin_level', 'amenity', 'attraction', 'bicycle', 'building', 'cycleway', 'ele', 'est_width', 'foot', 'highway', 'landuse', 'lanes', 'layer', 'left:city', 'left:country', 'left:departement', 'left:village', 'leisure', 'maxspeed', 'motorcar', 'mtb:scale', 'name', 'natural', 'oneway', 'power', 'railway', 'right:city', 'right:country', 'right:departement', 'right:village', 'smoothness', 'surface', 'tracktype', 'trail_visibility', 'type', 'waterway', 'width', 'wikipedia', 'wires', 'wood', ))
def init(self, logger): Plugin.init(self, logger) self.errors[30326] = { "item": 3032, "level": 1, "tag": ["tag", "fix:chair"], "desc": T_(u"Watch multiple tags") } import re self.Punta = re.compile(u"punta .*", re.IGNORECASE) self.Panaderia = re.compile(u"panader.a (.*)", re.IGNORECASE)
def init(self, logger): Plugin.init(self, logger) self.errors[32001] = { "item": 3200, "level": 3, "tag": ["tag", "fix:chair"], "desc": T_(u"Bad usage of area=yes. Object is already an area by nature") } self.errors[32002] = { "item": 3200, "level": 3, "tag": ["tag", "fix:chair"], "desc": T_(u"area=yes on object without kind") } self.errors[32003] = { "item": 3200, "level": 3, "tag": ["tag", "fix:chair"], "desc": T_(u"Bad usage of area=no. Object must be a surface") } self.area_yes_good = set(('aerialway', 'aeroway', 'amenity', 'barrier', 'highway', 'historic', 'leisure', 'man_made', 'military', 'power', 'public_transport', 'sport', 'tourism', 'waterway')) self.area_yes_bad = set(('boundary', 'building', 'craft', 'geological', 'landuse', 'natural', 'office', 'place', 'shop', 'indoor'))
def init(self, logger): Plugin.init(self, logger) self.errors[3120] = {"item": 3120, "level": 3, "tag": ["natural", "fix:imagery"], "desc": T_(u"Tree tagging") } self.Tree = {} self.liste_des_arbres_fruitiers() self.liste_des_essences_europennes()
def init(self, logger): Plugin.init(self, logger) self.errors[30320] = { "item": 3032, "level": 1, "tag": ["tag", "highway", "fix:chair"], "desc": T_(u"Watch multiple tags") } self.errors[30323] = { "item": 3032, "level": 3, "tag": ["tag", "fix:chair"], "desc": T_(u"Watch multiple tags") } self.errors[30327] = { "item": 3032, "level": 2, "tag": ["tag", "fix:chair"], "desc": T_(u"Waterway with level") } self.errors[20800] = { "item": 2080, "level": 1, "tag": ["tag", "highway", "roundabout", "fix:chair"], "desc": T_(u"Tag highway missing on junction") } self.errors[20801] = { "item": 2080, "level": 1, "tag": ["tag", "highway", "fix:chair"], "desc": T_(u"Tag highway missing on oneway") } self.errors[20301] = { "item": 2030, "level": 1, "tag": ["tag", "highway", "cycleway", "fix:survey"], "desc": T_(u"Opposite cycleway without oneway") } self.errors[71301] = { "item": 7130, "level": 3, "tag": ["tag", "highway", "maxheight", "fix:survey"], "desc": T_(u"Missing maxheight tag") } self.errors[21101] = { "item": 2110, "level": 3, "tag": ["tag"], "desc": T_(u"Missing object kind") } self.errors[1050] = { "item": 1050, "level": 1, "tag": ["highway", "roundabout", "fix:chair"], "desc": T_(u"Reverse roundabout") } self.errors[40201] = { "item": 4020, "level": 1, "tag": ["highway", "roundabout"], "desc": T_(u"Roundabout as area") } self.errors[21201] = { "item": 2120, "level": 3, "tag": ["indoor"], "desc": T_(u"Level or repeat_on tag missing") } self.errors[21202] = { "item": 2120, "level": 3, "tag": ["indoor"], "desc": T_(u"Indoor or buildingpart tag missing") } self.errors[20802] = { "item": 2080, "level": 2, "tag": ["highway"], "desc": T_(u"Missing tag ref for emergency access point") } # self.errors[70401] = { "item": 7040, "level": 2, "tag": ["tag", "power", "fix:chair"], "desc": T_(u"Bad power line kind") } self.errors[32200] = { "item": 3220, "level": 2, "tag": ["highway", "fix:chair"], "desc": T_(u"access=yes|permissive allow all transport modes") } self.errors[32201] = { "item": 3220, "level": 2, "tag": ["highway", "fix:chair"], "desc": T_(u"access=yes|permissive allow all transport modes") } self.driving_side_right = not(self.father.config.options.get("driving_side") == "left") self.driving_direction = "anticlockwise" if self.driving_side_right else "clockwise" name_parent = [] for i in ('type', 'aerialway', 'aeroway', 'amenity', 'barrier', 'boundary', 'building', 'craft', 'entrance', 'emergency', 'geological', 'highway', 'historic', 'landuse', 'leisure', 'man_made', 'military', 'natural', 'office', 'place', 'power', 'public_transport', 'railway', 'route', 'shop', 'sport', 'tourism', 'waterway', 'mountain_pass', 'traffic_sign', 'mountain_pass', 'golf', 'piste:type', 'junction', 'healthcare', 'health_facility:type', 'indoor'): name_parent.append(i) name_parent.append("disused:" + i) name_parent.append("abandoned:" + i) self.name_parent = set(name_parent)
def init(self, logger): Plugin.init(self, logger) if self.father.config.options.get("project") != 'openstreetmap': return False self.errors[31901] = { "item": 3190, "level": 3, "tag": ["postcode", "fix:chair"], "desc": T_(u"Invalid postcode") } self.Country = None if self.father.config.options.get("country"): self.Country = self.father.config.options.get("country") self.CountryPostcodeArea = None self.CountryPostcodeStreet = None if not self.Country or self.Country == 'GB': # Specific plugin for GB return postcode = self.list_postcode() if self.Country in postcode: if 'area' in postcode[self.Country] and postcode[ self.Country]['area'] is not None: self.CountryPostcodeArea = re.compile( postcode[self.Country]['area']) if 'street' in postcode[self.Country] and postcode[ self.Country]['street'] is not None: self.CountryPostcodeStreet = re.compile( postcode[self.Country]['street']) elif 'area' in postcode[self.Country] and postcode[ self.Country]['area'] is not None: self.CountryPostcodeStreet = self.CountryPostcodeArea
def init(self, logger): Plugin.init(self, logger) tags = capture_tags = {} self.errors[9007001] = {'item': 9007, 'level': 3, 'tag': ["tag", "relation"], 'desc': mapcss.tr(u'missing tag')} self.errors[9007002] = {'item': 9007, 'level': 2, 'tag': ["tag", "relation"], 'desc': mapcss.tr(u'relation without type')} self.re_67b11051 = re.compile(r'^restriction')
def init(self, logger): Plugin.init(self, logger) self.errors[50604] = { "item": 5060, "level": 1, "tag": ["name", "fix:chair"], "desc": T_(u"Default and local language name not the same") } self.errors[50605] = { "item": 5060, "level": 1, "tag": ["name", "fix:chair"], "desc": T_(u"Local language name without default name") } self.errors[50606] = { "item": 5060, "level": 1, "tag": ["name", "fix:chair"], "desc": T_(u"Language name without default name") } self.LocalName = re.compile("^name:[a-z][a-z](_.*$|$)")
def init(self, logger): Plugin.init(self, logger) if self.father.config.options.get("project") != 'openstreetmap': return False self.errors[706] = { "item": 3020, "level": 1, "tag": ["source", "fix:chair"], "desc": T_(u"Illegal or incomplete source tag") } self.errors[707] = { "item": 2040, "level": 3, "tag": ["source", "fix:chair"], "desc": T_(u"Missing source tag") } self.Country = self.father.config.options.get("country")
def init(self, logger): Plugin.init(self, logger) tags = capture_tags = {} self.errors[9010001] = {'item': 9010, 'level': 3, 'tag': ["tag"], 'desc': mapcss.tr(u'unnecessary tag')} self.errors[9010002] = {'item': 9010, 'level': 3, 'tag': ["tag"], 'desc': mapcss.tr(u'{0} makes no sense', u'{0.tag')} self.re_3ad9e1f5 = re.compile(r'^(motorway|motorway_link|trunk|trunk_link|primary|primary_link|secondary|secondary_link|tertiary|tertiary_link|unclassified|residential|service|living_street)$')
def init(self, logger): Plugin.init(self, logger) self.errors[11701] = { "item": 1170, "level": 2, "tag": ["relation", "multipolygon", "fix:chair"], "desc": T_(u"Inadequate role for multipolygon"), } self.errors[11702] = { "item": 1170, "level": 2, "tag": ["relation", "multipolygon", "fix:chair"], "desc": T_(u"Inadequate member for multipolygon"), } self.errors[11703] = { "item": 1170, "level": 1, "tag": ["relation", "multipolygon", "fix:imagery"], "desc": T_(u"Missing outer role for multipolygon"), } self.errors[11704] = { "item": 1170, "level": 3, "tag": ["relation", "multipolygon", "fix:chair"], "desc": T_(u"This multipolygon is a simple polygon"), }
def init(self, logger): Plugin.init(self, logger) doc = dict(detail=T_( '''The key of tag contains characters not recommended. The key is composed of alphanumeric characters: 0-9, a-z (preferably lower case), separator '_' or ':'. See [Any_tags_you_like#Syntactic_conventions_for_new_tags](https://wiki.openstreetmap.org/wiki/Any_tags_you_like#Syntactic_conventions_for_new_tags).''' ), fix=T_('''Check the key tag, and correct.'''), trap=T_('''There certainly false positives.''')) self.errors[3050] = self.def_class(item=3050, level=1, tags=['tag', 'fix:chair'], title=T_('Bad key'), **doc) self.errors[30502] = self.def_class(item=3050, level=3, tags=['tag', 'fix:chair'], title=T_('Bad key'), **doc) self.errors[30501] = self.def_class(item=3050, level=1, tags=['tag', 'fix:chair'], title=T_('Bad key suffix'), **doc) import re self.KeyPart1 = re.compile("^[a-zA-Z_0-9]+$") self.KeyPart1Less = re.compile("^[-.a-zA-Z_0-9]+$") self.KeyPart2 = re.compile("^[-_:a-zA-Z_0-9<>°]+$") self.exceptions = set(( "ISO3166-1", "iso3166-1", "ISO3166-2", "iso3166-2", "USGS-LULC", "aims-id", "au.gov.abs", "catmp-RoadID", "dc-gis", "drive-through", "e-road", "nhd-shp", "voltage-high", "voltage-low", "cityracks.housenum", "cityracks.installed", "cityracks.large", "cityracks.rackid", "cityracks.small", "cityracks.street", # NYC amenity=bicycle_parking "strassen-nrw", # DE import "hazmat", )) self.exceptions_whole = set(( "railway:memor2+", "railway:tbl1+", ))
def init(self, logger): Plugin.init(self, logger) self.errors[1100] = { "item": 1100, "level": 3, "tag": ["geom", "fix:imagery"], "desc": T_(u"Unclosed area") }
def init(self, logger): Plugin.init(self, logger) self.errors[303241] = { 'item': 3032, 'level': 1, 'tag': ['tag', 'highway'], 'desc': T_(u'Discordant maxspeed and source:maxspeed') }
def init(self, logger): Plugin.init(self, logger) self.errors[32502] = self.def_class( item=3250, level=3, tags=['value', 'fix:chair', 'public_transport'], title=T_('Invalid Conditional Intervals')) self._th = Main()
def init(self, logger): Plugin.init(self, logger) self.errors[804] = { "item": 2020, "level": 3, "tag": ["tag", "fix:survey"], "desc": T_(u"Missing altitude") }
def init(self, logger): Plugin.init(self, logger) self.errors[303241] = self.def_class( item=3032, level=1, tags=['tag', 'highway'], title=T_( 'Discordant maxspeed and source:maxspeed or maxspeed:type'))
def init(self, logger): Plugin.init(self, logger) self.errors[904] = { "item": 4040, "level": 1, "tag": ["name", "highway", "ref", "fix:chair"], "desc": T_(u"Highway reference in name tag") } #self.ReRefRoute = re.compile(u"^[NDCEAM] ?[0-9]+(| ?[a-z]| ?bis)$") self.ReRefRoute1 = re.compile(u"(?:^|.*[^RV] +)([RV]?([NDCEAM] ?[0-9]+[^ ]*)).*") self.ReRefRoute2 = re.compile(u".*[nN][o°] ?[0-9]+[^ ]*") self.MultipleSpace = re.compile(u" +")
def init(self, logger): Plugin.init(self, logger) self.errors[3130] = self.def_class(item=3130, level=3, tags=['name', 'tag'], title=T_('Tag name is a brand')) self.Brand = self.BRAND.split("\n")
def init(self, logger): Plugin.init(self, logger) self.errors[41001] = { "item": 4100, "level": 3, "tag": ["tag", "fix:chair"], "desc": T_(u"Misused tag in this country") }
def init(self, logger): Plugin.init(self, logger) tags = capture_tags = {} self.errors[9005001] = {'item': 9005, 'level': 3, 'tag': ["tag", "value"], 'desc': mapcss.tr(u'{0} with multiple values', capture_tags, u'{0.key}')} self.errors[9005002] = {'item': 9005, 'level': 3, 'tag': ["tag", "value"], 'desc': mapcss.tr(u'empty value in semicolon-separated \'\'{0}\'\'', capture_tags, u'{0.key}')} self.re_53db61ac = re.compile(ur'.+;(.+)?') self.re_579c7c6a = re.compile(ur'^(;.*|.*;;.*|.*;)$')
def init(self, logger): Plugin.init(self, logger) self.parking_lane = "parking:lane:" self.parking_condition = "parking:condition:" self.errors[31611] = { "item": 3161, "level": 3, "tag": ["highway", "parking", "fix:imagery"], "desc": T_(u"Bad parking:lane:[side]") } self.errors[31614] = { "item": 3161, "level": 3, "tag": ["highway", "parking", "fix:imagery"], "desc": T_(u"Too many parking:lane:[side]") } self.errors[31615] = { "item": 3161, "level": 3, "tag": ["highway", "parking", "fix:chair"], "desc": T_(u"Bad parking:lane:[side] value") } self.errors[31616] = { "item": 3161, "level": 3, "tag": ["highway", "parking", "fix:survey"], "desc": T_(u"parking:condition:[side] without parking:lane:[side] value") }
def init(self, logger): Plugin.init(self, logger) self.errors[504] = { "item": 6020, "level": 3, "tag": ["boundary", "fix:chair"], "desc": T_(u"Duplicated way in relation") }
def init(self, logger): Plugin.init(self, logger) self.errors[20601] = self.def_class( item=2060, level=3, tags=['tag', 'addr'], title=T_( 'Misusing addr:interpolation in combination with other tags'))
def init(self, logger): Plugin.init(self, logger) self.errors[3091] = { "item": 3091, "level": 2, "tag": ["value", "fix:chair"], "desc": T_(u"Numerical value") } self.tag_number = ["height", "maxheight", "maxheight:physical", "width", "maxwidth", "length", "maxlength", "maxweight", "maxspeed", "population", "admin_level", "ele"] self.Number = re.compile(u"^((?:[0-9]+(?:[.][0-9]+)?)|(?:[.][0-9]+))(?: ?(?:m|ft|cm|km|lbs|tons|t|T|mph|knots)|'(?:[0-9]*(?:[.][0-9]+)?\")?|\")?$") self.MaxspeedExtraValue = ["none", "signals", "national", "no", "unposted", "walk", "urban", "variable"] self.MaxspeedClassValue = re.compile(u'^[A-Z]*:.*$') self.MaxheightExtraValue = ["default", "below_default", "no_indications", "no_sign", "none", "unsigned"]
def init(self, logger): Plugin.init(self, logger) tags = capture_tags = {} self.errors[9005001] = {'item': 9005, 'level': 3, 'tag': ["tag", "value"], 'desc': mapcss.tr(u'{0} with multiple values', mapcss._tag_uncapture(capture_tags, u'{0.key}'))} self.errors[9005002] = {'item': 9005, 'level': 3, 'tag': ["tag", "value"], 'desc': mapcss.tr(u'empty value in semicolon-separated \'\'{0}\'\'', mapcss._tag_uncapture(capture_tags, u'{0.key}'))} self.re_53db61ac = re.compile(r'.+;(.+)?') self.re_579c7c6a = re.compile(r'^(;.*|.*;;.*|.*;)$')
def init(self, logger): Plugin.init(self, logger) self.errors[705] = { "item": 5030, "level": 1, "tag": ["name", "fix:survey"], "desc": T_(u"The name tag contains two names") } import re self.Re1 = re.compile(u"^.*;.*$") self.Re2 = re.compile(u"^.*/.*$") self.Re3 = re.compile(u"^.*\+.+$")
def init(self, logger): Plugin.init(self, logger) self.errors[903] = { "item": 5010, "level": 2, "tag": ["name", "fix:chair"], "desc": T_(u"Too many spaces") }
def init(self, logger): Plugin.init(self, logger) self.errors[41001] = self.def_class(item = 4100, level = 3, tags = ['tag', 'fix:chair'], title = T_('Misused tag in this country'), detail = T_( '''`designation=*` is a United Kingdom-specific tag.'''), fix = T_( '''Translate it to another tag or remove.'''))
def init(self, logger): Plugin.init(self, logger) self.errors[701] = { "item": 5010, "level": 1, "tag": ["name", "fix:chair"], "desc": T_(u"Badly written word") }
def init(self, logger): Plugin.init(self, logger) tags = capture_tags = {} self.errors[30911] = {'item': 3091, 'level': 2, 'tag': mapcss.list_(u'tag'), 'desc': mapcss.tr(u'Colour code should start with \'#\' followed by 3 or 6 digits')} self.re_1b3f6ace = re.compile(r'^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$') self.re_30dca0d4 = re.compile(r'^#') self.re_7d65c79d = re.compile(r'^([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$')
def init(self, logger): Plugin.init(self, logger) self.errors[12401] = { "item": 1240, "level": 2, "tag": ["geom", "fix:chair"], "desc": T_(u"Way with one node") }
def init(self, logger): if not module_PyKOpeningHours: return False Plugin.init(self, logger) self.errors[32501] = self.def_class(item=3250, level=3, tags=['value', 'fix:chair'], title=T_('Invalid Opening Hours'))
def init(self, logger): Plugin.init(self, logger) self.errors[32601] = { "item": 3260, "level": 3, "tag": ["ref", "fix:chair"], "desc": T_(u'Invalid value format of tag "ref:vatin"') }
def init(self, logger): Plugin.init(self, logger) self.errors[103] = { "item": 1010, "level": 2, "tag": ["geom", "fix:chair"], "desc": T_(u"Duplicated nodes") }
def init(self, logger): Plugin.init(self, logger) self.errors[504] = { "item": 6020, "level": 3, "tag": ["boundary", "fix:chair"], "desc": T_(u"Duplicated way in relation"), }
def init(self, logger): Plugin.init(self, logger) self.errors[101] = { "item": 4020, "level": 3, "tag": ["highway", "roundabout", "fix:chair"], "desc": T_(u"Unneeded tag on junction=roundabout") }
def init(self, logger): Plugin.init(self, logger) self.errors[102] = self.def_class(item = 4020, level = 2, tags = ['highway', 'roundabout', 'fix:chair'], title = T_('Unneeded tag on junction=roundabout'), detail = T_( '''The tags `oneway=*` and `ref=*` are not necessary on the roundabouts. The tag `name=*` must be present if this is the name of the roundabout and not a road connected, same thing for `ref=*`.'''))
def init(self, logger): Plugin.init(self, logger) self.errors[12200] = { "item": 1220, "level": 2, "tag": ["geom", "waterway", "fix:imagery"], "desc": T_(u"Closed waterway") }
def init(self, logger): Plugin.init(self, logger) self.errors[31801] = self.def_class( item=3180, level=2, tags=['relation', 'restriction'], title=T_('Useless turn restriction')) self.Country = self.father.config.options.get("country")
def init(self, logger): Plugin.init(self, logger) import re # From RFC 1738 paragraph 2.1 self.HasScheme = re.compile(r"^[a-zA-Z0-9.+-]+://") self.errors[30931] = {"item": 3093, "level": 2, "tag": ["value", "fix:chair"], "desc": T_(u"The URL contains a space")} self.errors[30932] = {"item": 3093, "level": 2, "tag": ["value", "fix:chair"], "desc": T_(u"The URL does not have a valid scheme")}
def init(self, logger): Plugin.init(self, logger) self.errors[31801] = { "item": 3180, "level": 2, "tag": ["relation", "restriction"], "desc": T_(u"Useless non u-turn restriction, it's forbidden by local law"), } self.Country = self.father.config.options.get("country")
def init(self, logger): Plugin.init(self, logger) self.errors[900] = { "item": 4030, "level": 1, "tag": ["tag", "fix:chair"], "desc": T_(u"Tag conflict") } self.CONFLICT = {} self.CONFLICT[0] = set(['aerialway', 'aeroway', 'amenity', 'highway', 'railway', 'waterway', 'landuse']) self.CONFLICT[1] = set(['aerialway', 'aeroway', 'amenity', 'highway', 'leisure', 'railway', 'natural']) self.CONFLICT[2] = set(['aerialway', 'aeroway', 'amenity', 'highway', 'leisure', 'railway', 'waterway', 'place']) self.CONFLICT[3] = set(['building', 'place']) self.CONFLICT[4] = set(['information', 'place'])
def init(self, logger): Plugin.init(self, logger) self.errors[4070] = { "item": 4070, "level": 2, "tag": ["tag", "fix:survey"], "desc": T_(u"Finished construction") } self.tag_construction = ["highway", "landuse", "building"] self.tag_date = ["opening_date", "check_date", "open_date", "construction:date", "temporary:date_on", "date_on"] self.default_date = datetime.datetime(9999, 12, 1) self.today = datetime.datetime.today() self.date_limit = datetime.datetime.today() - datetime.timedelta(days=2 * 365)
def init(self, logger): Plugin.init(self, logger) self.errors[705] = { "item": 5030, "level": 1, "tag": ["name", "fix:survey"], "desc": T_(u"The name tag contains two names") } self.NoExtra = self.father.config.options.get("country") in ('DE',) # In Thailand street added into existing street are named like "บ้านแพะแม่คือ ซอย 5/1", or in USA "County Road 39 4/10" self.streetSubNumber = self.father.config.options.get("country") in ('TH', 'VN', 'US') self.streetSubNumberRe = re.compile(u".*[0-9๐๑๒๓๔๕๖๗๘๙]/[0-9๐๑๒๓๔๕๖๗๘๙].*")
def init(self, logger): Plugin.init(self, logger) self.errors[3040] = { "item": 3040, "level": 1, "tag": ["value", "fix:chair"], "desc": T_(u"Bad value in a tag") } import re self.Values_open = re.compile("^[a-z0-9_]+( *; *[a-z0-9_]+)*$") self.check_list_open = set( ( 'abutters', 'access', 'admin_level', 'aerialway', 'aeroway', 'amenity', 'barrier', 'bicycle', 'boat', 'border_type', 'boundary', 'bridge', 'building', 'construction', 'covered', 'craft', 'crossing', 'cutting', 'disused', 'drive_in', 'drive_through', 'electrified', 'embankment', 'emergency', 'fenced', 'foot', 'ford', 'geological', 'goods', 'hgv', 'highway', 'historic', 'internet_access', 'landuse', 'lanes', 'leisure', 'man_made', 'military', 'mooring', 'motorboat', 'mountain_pass', 'natural', 'noexit', 'office', 'power', 'public_transport', 'railway', 'route', 'sac_scale', 'service', 'shop', 'smoothness', 'sport', 'surface', 'tactile_paving', 'toll', 'tourism', 'tracktype', 'traffic_calming', 'trail_visibility', 'tunnel', 'usage', 'vehicle', 'wall', 'waterway', 'wheelchair', 'wood' ) ) self.check_list_open_node = self.check_list_open self.check_list_open_way = self.check_list_open self.check_list_open_relation = self.check_list_open.copy() self.check_list_open_relation.add('type') self.exceptions_open = { "type": ( "associatedStreet", "turnlanes:lengths", "turnlanes:turns", "restriction:hgv", "restriction:caravan", "restriction:motorcar", "restriction:bus", "restriction:agricultural", "restriction:bicycle", "restriction:hazmat", "TMC" ), "service": ( "drive-through", ), "aerialway": ( "j-bar", "t-bar", ), "surface": ( "concrete:plates", "concrete:lanes", "paving_stones:20", "paving_stones:30", "paving_stones:50", "cobblestone:10", "cobblestone:20", "cobblestone:flattened"), "shop": ( "e-cigarette" ), "barrier": ( "full-height_turnstile" ), "man_made": ( "MDF" ), } self.check_list_closed = set( ( 'area', 'narrow', 'oneway', ) ) self.allow_closed = { "area": ( "yes", "no", ), "narrow": ( "yes", "no", ), "oneway": ( "yes", "no", "1", "-1", "reversible", "alternating"), }
def init(self, logger): Plugin.init(self, logger) self.errors[31601] = { "item": 3160, "level": 2, "tag": ["highway", "fix:chair"], "desc": T_(u"Bad lanes value") } self.errors[31603] = { "item": 3160, "level": 2, "tag": ["highway", "fix:chair"], "desc": T_(u"Conflict between usage of *:lanes or *:lanes:(forward|backward|both_ways)") } self.errors[31604] = { "item": 3160, "level": 2, "tag": ["highway", "fix:chair"], "desc": T_(u"Conflict between lanes number") } self.errors[31605] = { "item": 3160, "level": 2, "tag": ["highway", "fix:chair"], "desc": T_(u"Invalid usage of *:lanes:(backward|both_ways) on oneway highway") } self.errors[31606] = { "item": 3160, "level": 2, "tag": ["highway", "fix:chair"], "desc": T_(u"Unknown turn lanes value") } self.errors[31607] = { "item": 3160, "level": 2, "tag": ["highway", "fix:chair"], "desc": T_(u"Bad turn lanes order") } self.errors[31608] = { "item": 3160, "level": 2, "tag": ["highway", "fix:chair"], "desc": T_(u"Conflict between lanes number of same sufix ('', forward, backward or both_ways)") } self.errors[31609] = { "item": 3160, "level": 2, "tag": ["highway", "fix:chair"], "desc": T_(u"Bad access lanes value, should not be an integer but a restriction") } self.errors[31600] = { "item": 3160, "level": 2, "tag": ["highway", "fix:chair"], "desc": T_(u"Turn lanes merge_to_* need an aside lane on good side") }