Changeset b512762 in osmose-backend


Ignore:
Timestamp:
Jan 23, 2013 8:19:34 PM (7 years ago)
Author:
Jocelyn Jaubert <jocelyn.jaubert@…>
Branches:
master
Children:
7a2216e
Parents:
5c295c4 (diff), 339536c (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
git-author:
Jocelyn Jaubert <jocelyn.jaubert@…> (23/01/2013 20:18:10)
git-committer:
Jocelyn Jaubert <jocelyn.jaubert@…> (23/01/2013 20:19:34)
Message:

Merge remote-tracking branch 'frodrigo/master'

Conflicts:

osmose_config.py

Files:
11 edited

Legend:

Unmodified
Added
Removed
  • analysers/analyser_admin_level.py

    r428df30 recca6f1  
    118118                # add error to output file 
    119119                self.error_file.error(2, None, {"fr": "admin_level illisible", "en": "admin_level unreadable"}, None, None, None, { 
    120                     "position": [{"lat":str(nta["lat"]),"lon":str(nta["lon"])}], 
     120                    "position": [nta], 
    121121                    "relation": [rta] 
    122122                }) 
     
    148148 
    149149                self.error_file.error(2, None, {"fr": "admin_level illisible", "en": "admin_level unreadable"}, None, None, None, { 
    150                     "position": [{"lat":str(n["lat"]),"lon":str(n["lon"])}], 
     150                    "position": [n], 
    151151                    "way": [wta] 
    152152                }) 
     
    164164 
    165165                self.error_file.error(1, None, {"fr": "admin_level devrait être %d"%way_to_level[wid], "en": "admin_level should be %d"%way_to_level[wid]}, None, None, None, { 
    166                     "position": [{"lat":str(n["lat"]),"lon":str(n["lon"])}], 
     166                    "position": [n], 
    167167                    "way": [wta] 
    168168                }) 
  • analysers/analyser_osmbin_open_relations.py

    r8e58bf3 recca6f1  
    118118            if ndata: 
    119119                self.error_file.error(classs, None, None, None, None, None, { 
    120                     "position": [{"lat":str(ndata["lat"]),"lon":str(ndata["lon"])}], 
     120                    "position": [ndata], 
    121121                    "node": [ndata], 
    122122                    "relation": [data] 
  • analysers/analyser_osmosis_powerline.py

    radc0078 ra62221f  
    115115 
    116116sql30 = """ 
    117 DROP VIEW IF EXISTS power_line CASCADE; 
    118 CREATE VIEW power_line AS 
     117CREATE TEMP TABLE power_line AS 
     118SELECT 
     119    id, 
     120    ends(nodes) AS nid, 
     121    voltage 
     122FROM 
     123( 
    119124SELECT 
    120125    id, 
     
    127132    (tags->'power' = 'line' OR tags->'power' = 'minor_line') AND 
    128133    tags?'voltage' 
    129 ; 
    130  
    131 DROP VIEW IF EXISTS power_line_junction CASCADE; 
     134) AS d 
     135; 
     136 
    132137CREATE VIEW power_line_junction AS 
    133138SELECT 
    134     nodes.id, 
    135     nodes.geom 
    136 FROM 
    137     (SELECT voltage, ends(nodes) AS id FROM power_line) AS v 
     139    nid 
     140FROM 
     141    (SELECT nid FROM power_line GROUP BY id, nid) AS p 
     142GROUP BY 
     143    nid 
     144HAVING 
     145    COUNT(*) > 1 
     146; 
     147 
     148SELECT 
     149    DISTINCT(nid), 
     150    ST_AsText(geom) 
     151FROM 
     152    power_line_junction 
     153    NATURAL JOIN power_line 
    138154    JOIN nodes ON 
    139         v.id = nodes.id 
    140 GROUP BY 
    141     nodes.id, 
    142     nodes.geom 
    143 HAVING 
    144     COUNT(*) > 1 
    145 ; 
    146  
    147 SELECT 
    148     DISTINCT(id), 
    149     ST_AsText(geom) 
    150 FROM 
    151     power_line_junction 
    152     NATURAL JOIN (SELECT voltage, ends(nodes) AS id FROM power_line) AS v 
    153 GROUP BY 
    154     id, 
     155        power_line.nid = nodes.id 
     156GROUP BY 
     157    nid, 
    155158    voltage, 
    156159    geom 
     
    251254        self.classs_change[4] = {"item":"7040", "level": 3, "tag": ["power"], "desc":{"en":"Non power node on power way"} } 
    252255        self.classs_change[5] = {"item":"7040", "level": 3, "tag": ["power"], "desc":{"fr": "Pylône ou poteau électrique manquant", "en":"Missing power tower or pole"} } 
     256        self.callback20 = lambda res: {"class":2, "data":[self.node_full, self.positionAsText]} 
    253257        self.callback40 = lambda res: {"class":4, "data":[self.node_full, self.positionAsText]} 
    254258        self.callback50 = lambda res: {"class":5, "data":[self.way_full, self.positionAsText]} 
  • analysers/analyser_osmosis_useless.py

    rfeccd33 r339536c  
    2525sql10 = """ 
    2626SELECT 
    27     id, 
     27    nodes.id, 
    2828    relation_members.relation_id, 
    2929    ST_ASText(geom) 
    3030FROM 
    31     nodes AS nodes 
     31    {0}nodes AS nodes 
    3232    JOIN relation_members ON 
    3333        member_id = id AND 
    3434        member_type = 'N' AND 
    3535        member_role = '' 
     36    {1} 
    3637WHERE 
    37     array_length(akeys(delete(delete(delete(tags, 'created_by'), 'source'), 'note:qadastre')), 1) IS NULL 
     38    array_length(akeys(delete(delete(delete(nodes.tags, 'created_by'), 'source'), 'note:qadastre')), 1) IS NULL 
    3839; 
    3940""" 
     
    4142sql20 = """ 
    4243SELECT 
    43     id, 
     44    ways.id, 
    4445    relation_members.relation_id, 
    4546    ST_ASText(way_locate(linestring)) 
    4647FROM 
    47     ways 
     48    {0}ways AS ways 
    4849    LEFT JOIN relation_members ON 
    4950        member_id = id AND 
    5051        member_type = 'W' 
     52    {1} 
    5153WHERE 
    5254    (member_role IS NULL OR member_role = '') AND 
    53     array_length(akeys(delete(delete(delete(tags, 'created_by'), 'source'), 'note:qadastre')), 1) IS NULL 
     55    array_length(akeys(delete(delete(delete(ways.tags, 'created_by'), 'source'), 'note:qadastre')), 1) IS NULL 
    5456; 
    5557""" 
     
    5961    def __init__(self, config, logger = None): 
    6062        Analyser_Osmosis.__init__(self, config, logger) 
    61         self.classs[1] = {"item":"1140", "level": 3, "tag": [], "desc":{"fr":"Nœud sans tag ou rôle", "en":"Missing tag or role on node"} } 
    62         self.classs[2] = {"item":"1140", "level": 3, "tag": [], "desc":{"fr":"Way sans tag ou rôle", "en":"Missing tag or role on way"} } 
     63        self.classs_change[1] = {"item":"1140", "level": 3, "tag": [], "desc":{"fr":"Nœud sans tag ou rôle", "en":"Missing tag or role on node"} } 
     64        self.classs_change[2] = {"item":"1140", "level": 3, "tag": [], "desc":{"fr":"Way sans tag ou rôle", "en":"Missing tag or role on way"} } 
    6365        self.callback10 = lambda res: {"class":1, "data":[self.node_full, self.relation_full, self.positionAsText]} 
    6466        self.callback20 = lambda res: {"class":2, "data":[self.way_full, self.relation_full if res[1] else None, self.positionAsText]} 
    6567 
    66     def analyser_osmosis(self): 
    67         self.run(sql10, self.callback10) 
    68         self.run(sql20, self.callback20) 
     68    def analyser_osmosis_all(self): 
     69        self.run(sql10.format("", ""), self.callback10) 
     70        self.run(sql20.format("", ""), self.callback20) 
     71 
     72    def analyser_osmosis_touched(self): 
     73        touched_relations = """ 
     74    JOIN touched_relations AS relations ON 
     75        relation_members.relation_id = relations.id 
     76""" 
     77        self.run(sql10.format("touched_", ""), self.callback10) 
     78        self.run(sql10.format("", touched_relations), self.callback10) 
     79        self.run(sql20.format("touched_", ""), self.callback20) 
     80        self.run(sql20.format("", touched_relations), self.callback20) 
  • analysers/analyser_sax.py

    r578c09a r23107f7  
    137137        return self._reader.UserGet(UserId) 
    138138 
    139     def LinkNode(self, NodeId): 
    140         data = self.NodeGet(NodeId) 
    141         if not data: 
    142             return u"#" + str(NodeId) 
    143         lat = data[u"lat"] 
    144         lon = data[u"lon"] 
    145         l  = u"" 
    146         l += u"#" + str(NodeId) 
    147         l += u" <a href=\"http://www.openstreetmap.org/?lat="+str(lat)+"&lon="+str(lon)+"&zoom=17\">P</a>" 
    148         l += u"<a href=\"http://www.openstreetmap.org/browse/node/"+str(NodeId)+"\">B</a>" 
    149         l += u"<a href=\"http://www.openstreetmap.org/edit?lat="+str(lat)+"&lon="+str(lon)+"&zoom=17\">E</a>" 
    150         l += u"<a href=\"javascript:openJOSM("+str(lon-0.003)+", "+str(lat-0.003)+", "+str(lon+0.003)+", "+str(lat+0.003)+", 'node', "+str(NodeId)+")\">J</a>" 
    151         return l 
    152  
    153139    def ExtendData(self, data): 
    154140        if "uid" in data and not "user" in data: 
     
    157143                data["user"] = user 
    158144        return data 
     145 
    159146    ################################################################################ 
    160147    #### Logs 
     
    192179        # Enregistrement des erreurs 
    193180        if err: 
    194             lat = data[u"lat"] 
    195             lon = data[u"lon"] 
    196181            data = self.ExtendData(data) 
    197182            for e in err: 
     
    207192                        ["node"], 
    208193                        fix, 
    209                         {"position": [{"lat": str(lat), "lon": str(lon)}], "node": [data]}) 
     194                        {"position": [data], "node": [data]}) 
    210195                except: 
    211196                    print "Error on error", e, "from", err 
     
    240225            if not node: 
    241226                node = {u"lat":0, u"lon":0} 
    242             lat = node[u"lat"] 
    243             lon = node[u"lon"] 
    244227            data = self.ExtendData(data) 
    245228            for e in err: 
     
    255238                        ["way"], 
    256239                        fix, 
    257                         {"position": [{"lat": str(lat), "lon": str(lon)}], "way": [data]}) 
     240                        {"position": [node], "way": [data]}) 
    258241                except: 
    259242                    print "Error on error", e, "from", err 
     
    269252    ################################################################################ 
    270253    #### Parsage d'une relation 
     254 
     255    def locateRelation(self, data): 
     256        node = None 
     257        for memb in data[u"member"]: 
     258            if memb[u"type"] == u"node": 
     259                node = self.NodeGet(memb[u"ref"]) 
     260            elif memb[u"type"] == "way": 
     261                way = self.WayGet(memb[u"ref"]) 
     262                if way: 
     263                    node = self.NodeGet(way[u"nd"][0]) 
     264            if node: 
     265                break 
     266        if not node: 
     267            for memb in data[u"member"]: 
     268                if memb[u"type"] == u"relation": 
     269                    rel = self.RelationGet(memb[u"ref"]) 
     270                    if rel: 
     271                        node = self.locateRelation(rel) 
     272                if node: 
     273                    break 
     274        return node 
    271275 
    272276    def RelationCreate(self, data): 
     
    286290        # Enregistrement des erreurs 
    287291        if err and data[u"member"]: 
    288             node = None 
    289             for memb in data[u"member"]: 
    290                 if memb[u"type"] == u"node": 
    291                     node = self.NodeGet(memb[u"ref"]) 
    292                 elif memb[u"type"] == "way": 
    293                     way = self.WayGet(memb[u"ref"]) 
    294                     if way: 
    295                         node = self.NodeGet(way[u"nd"][0]) 
    296                 if node: 
    297                     break 
     292            node = self.locateRelation(data) 
    298293            if not node: 
    299294                node = {u"lat":0, u"lon":0} 
    300             lat = node[u"lat"] 
    301             lon = node[u"lon"] 
    302295            data = self.ExtendData(data) 
    303296            for e in err: 
     
    313306                        ["relation"], 
    314307                        fix, 
    315                         {"position": [{"lat": str(lat), "lon": str(lon)}], "relation": [data]}) 
     308                        {"position": [node], "relation": [data]}) 
    316309                except: 
    317310                    print "Error on error", e, "from", err 
     
    477470        src = sys.argv[1] 
    478471        dst = sys.argv[2] 
     472        polygon_id = None 
    479473 
    480474    # Start analyser 
  • modules/OsmoseErrorFile.py

    raf33a1b1 recca6f1  
    9797 
    9898    def position(self, args): 
    99         self.outxml.Element("location", args) 
     99        self.outxml.Element("location", {"lat":str(args["lat"]), "lon":str(args["lon"])}) 
    100100 
    101101    def delete(self, t, id): 
  • osmose_config.py

    r5c295c4 rb512762  
    4343########################################################################### 
    4444 
     45GEOFABRIK = "http://download.geofabrik.de/openstreetmap/" 
     46OSMFR = "http://download.openstreetmap.fr/extracts/" 
     47 
    4548class template_config: 
    4649 
    47     clean_at_end          = True 
     50    clean_at_end   = True 
    4851 
    4952    updt_url       = config.url_frontend_update 
     
    8083    db_schema   = None 
    8184 
    82     def __init__(self): 
    83         self.country          = None 
    84         self.polygon_id       = None  # ID of a relation for the country boundary 
     85    def __init__(self, country, polygon_id=None, analyser_options={}, download_repo=GEOFABRIK): 
     86        config[country] = self 
     87        self.country          = country 
     88        self.polygon_id       = polygon_id # ID of a relation for the country boundary 
    8589        self.download         = {} 
     90        self.download_repo    = download_repo 
    8691        self.analyser         = OrderedDict() 
    8792        self.analyser_options = {} 
     
    9398            self.db_string = None 
    9499 
    95 analysers = [ 
    96              "sax", 
    97              "osmosis_roundabout_reverse", 
    98              "osmosis_roundabout_level", 
    99              "osmosis_soundex", 
    100              "osmosis_roundabout", 
    101              "osmosis_boundary_hole", 
    102              "osmosis_geodesie", 
    103              "osmosis_building_overlaps", 
    104              "osmosis_natural_swimming-pool", 
    105              "osmosis_missing_parent_tag", 
    106              "osmosis_polygon", 
    107              "osmosis_highway_vs_building", 
    108              "osmosis_orphan_nodes_cluster", 
    109              "osmosis_powerline", 
    110              "osmosis_highway_cul-de-sac_level", 
    111              "osmosis_double_tagging", 
    112              "osmosis_associatedStreet", 
    113              "osmosis_highway_link", 
    114              "osmosis_broken_highway_level_continuity", 
    115              "osmosis_large_relation", 
    116              "osmosis_mini_farm", 
    117              "osmosis_surface_overlaps", 
    118              "osmosis_useless", 
    119              "osmosis_multipolygon", 
    120              "osmosis_boundary_intersect", 
    121              "osmosis_node_like_way", 
    122              "osmosis_boundary_administrative", 
    123              "osmosis_tag_typo", 
    124              "osmosis_way_approximate", 
    125              "osmosis_cycleway_track", 
    126              "osmosis_crossing", 
    127              "osmosis_building_shapes", 
    128              "osmosis_riverbank", 
    129              "osmosis_deadend", 
    130             ] 
    131  
    132100config = OrderedDict() 
    133101 
    134102########################################################################### 
    135103 
    136 country = "world" 
    137 config[country] = template_config() 
    138  
    139 config[country].country = "world" 
    140 config[country].analyser["osmbin_open_relations"] = "xxx" 
    141  
    142 ########################################################################### 
    143  
    144 country = "europe" 
    145 config[country] = template_config() 
    146  
    147 config[country].country = country 
    148 config[country].db_base = None 
    149 config[country].download = { "dst": "/data/work/osmbin/extracts/europe/europe/europe.osm.pbf", 
    150                            } 
    151 config[country].analyser["admin_level"] = "xxx" 
    152  
    153 ########################################################################### 
    154  
    155 country = "france" 
    156 config[country] = template_config() 
    157  
    158 config[country].country = country 
    159 config[country].polygon_id = 1403916 
    160 config[country].download = { "url": "http://download.geofabrik.de/openstreetmap/europe/france.osm.gz", 
    161                              "dst": template_config.dir_extracts+"/"+country+".osm", 
    162                              "osm2pgsql": country, 
    163                              "osmosis": country, 
    164                            } 
    165 config[country].analyser["communes_manquantes"] = "xxx" 
    166  
    167 config[country].analyser_options = { "country":  "FR", 
    168                                      "language": "fr", 
    169                                    } 
    170  
    171 ########################################################################### 
    172  
    173 for region in "alsace aquitaine auvergne basse-normandie bourgogne bretagne centre champagne-ardenne corse franche-comte haute-normandie ile-de-france languedoc-roussillon limousin lorraine midi-pyrenees nord-pas-de-calais pays-de-la-loire picardie poitou-charentes provence-alpes-cote-d-azur rhone-alpes guadeloupe guyane martinique mayotte nouvellecaledonie polynesie reunion saintbarthelemy saintmartin saintpierreetmiquelon wallisetfutuna".split(): 
    174   country = "france_" + region.replace("-", "_") 
    175   config[country] = template_config() 
    176  
    177   config[country].country = country 
    178   config[country].download = { "url": "http://download.geofabrik.de/openstreetmap/europe/france/%s.osm.pbf" % region, 
    179                                "dst": template_config.dir_extracts+"/"+country+".osm.pbf", 
    180                                "osmosis": country, 
    181                              } 
    182  
    183   for a in analysers: 
    184     config[country].analyser[a] = "xxx" 
    185  
    186   config[country].analyser_options = { "country":  "FR", 
    187                                        "language": "fr", 
    188                                      } 
    189  
    190 config["france_alsace"].polygon_id = 8636 
    191 config["france_aquitaine"].polygon_id = 8637 
    192 config["france_auvergne"].polygon_id = 8638 
    193 config["france_basse_normandie"].polygon_id = 8646 
    194 config["france_bourgogne"].polygon_id = 27768 
    195 config["france_bretagne"].polygon_id = 102740 
    196 config["france_centre"].polygon_id = 8640 
    197 config["france_champagne_ardenne"].polygon_id = 8641 
    198 config["france_corse"].polygon_id = None # 76910 
    199 config["france_franche_comte"].polygon_id = 8642 
    200 config["france_haute_normandie"].polygon_id = 8656 
    201 config["france_ile_de_france"].polygon_id = 8649 
    202 config["france_languedoc_roussillon"].polygon_id = 8643 
    203 config["france_limousin"].polygon_id = 8644 
    204 config["france_lorraine"].polygon_id = 8645 
    205 config["france_midi_pyrenees"].polygon_id = 8647 
    206 config["france_nord_pas_de_calais"].polygon_id = 8648 
    207 config["france_pays_de_la_loire"].polygon_id = 8650 
    208 config["france_picardie"].polygon_id = 8651 
    209 config["france_poitou_charentes"].polygon_id = 8652 
    210 config["france_provence_alpes_cote_d_azur"].polygon_id = 8654 
    211 config["france_rhone_alpes"].polygon_id = 8655 
    212 config["france_guadeloupe"].polygon_id = None # 1401835 
    213 config["france_guyane"].polygon_id = 1260551 
    214 config["france_martinique"].polygon_id = None # 1891495 
    215 config["france_mayotte"].polygon_id = None # 1259885 
    216 config["france_polynesie"].polygon_id = None # 1363099 
    217 config["france_reunion"].polygon_id = None # 1785276 
    218  
    219 country = "france_nouvellecaledonie" 
    220 config[country].polygon_id = None # 2177258 
    221 config[country].download["url"] = "http://download.geofabrik.de/openstreetmap/australia-oceania/new-caledonia.osm.pbf" 
    222  
    223 country = "france_saintmartin" 
    224 config[country].polygon_id = None # 1891583 
    225 config[country].download["url"] = "http://download.openstreetmap.fr/extracts/central-america/saint_martin.osm.pbf" 
    226  
    227 country = "france_saintbarthelemy" 
    228 config[country].polygon_id = None # 537967 
    229 config[country].download["url"] = "http://download.openstreetmap.fr/extracts/central-america/saint_barthelemy.osm.pbf" 
    230  
    231 country = "france_polynesie" 
    232 config[country].polygon_id = None # 1363099 
    233 config[country].download["url"] = "http://download.openstreetmap.fr/extracts/oceania/polynesie.osm.pbf" 
    234  
    235 country = "france_wallisetfutuna" 
    236 config[country].polygon_id = None # 290162 
    237 config[country].download["url"] = "http://download.openstreetmap.fr/extracts/oceania/wallis_et_futuna.osm.pbf" 
    238  
    239 country = "france_saintpierreetmiquelon" 
    240 config[country].polygon_id = None # 233377 
    241 config[country].download["url"] = "http://download.openstreetmap.fr/extracts/north-america/saint_pierre_et_miquelon.osm.pbf" 
    242  
    243 ########################################################################### 
    244  
    245 country = "france_local_db" 
    246 config[country] = template_config() 
    247  
    248 config[country].db_base     = "osm" 
    249 config[country].db_user     = "osmose" 
    250 config[country].db_password = "clostAdtoi" 
    251 config[country].db_schema   = "osmose,osmosis" 
    252  
    253 config[country].country = country 
    254 config[country].polygon_id  = 1403916 
    255 config[country].analyser["merge_merimee"] = "xxx" 
    256 config[country].analyser["merge_poste_fr"] = "xxx" 
    257 config[country].analyser["merge_school_fr"] = "xxx" 
    258 config[country].analyser["merge_ratp"] = "xxx" 
    259 config[country].analyser["merge_level_crossing_fr"] = "xxx" 
    260 config[country].analyser["merge_railstation_fr"] = "xxx" 
    261 config[country].analyser["merge_tmc_point_fr"] = "xxx" 
    262 config[country].analyser["merge_geodesie"] = "xxx" 
    263 config[country].analyser["merge_street_number_toulouse"] = "xxx" 
     104world = template_config("world") 
     105world.analyser["osmbin_open_relations"] = "xxx" 
     106 
     107########################################################################### 
     108 
     109europe = template_config("europe") 
     110europe.db_base = None 
     111europe.download = {"dst": "/data/work/osmbin/extracts/europe/europe/europe.osm.pbf"} 
     112europe.analyser["admin_level"] = "xxx" 
     113 
     114########################################################################### 
     115 
     116france = template_config("france", 1403916, {"country": "FR", "language": "fr"}) 
     117france.download = { 
     118    "url": france.download_repo+"europe/france.osm.gz", 
     119    "dst": template_config.dir_extracts+"/france.osm", 
     120    "osmosis": "france" 
     121} 
     122france.analyser["communes_manquantes"] = "xxx" 
     123 
     124########################################################################### 
     125 
     126class default_country_simple(template_config): 
     127    def __init__(self, part, country, polygon_id=None, analyser_options={}, download_repo=GEOFABRIK): 
     128        template_config.__init__(self, country, polygon_id, analyser_options, download_repo) 
     129        self.download = { 
     130            "url": self.download_repo+part+"/"+country+".osm.pbf", 
     131            "dst": template_config.dir_extracts+"/"+country+".osm.pbf", 
     132            "osmosis": country 
     133        } 
     134        self.analyser["sax"] = "xxx" 
     135        self.analyser["osmosis_roundabout_reverse"] = "xxx" 
     136        self.analyser["osmosis_roundabout_level"] = "xxx" 
     137        self.analyser["osmosis_soundex"] = "xxx" 
     138        self.analyser["osmosis_roundabout"] = "xxx" 
     139        self.analyser["osmosis_boundary_hole"] = "xxx" 
     140        self.analyser["osmosis_building_overlaps"] = "xxx" 
     141        self.analyser["osmosis_missing_parent_tag"] = "xxx" 
     142        self.analyser["osmosis_polygon"] = "xxx" 
     143        self.analyser["osmosis_highway_vs_building"] = "xxx" 
     144        self.analyser["osmosis_orphan_nodes_cluster"] = "xxx" 
     145        self.analyser["osmosis_powerline"] = "xxx" 
     146        self.analyser["osmosis_double_tagging"] = "xxx" 
     147        self.analyser["osmosis_associatedStreet"] = "xxx" 
     148        self.analyser["osmosis_highway_link"] = "xxx" 
     149        self.analyser["osmosis_broken_highway_level_continuity"] = "xxx" 
     150        self.analyser["osmosis_large_relation"] = "xxx" 
     151        self.analyser["osmosis_mini_farm"] = "xxx" 
     152        self.analyser["osmosis_surface_overlaps"] = "xxx" 
     153        self.analyser["osmosis_useless"] = "xxx" 
     154        self.analyser["osmosis_multipolygon"] = "xxx" 
     155        self.analyser["osmosis_boundary_intersect"] = "xxx" 
     156        self.analyser["osmosis_node_like_way"] = "xxx" 
     157        self.analyser["osmosis_boundary_administrative"] = "xxx" 
     158        self.analyser["osmosis_tag_typo"] = "xxx" 
     159        self.analyser["osmosis_cycleway_track"] = "xxx" 
     160        self.analyser["osmosis_crossing"] = "xxx" 
     161        self.analyser["osmosis_building_shapes"] = "xxx" 
     162        self.analyser["osmosis_deadend"] = "xxx" 
     163 
     164class default_country(default_country_simple): 
     165    def __init__(self, part, country, polygon_id=None, analyser_options={}, download_repo=GEOFABRIK): 
     166        default_country_simple.__init__(self, part, country, polygon_id, analyser_options, download_repo) 
     167        self.analyser["osmosis_highway_cul-de-sac_level"] = "xxx" 
     168        self.analyser["osmosis_way_approximate"] = "xxx" 
     169        self.analyser["osmosis_riverbank"] = "xxx" 
     170 
     171class default_country_fr(default_country_simple): 
     172    def __init__(self, part, country, polygon_id=None, analyser_options={}, download_repo=GEOFABRIK): 
     173        analyser_options.update({"country": "FR", "language": "fr"}) 
     174        default_country_simple.__init__(self, part, country, polygon_id, analyser_options, download_repo) 
     175 
     176class france_region(default_country_fr): 
     177    def __init__(self, part, region, polygon_id=None, analyser_options={}, download_repo=GEOFABRIK): 
     178        country = "france_" + region.replace("-", "_") 
     179        default_country_fr.__init__(self, part, country, polygon_id, analyser_options, download_repo) 
     180        self.download["url"] = self.download_repo+part+"/"+region+".osm.pbf" 
     181        self.analyser["osmosis_geodesie"] = "xxx" 
     182        self.analyser["osmosis_natural_swimming-pool"] = "xxx" 
     183 
     184france_region("europe/france", "alsace", 8636) 
     185france_region("europe/france", "aquitaine", 8637) 
     186france_region("europe/france", "auvergne", 8638) 
     187france_region("europe/france", "basse-normandie", 8646) 
     188france_region("europe/france", "bourgogne", 27768) 
     189france_region("europe/france", "bretagne", 102740) 
     190france_region("europe/france", "centre", 8640) 
     191france_region("europe/france", "champagne-ardenne", 8641) 
     192france_region("europe/france", "corse", None) # 76910 
     193france_region("europe/france", "franche-comte", 8642) 
     194france_region("europe/france", "haute-normandie", 8656) 
     195france_region("europe/france", "ile-de-france", 8649) 
     196france_region("europe/france", "languedoc-roussillon", 8643) 
     197france_region("europe/france", "limousin", 8644) 
     198france_region("europe/france", "lorraine", 8645) 
     199france_region("europe/france", "midi-pyrenees", 8647) 
     200france_region("europe/france", "nord-pas-de-calais", 8648) 
     201france_region("europe/france", "pays-de-la-loire", 8650) 
     202france_region("europe/france", "picardie", 8651) 
     203france_region("europe/france", "poitou-charentes", 8652) 
     204france_region("europe/france", "provence-alpes-cote-d-azur", 8654) 
     205france_region("europe/france", "rhone-alpes", 8655) 
     206france_region("europe/france", "guadeloupe", None) # 1401835 
     207france_region("europe/france", "guyane", 1260551) 
     208france_region("europe/france", "martinique", None) # 1891495 
     209france_region("europe/france", "mayotte", None) # 1259885 
     210france_region("europe/france", "polynesie", None) # 1363099 
     211france_region("europe/france", "reunion", None) # 1785276 
     212 
     213default_country_fr("central-america", "saintbarthelemy", None, download_repo=OSMFR) # 537967 
     214default_country_fr("central-america", "saintmartin", None, download_repo=OSMFR) # 1891583 
     215default_country_fr("north-america", "saintpierreetmiquelon", None, download_repo=OSMFR) # 233377 
     216default_country_fr("oceania", "wallisetfutuna", None, download_repo=OSMFR) # 290162 
     217default_country_fr("oceania", "polynesie", None, download_repo=OSMFR) # 1363099 
     218nouvellecaledonie = default_country_fr("australia-oceania", "france_nouvellecaledonie", None) # 2177258 
     219nouvellecaledonie.download["url"] = "http://download.geofabrik.de/openstreetmap/australia-oceania/new-caledonia.osm.pbf" 
     220 
     221########################################################################### 
     222 
     223france_local_db = template_config("france_local_db", 1403916) 
     224france_local_db.db_base     = "osm" 
     225france_local_db.db_user     = "osmose" 
     226france_local_db.db_password = "clostAdtoi" 
     227france_local_db.db_schema   = "osmose,osmosis" 
     228 
     229france_local_db.analyser["merge_merimee"] = "xxx" 
     230france_local_db.analyser["merge_poste_fr"] = "xxx" 
     231france_local_db.analyser["merge_school_fr"] = "xxx" 
     232france_local_db.analyser["merge_ratp"] = "xxx" 
     233france_local_db.analyser["merge_level_crossing_fr"] = "xxx" 
     234france_local_db.analyser["merge_railstation_fr"] = "xxx" 
     235france_local_db.analyser["merge_tmc_point_fr"] = "xxx" 
     236france_local_db.analyser["merge_geodesie"] = "xxx" 
     237france_local_db.analyser["merge_street_number_toulouse"] = "xxx" 
    264238 
    265239######################################################################### 
    266240 
    267 analysers.remove("osmosis_geodesie") 
    268  
    269 for country in "belgium iceland luxembourg switzerland canada_quebec".split(): 
    270   config[country] = template_config() 
    271  
    272   config[country].country = country 
    273   config[country].download = { "url": "http://download.geofabrik.de/openstreetmap/europe/%s.osm.pbf" % country, 
    274                                "dst": template_config.dir_extracts+"/"+country+".osm.pbf", 
    275                                "osmosis": country, 
    276                              } 
    277  
    278   for a in analysers: 
    279     config[country].analyser[a] = "xxx" 
    280  
    281  
    282 country = "belgium" 
    283 config[country].polygon_id = 52411 
    284 config[country].download["url"] = "http://download.geofabrik.de/openstreetmap/europe/belgium.osm.pbf" 
    285 config[country].analyser_options = { "country":  "BE", 
    286                                      "language": "fr", 
    287                                    } 
    288  
    289 country = "iceland" 
    290 config[country].polygon_id = None # 299133 
    291 config[country].download["url"] = "" 
    292 config[country].analyser_options = { "country":  "IS", 
    293                                      "language": "is", 
    294                                    } 
    295  
    296 country = "luxembourg" 
    297 config[country].polygon_id = 2171347 
    298 config[country].analyser_options = { "country":  "LU", 
    299                                      "language": "fr", 
    300                                      "osmosis_boundary_hole": { "admin_level": 6 }, 
    301                                    } 
    302  
    303 country = "switzerland" 
    304 config[country].polygon_id = 51701 
    305 config[country].download["url"] = "http://download.geofabrik.de/openstreetmap/europe/switzerland.osm.pbf" 
    306 config[country].analyser_options = { "country": "CH", 
    307                                    } 
    308  
    309 country = "canada_quebec" 
    310 config[country].polygon_id = 61549 
    311 config[country].db_base = "osmose_quebec" 
    312 config[country].db_password = "clostAdtoi" 
    313 config[country].download["url"] = "http://download.openstreetmap.fr/extracts/north-america/canada/quebec.osm.pbf" 
    314 config[country].download["diff"] = "http://download.openstreetmap.fr/replication/north-america/canada/quebec/minute/" 
    315 config[country].download["diff_path"] = config[country].dir_diffs + "/" + country 
    316 config[country].analyser_options = { "country":  "QC", 
    317                                      "language": "fr", 
    318                                    } 
     241default_country("europe", "belgium", 52411, {"country": "BE","language": "fr"}) 
     242default_country("europe", "luxembourg", 2171347, {"country": "LU", "language": "fr", "osmosis_boundary_hole": {"admin_level": 6}}) 
     243default_country("europe", "switzerland", 51701, {"country": "CH"}) 
     244 
     245iceland = default_country("europe","iceland", None, {"country": "IS", "language": "is"}) # 299133 
     246iceland.download["url"] = "" 
     247 
     248quebec = default_country("north-america/canada", "canada_quebec", 61549, {"country": "QC","language": "fr"}, download_repo=OSMFR) 
     249quebec.db_base = "osmose_quebec" 
     250quebec.db_password = "clostAdtoi" 
     251quebec.download["url"] = "http://download.openstreetmap.fr/extracts/north-america/canada/quebec.osm.pbf" 
     252quebec.download["diff"] = "http://download.openstreetmap.fr/replication/north-america/canada/quebec/minute/" 
     253quebec.download["diff_path"] = quebec.dir_diffs + "/" + quebec.country 
    319254 
    320255######################################################################### 
    321256 
    322 analysers_simp = list(analysers) 
    323 analysers_simp.remove("osmosis_highway_cul-de-sac_level") 
    324 analysers_simp.remove("osmosis_riverbank") 
    325  
    326 for country in "madagascar kenya senegal".split(): 
    327   config[country] = template_config() 
    328  
    329   config[country].country = country 
    330   config[country].download = { "url": "http://download.openstreetmap.fr/extracts/africa/%s.osm.pbf" % country, 
    331                                "dst": template_config.dir_extracts+"/"+country+".osm.pbf", 
    332                                "osmosis": country, 
    333                              } 
    334  
    335   for a in analysers_simp: 
    336     config[country].analyser[a] = "xxx" 
    337  
    338 ######################################################################### 
    339  
    340 analysers_simp = list(analysers) 
    341 analysers_simp.remove("osmosis_highway_cul-de-sac_level") 
    342 analysers_simp.remove("osmosis_way_approximate") 
    343 analysers_simp.remove("osmosis_riverbank") 
    344  
    345 for country in "burundi cameroon central_african_republic chad haiti".split(): 
    346   config[country] = template_config() 
    347  
    348   config[country].country = country 
    349   config[country].download = { "url": "http://download.openstreetmap.fr/extracts/africa/%s.osm.pbf" % country, 
    350                                "dst": template_config.dir_extracts+"/"+country+".osm.pbf", 
    351                                "osmosis": country, 
    352                              } 
    353  
    354   for a in analysers_simp: 
    355     config[country].analyser[a] = "xxx" 
    356  
    357 ######################################################################### 
    358  
    359 country = "burundi" 
    360 config[country].polygon_id = 195269 
    361 config[country].analyser_options = { "country": "BI", 
    362                                      } 
    363 country = "cameroon" 
    364 config[country].polygon_id = 192830 
    365 config[country].analyser_options = { "country": "CM", 
    366                                       } 
    367 country = "central_african_republic" 
    368 config[country].polygon_id = 192790 
    369 config[country].analyser_options = { "country": "CF", 
    370  
    371                                   } 
    372  
    373 country = "chad" 
    374 config[country].polygon_id = 2361304 
    375 config[country].analyser_options = { "country": "TD", 
    376                                   } 
    377  
    378 country = "haiti" 
    379 config[country].polygon_id = 307829 
    380 config[country].download["url"] = "http://download.geofabrik.de/openstreetmap/central-america/haiti-and-domrep.osm.pbf" 
    381 config[country].analyser_options = { "country": "HT", 
    382                                    } 
    383  
    384 country = "kenya" 
    385 config[country].polygon_id = 192798 
    386 config[country].analyser_options = { "country": "KE", 
    387                                      "driving_side": "left", 
    388                                    } 
    389 country = "madagascar" 
    390 config[country].polygon_id = None 
    391 config[country].download["url"] = "http://download.geofabrik.de/openstreetmap/africa/madagascar.osm.pbf" 
    392 config[country].analyser_options = { "country":  "MG", 
    393                                      "language": "fr", 
    394                                    } 
    395  
    396 country = "senegal" 
    397 config[country].polygon_id = 192775 
    398 config[country].analyser_options = { "country": "SN", 
    399                                      } 
     257madagascar = default_country_simple("africa", "madagascar", None, {"country": "MG", "language": "fr"}, download_repo=OSMFR) 
     258madagascar.analyser["osmosis_way_approximate"] = "xxx" 
     259 
     260kenya = default_country_simple("africa", "kenya", 192798, {"country": "KE", "driving_side": "left"}, download_repo=OSMFR) 
     261kenya.analyser["osmosis_way_approximate"] = "xxx" 
     262 
     263senegal = default_country_simple("africa", "senegal", 192775, {"country": "SN"}, download_repo=OSMFR) 
     264senegal.analyser["osmosis_way_approximate"] = "xxx" 
     265 
     266burundi = default_country_simple("africa", "burundi", 195269, {"country": "BI"}, download_repo=OSMFR) 
     267cameroon = default_country_simple("africa", "cameroon", 192830, {"country": "CM"}, download_repo=OSMFR) 
     268central_african_republic = default_country_simple("africa", "central_african_republic", 192790, {"country": "CF"}, download_repo=OSMFR) 
     269chad = default_country_simple("africa", "chad", 2361304, {"country": "TD"}, download_repo=OSMFR) 
     270 
     271haiti = default_country_simple("central-america", "haiti", 307829, {"country": "HT"}) 
     272haiti.download["url"] = haiti.download_repo+"/central-america/haiti-and-domrep.osm.pbf" 
    400273 
    401274########################################################################### 
  • plugins/TagRemove_Incompatibles.py

    r4f06076 r479997a  
    2828        Plugin.init(self, logger) 
    2929        self.errors[900] = { "item": 4030, "level": 1, "tag": ["tag"], "desc": {"en": u"Tag conflict", "fr": u"Tag en conflit"} } 
    30         self.CONFLICT1 = set(['aerialway', 'aeroway', 'amenity', 'highway', 'landuse', 'leisure', 'natural', 'railway', 'waterway', 'place']) 
     30        self.CONFLICT = {} 
     31        self.CONFLICT[0] = set(['aerialway', 'aeroway', 'amenity', 'highway', 'leisure', 'railway', 'waterway', 'landuse']) 
     32        self.CONFLICT[1] = set(['aerialway', 'aeroway', 'amenity', 'highway', 'leisure', 'railway', 'waterway', 'natural']) 
     33        self.CONFLICT[2] = set(['aerialway', 'aeroway', 'amenity', 'highway', 'leisure', 'railway', 'waterway', 'place']) 
    3134 
    3235    def node(self, data, tags): 
     
    3740            del tags['railway'] 
    3841            del tags['highway'] 
    39         conflict = set(tags).intersection(self.CONFLICT1) 
    40         if len(conflict) > 1: 
    41             return [(900, 1, {"fr": "Conflit entre les tags %s" % (", ".join(conflict)), "en": "Conflict between tags %s" % (", ".join(conflict))})] 
     42        for i in range(0, len(self.CONFLICT)): 
     43            conflict = set(tags).intersection(self.CONFLICT[i]) 
     44            if len(conflict) > 1: 
     45                return [(900, 1, {"fr": "Conflit entre les tags %s" % (", ".join(conflict)), "en": "Conflict between tags %s" % (", ".join(conflict))})] 
    4246 
    4347        if 'bridge' in tags and 'tunnel' in tags and tags['bridge'] == 'yes' and tags['tunnel'] == 'yes': 
  • analysers/analyser_osmosis_deadend.py

    rfeccd33 r5c295c4  
    3232    tags?'highway' AND 
    3333    tags->'highway' = 'cycleway' 
    34 ; 
    3534""" 
    3635 
     
    4948    nodes.geom 
    5049HAVING 
    51     COUNT(*) = 1 AND 
    52     ST_Within(nodes.geom, ST_GeomFromText('SRID=4326;MULTIPOLYGON(((-3.76 47.8366713015408,-3.7601 47.8366578,-3.7603056 47.836851,-3.7605619 47.8369275,-3.7604642 47.8365528,-3.7606881 47.8364778,-3.7611073 47.8366272,-3.7618216 47.8367876,-3.762346 47.8367758,-3.7621867 47.836602,-3.761942 47.8366252,-3.7616563 47.8364944,-3.761245 47.8360787,-3.7610833 47.8358165,-3.7613096 47.835521,-3.7603457 47.8358561,-3.76 47.8360597321704,-3.76 47.8,-3.85 47.81,-3.88 47.83,-3.9 47.89,-3.93 47.89,-3.94 47.91,-3.97 47.92,-4 47.91,-3.99 47.86,-4.05 47.86,-4.06 47.88,-4.1 47.88,-4.12 47.9,-4.13 47.87,-4.16 47.86,-4.17 47.89,-4.2 47.89,-4.21 47.85,-4.18 47.83,-4.18 47.81,-4.36 47.81,-4.34 47.82,-4.34 47.87,-4.41 47.97,-4.53 48.03,-4.58 48.01,-4.62 48.04,-4.66 48.03,-4.7 48.05,-4.41 48.1,-4.36 48.1,-4.34 48.09,-4.34 48.07,-4.32 48.07,-4.29 48.08,-4.26 48.12,-4.26 48.16,-4.3 48.21,-4.41 48.23,-4.43 48.25,-4.5 48.25,-4.54 48.19,-4.54 48.26,-4.56 48.28,-4.42 48.28,-4.39 48.26,-4.31 48.29,-4.28 48.29,-4.27 48.27,-4.19 48.28,-4.17 48.3,-4.24 48.32,-4.24 48.34,-4.28 48.33,-4.25 48.35,-4.25 48.37,-4.28 48.36,-4.35 48.37,-4.37 48.35,-4.43 48.34,-4.43 48.36,-4.39 48.38,-4.39 48.4,-4.42 48.41,-4.44 48.41,-4.44 48.39,-4.48 48.4,-4.53 48.37,-4.57 48.37,-4.59 48.35,-4.68 48.37,-4.71 48.36,-4.71 48.34,-4.76 48.34,-4.74 48.35,-4.74 48.38,-4.78 48.42,-4.77 48.45,-4.71 48.46,-4.72 48.49,-4.76 48.48,-4.76 48.51,-4.73 48.55,-4.7 48.54,-4.69 48.56,-4.62 48.56,-4.58 48.59,-4.56 48.58,-4.53 48.59,-4.52 48.57,-4.51 48.58,-4.49 48.56,-4.47 48.57,-4.49 48.6,-4.52 48.6,-4.54 48.62,-4.47 48.61,-4.45 48.63,-4.4 48.63,-4.4 48.65,-4.37 48.65,-4.35 48.67,-4.32 48.66,-4.31445143514879 48.6378057405952,-4.314486 48.637782,-4.314479 48.637526,-4.31433601191567 48.6373440476627,-4.31 48.62,-4.29 48.62,-4.27 48.64,-4.19 48.64,-4.18 48.66,-4.2 48.67,-4.18 48.68,-4.05 48.67,-4.03 48.68,-4.03 48.7,-3.99 48.7,-3.96 48.64,-3.97 48.61,-3.95 48.59,-3.92 48.6,-3.94 48.62,-3.92 48.66,-3.9 48.63,-3.87 48.63,-3.87 48.6,-3.84 48.6,-3.83 48.62,-3.8 48.62,-3.8 48.64,-3.84 48.64,-3.84 48.69,-3.73 48.7,-3.71 48.68,-3.66 48.68,-3.67 48.65,-3.63 48.67,-3.57 48.66,-3.56 48.67,-3.57 48.72,-3.53 48.72,-3.54 48.76,-3.57 48.78,-3.53 48.79,-3.52 48.81,-3.48 48.82,-3.45 48.81,-3.45 48.79,-3.38 48.79,-3.38 48.81,-3.34 48.81,-3.32 48.83,-3.26 48.82,-3.23 48.86,-3.22 48.81,-3.26 48.8,-3.26 48.76,-3.28 48.76,-3.28 48.74,-3.26 48.73,-3.23 48.76,-3.2 48.75,-3.19 48.78,-3.21 48.78,-3.21 48.8,-3.19 48.81,-3.19 48.83,-3.1 48.86,-3.1 48.81,-3.12 48.78,-3.14 48.78,-3.13 48.76,-3.16 48.75,-3.15 48.72,-3.17 48.71,-3.17 48.69,-3.1 48.71,-3.12 48.75,-3.09 48.76,-3.08 48.81,-3.03 48.81,-3.06 48.79,-3.05 48.77,-2.95 48.75,-2.96 48.72,-2.94 48.7,-2.84 48.65,-2.83 48.58,-2.73 48.55,-2.76 48.53,-2.76 48.51,-2.72 48.52,-2.7 48.49,-2.67 48.5,-2.67 48.52,-2.61 48.51,-2.62 48.54,-2.55 48.57,-2.55 48.59,-2.48 48.6,-2.46 48.64,-2.43 48.64,-2.41 48.62,-2.4 48.64,-2.34 48.66,-2.31 48.65,-2.35 48.63,-2.35 48.61,-2.3 48.6,-2.28 48.63,-2.26 48.63,-2.26 48.61,-2.23 48.6,-2.22 48.54,-2.2 48.57,-2.16 48.57,-2.15 48.6,-2.11 48.6,-2.13 48.63,-2.06 48.63,-2.02 48.56,-1.99 48.54,-2.01 48.53,-2 48.52,-2.01 48.48,-1.97 48.49,-1.93 48.53,-1.95 48.55,-1.94 48.57,-1.95 48.6,-1.99 48.6,-2.01 48.65,-1.89 48.69,-1.86 48.69,-1.88 48.66,-1.88 48.63,-1.86 48.61,-1.78 48.59,-1.57 48.62,-1.44 48.61,-1.43 48.63,-1.35 48.62,-1.34 48.64,-1.38 48.66,-1.38 48.69,-1.46 48.68,-1.48 48.7,-1.5 48.69,-1.52 48.74,-1.56 48.74,-1.56 48.82,-1.58 48.83,-1.58 48.85,-1.56 48.87,-1.56 48.91,-1.54 48.91,-1.53 48.93,-1.55 48.95,-1.54 48.99,-1.55 49.02,-1.53 49.03,-1.52 49.01,-1.5 49.01,-1.5 49.03,-1.53 49.05,-1.59 49.03,-1.6 49.11,-1.58 49.14,-1.6 49.2,-1.57 49.21,-1.57 49.23,-1.64 49.23,-1.66 49.27,-1.65 49.29,-1.69 49.3,-1.67 49.34,-1.70292332301741 49.34,-1.703273 49.340477,-1.703465 49.340607,-1.703659 49.340738,-1.704037 49.341255,-1.704229 49.341385,-1.705006 49.3420044,-1.7056369 49.3424532,-1.7063643 49.3428041,-1.7073524 49.3432382,-1.7081431 49.3433235,-1.7086989 49.3434339,-1.7095389 49.3436289,-1.7108532 49.3437184,-1.7111762 49.3437666,-1.7114798 49.3437673,-1.711622 49.343775,-1.712403 49.343912,-1.71262 49.343145,-1.712822 49.342891,-1.712433 49.342758,-1.711655 49.342493,-1.711266 49.342361,-1.711064 49.342615,-1.710083 49.342604,-1.709687 49.342728,-1.709292 49.342852,-1.70911 49.342337,-1.709116 49.342081,-1.7092171 49.3419233,-1.7093759 49.3417143,-1.709948 49.340295,-1.71004617932655 49.34,-1.73 49.34,-1.76 49.39,-1.81 49.39,-1.81 49.45,-1.84 49.48,-1.84 49.52,-1.88 49.53,-1.85 49.54,-1.83 49.57,-1.84 49.64,-1.87 49.67,-1.93 49.68,-1.94 49.72,-1.9 49.7,-1.84 49.7,-1.83 49.68,-1.79 49.67,-1.65 49.65,-1.63 49.63,-1.57 49.65,-1.53 49.64,-1.48 49.66,-1.47 49.68,-1.39 49.7,-1.28 49.68,-1.24 49.62,-1.27 49.62,-1.27 49.6,-1.31 49.59,-1.32 49.54,-1.25 49.46,-1.17 49.4,-1.19 49.36,-1.14 49.34,-1.11 49.34,-1.1 49.35,-1.11 49.36,-1.09 49.36,-1.08 49.38,-0.94 49.39,-0.92 49.37,-0.81 49.34,-0.41 49.33,-0.23 49.27,-0.11 49.28,-0.04 49.31,0 49.31,0.14 49.4,0.38 49.43,0.38 49.45,0.15 49.46,0.12 49.47,0.1 49.51,0.08 49.51,0.11 49.58,0.16 49.63,0.18 49.69,0.26 49.71,0.28 49.73,0.33 49.73,0.37 49.76,0.5 49.8,0.56 49.84,0.61 49.84,0.65 49.86,0.78 49.86,0.82 49.88,0.92 49.89,0.95 49.91,1.06 49.91,1.16 49.94,1.32 50.02,1.33 50.04,1.39 50.05,1.4 50.07,1.44 50.08,1.47 50.11,1.49 50.17,1.53 50.2,1.56 50.2,1.57 50.18,1.68 50.17,1.67 50.22,1.62 50.23,1.59 50.27,1.55 50.27,1.56 50.35,1.64 50.36,1.64 50.38,1.57 50.4,1.59 50.53,1.62 50.53,1.62 50.55,1.59 50.57,1.59 50.64,1.57 50.68,1.58 50.72,1.6 50.72,1.62 50.76,1.62 50.8,1.59 50.86,1.65 50.87,1.71 50.92,1.78 50.95,1.9 50.96,1.93 50.98,2.07 51,2.11 50.99,2.16 51.03,2.21 51.02,2.33 51.05,2.39 51.03,2.54 51.08,2.56 51,2.61 50.97,2.61 50.94,2.58 50.93,2.58 50.91,2.6 50.9,2.59 50.84,2.61 50.84,2.63 50.8,2.71 50.8,2.79 50.71,2.85 50.71,2.86 50.69,2.91 50.68,2.94 50.7,2.95 50.74,3.04 50.77,3.09 50.76,3.11 50.78,3.14 50.78,3.2 50.7,3.24 50.7,3.23 50.64,3.27 50.59,3.27 50.53,3.29 50.51,3.35 50.5,3.37 50.48,3.46 50.5,3.47 50.52,3.5 50.52,3.49 50.48,3.61 50.49,3.66 50.43,3.65 50.36,3.7 50.29,3.74 50.3,3.75 50.34,3.81 50.33,3.85 50.34,3.88 50.32,4.03 50.34,4.07 50.32,4.07 50.3,4.12 50.29,4.11 50.27,4.13 50.25,4.18 50.25,4.16 50.22,4.14 50.22,4.15 50.19,4.12 50.13,4.19 50.12,4.19 50.09,4.21 50.09,4.22 50.07,4.14 50.05,4.13635390993872 50.0208312795098,4.1360622 50.0207706,4.1359932 50.0204744,4.1359656 50.0203543,4.1358883 50.0200252,4.1358303 50.0198948,4.1357701 50.0197998,4.1357582 50.0197926,4.1356968 50.0195638,4.135696 50.0192462,4.1355235 50.0187177,4.1354702 50.0183825,4.1354622 50.0183321,4.1354539 50.0183099,4.1354288 50.0182799,4.1354169 50.0182751,4.1353747 50.0182606,4.1353624 50.0182501,4.1353554 50.0182303,4.1353708 50.0181818,4.1353748 50.0181449,4.1353948 50.0181013,4.1353936 50.018095,4.1353841 50.0180809,4.1353849 50.0180757,4.1354117 50.0180551,4.1354135 50.0180492,4.135413 50.0180433,4.1354017 50.0180312,4.1354 50.018023,4.1354005 50.0180158,4.1354031 50.018009,4.1354047 50.0180051,4.135414 50.0179985,4.1354564 50.0179925,4.1354689 50.0179874,4.1354727 50.0179849,4.1354757 50.0179808,4.135477 50.0179754,4.1354735 50.0179667,4.1353611 50.0178654,4.1353548 50.0178587,4.1353529 50.0178328,4.135359 50.0178142,4.1353749 50.0178036,4.1353901 50.0178009,4.1354267 50.0178155,4.1354496 50.0178243,4.135463 50.0178271,4.135482 50.0178247,4.1355016 50.0178149,4.135594 50.0177436,4.1356133 50.0177228,4.1356273 50.0176796,4.135644 50.0176662,4.1356596 50.0176612,4.1356726 50.017662,4.1357068 50.0176669,4.1357279 50.0176663,4.1357766 50.0176465,4.1357886 50.0176367,4.1357938 50.0176243,4.1357898 50.0176002,4.1357797 50.017577,4.1357954 50.017525,4.1357972 50.0174936,4.1357803 50.0174477,4.1357698 50.0174341,4.1357677 50.0174188,4.1357668 50.0174123,4.1357671 50.0174066,4.1357708 50.0174034,4.1357855 50.0174037,4.1358003 50.0173953,4.135809 50.0173797,4.1358125 50.0173659,4.1357999 50.0173385,4.1357975 50.0173261,4.1358096 50.017292,4.1358131 50.0172843,4.1358178 50.0172779,4.1358264 50.0172726,4.1358591 50.0172599,4.1358642 50.0172548,4.1358665 50.017248,4.1358654 50.0172411,4.1358487 50.0172209,4.1358496 50.017209,4.1358541 50.0171973,4.1358816 50.01717,4.1358919 50.0171654,4.1358955872093 50.0171646976744,4.13587298318471 50.0169838654777,4.1358499 50.0169607,4.1358459 50.016954,4.135844 50.0169487,4.1358522 50.0169366,4.135859 50.0169318,4.13586623751891 50.0169299001513,4.13576358193697 50.0161086554958,4.1357535 50.0160974,4.1357462 50.0160773,4.1357426 50.0159859,4.13574758777648 50.0159807022119,4.13573200655459 50.0158560524367,4.1356691 50.0158386,4.1356168 50.0157011,4.1354544 50.0155468,4.1351961 50.0150789,4.13561273556571 50.0149018845257,4.13 49.97,4.17 49.97,4.2 49.94,4.32 49.96,4.34 49.94,4.46 49.93,4.53 49.94,4.54 49.96,4.57 49.96,4.59 49.98,4.7 49.99,4.7 50.0529213265306,4.70004 50.053005,4.7 50.053090592233,4.7 50.08,4.76 50.1,4.77 50.13,4.83 50.15,4.87 50.13,4.81 50.07,4.82 50.03,4.81 50,4.78 49.99,4.78 49.95,4.87 49.92,4.87 49.89,4.84 49.88,4.84 49.85,4.86 49.83,4.84 49.79,4.85938159120928 49.79,4.8594779 49.7899317,4.8600894 49.7895579,4.8602553 49.7894702,4.8608344 49.7892356,4.8610897 49.7891827,4.8611486 49.7891472,4.861174 49.7891513,4.8614937 49.7890793,4.8629006 49.7888113,4.8636988 49.7887529,4.8638712 49.7887735,4.8641756 49.7888358,4.8647595 49.7889947,4.8653261 49.7891281,4.8656978 49.7891139,4.8657903 49.7891203,4.8665463 49.7892628,4.8666812 49.7892664,4.8669497 49.789248,4.8680925 49.7892034,4.8685136 49.7891984,4.8694895 49.7892049,4.86993 49.7892204,4.8708542 49.7892768,4.8709395 49.7892943,4.8706805 49.7894643,4.8706575 49.7894964,4.8706619 49.7895568,4.87055512671305 49.79,4.88450833846851 49.79,4.8853551 49.7895349,4.8862384 49.7889061,4.8863405 49.7888445,4.8869393 49.7885765,4.887565 49.7882603,4.8875861 49.7882382,4.8876248 49.7882784,4.8876782 49.7883005,4.8878648 49.7883501,4.887906 49.7883827,4.8880098 49.7885475,4.8881018 49.7886224,4.8884044 49.7887121,4.8885639 49.788808,4.8886102 49.7888229,4.8889175 49.7888505,4.8890432 49.7888926,4.8891407 49.7889111,4.8892972 49.7889133,4.889445 49.7888644,4.889608 49.7888254,4.8897078 49.7887787,4.8898178 49.7887485,4.8899847 49.788677,4.8900873 49.7886626,4.8902117 49.7886675,4.8907192 49.788763,4.8908486 49.7887712,4.8910007 49.7887564,4.8911052 49.7887598,4.8912416 49.7887903,4.8913404 49.7887939,4.8915044 49.7887792,4.8916288 49.7887525,4.8916966 49.7887213,4.8918058 49.7885979,4.8918943 49.788551,4.8919754 49.788534,4.8921302 49.7885199,4.8922401 49.7884985,4.8922767 49.7885022,4.8923877 49.7885443,4.8924324 49.7885723,4.8924812 49.7886245,4.892505 49.7886328,4.8926977 49.7886468,4.8928791 49.7886832,4.892941 49.7886837,4.8931417 49.7886587,4.893545 49.7885635,4.8936975 49.7885167,4.8939524 49.7883904,4.8940536 49.7883623,4.8941355 49.7883548,4.8944464 49.7883621,4.8945403 49.7883467,4.8946906 49.7883388,4.8948515 49.7883486,4.8951907 49.7884085,4.8954852 49.7884915,4.8956468 49.7885656,4.8958396 49.7887125,4.8958968 49.7887364,4.89612 49.7887494,4.8961775 49.7887683,4.8962983 49.7888406,4.8964664 49.7889607,4.8965215 49.789031,4.8965977 49.7890796,4.8967098 49.7891217,4.8968668 49.7891563,4.8969743 49.7891555,4.8971264 49.7891057,4.8972084 49.7890917,4.8972873 49.7890945,4.8974543 49.7891266,4.8977249 49.7892231,4.8977939 49.7892345,4.8978274 49.789217,4.8985152 49.7884937,4.8989288 49.7880331,4.8996521 49.787105,4.8998867 49.7868398,4.9001861 49.7865514,4.9005133 49.7863234,4.9007772 49.7861729,4.9008971 49.7861215,4.9020015 49.7860473,4.9025031 49.7859951,4.9027782 49.785956,4.9034868 49.7857625,4.9039265 49.7856698,4.9044497 49.7855962,4.9048496 49.7855619,4.9052439 49.7855452,4.9056416 49.7855463,4.9061676 49.785572,4.9069482 49.7856507,4.9073272 49.7856785,4.9077089 49.7857226,4.9084137 49.7857478,4.9085738 49.7857724,4.9094409 49.7859973,4.909884 49.7861234,4.9100898 49.7862007,4.9106884 49.7864544,4.9108646 49.7865163,4.9115118 49.786708,4.9119861 49.7868235,4.9124537 49.7869917,4.9133899 49.7870989,4.9138095 49.7871581,4.9151199 49.7873907,4.9157274 49.7874541,4.9158603 49.7874771,4.9160881 49.7875348,4.9166939 49.7876447,4.9170695 49.7876516,4.9171001 49.7876296,4.9171575 49.7875256,4.9171833 49.7875132,4.9172507 49.7875182,4.9173682 49.7875495,4.9174434 49.7875805,4.9179686 49.7878803,4.9183148 49.7881087,4.9185129 49.7882166,4.9188185 49.7883347,4.9189419 49.78841,4.9192754 49.7884757,4.9195839 49.7885934,4.91966 49.7886419,4.9198353 49.7888075,4.9198711 49.788828,4.9201062 49.7888589,4.9205561 49.7888794,4.9209445 49.7888712,4.9214563 49.7888286,4.9233516 49.788518,4.9235806 49.7884878,4.9237247 49.7884557,4.9250466 49.7878487,4.9250975 49.7878327,4.9252853 49.7878027,4.9273875 49.7875686,4.9279723 49.787471,4.928271 49.7874594,4.928773 49.7874631,4.9290044 49.7874465,4.9296729 49.787285,4.9298546 49.7872517,4.9307901 49.7869358,4.9308313 49.7872178,4.9309148 49.7873142,4.9311082 49.7875003,4.9320301 49.7884468,4.9320618 49.7884967,4.932062 49.7885371,4.9318711 49.7889915,4.9318293 49.7892126,4.9318343 49.7899312,4.93192128850574 49.79,4.99 49.79,5 49.77,5.1 49.75,5.11 49.71,5.15 49.7,5.16 49.68,5.28 49.68,5.31 49.66,5.29 49.63,5.31 49.6,5.36 49.62,5.42 49.59,5.44 49.54,5.46 49.53,5.44 49.53,5.46 49.49,5.54 49.5,5.55 49.52,5.62 49.5,5.64 49.54,5.76 49.53,5.78 49.55,5.86 49.49,5.95 49.49,5.97 49.44,6.03841225239676 49.4485515315496,6.0388165 49.448463,6.039892 49.448246,6.041342 49.44795,6.0416302 49.4478899,6.0417742 49.4478539,6.0422077 49.448383,6.0424137 49.448685,6.0426273 49.44899,6.04269053778324 49.4490863172229,6.05 49.45,6.11 49.44,6.13 49.48,6.17 49.48,6.17 49.5,6.26 49.5,6.29 49.47,6.35 49.45,6.4 49.45,6.43 49.47,6.45 49.45,6.53 49.43,6.53 49.39,6.57 49.38,6.55 49.35,6.58 49.33,6.58 49.31,6.65 49.28,6.66 49.24,6.68 49.25,6.68 49.21,6.72 49.21,6.7 49.2,6.7 49.18,6.73 49.15,6.79 49.16,6.84 49.14,6.87 49.17,6.86 49.21,6.88892046202347 49.21,6.8904294 49.2095061,6.8909943 49.2092501,6.8926111 49.2088272,6.8932138 49.2091518,6.89435684163802 49.21,6.94 49.21,6.95 49.19,6.98 49.2,7.02 49.18,7.02 49.15,7.04 49.14,7.03 49.12,7.05 49.1,7.07 49.1,7.1 49.13,7.15 49.11,7.25 49.12,7.29 49.1,7.33 49.14,7.37 49.13,7.38 49.17,7.42 49.17,7.43 49.15,7.48 49.16,7.48 49.13,7.53 49.08,7.62 49.07,7.63 49.04,7.74 49.03,7.81 49.05,7.86 49.02,7.88 49.04,7.95 49.04,7.96 49.02,8.04 49.01,8.08 48.98,8.19 48.97,8.12 48.89,8.09 48.81,8.02 48.8,8.01 48.77,7.97 48.77,7.95 48.72,7.89 48.67,7.84 48.66,7.82 48.62,7.79 48.6,7.8 48.52,7.76 48.5,7.76 48.46,7.72 48.4,7.72 48.36,7.74 48.33,7.68 48.31,7.66 48.23,7.59 48.17,7.59 48.14,7.57 48.13,7.56 48.02,7.61 47.99,7.61 47.96,7.57 47.94,7.57 47.9,7.55 47.89,7.55 47.83,7.52 47.79,7.54 47.73,7.5 47.71,7.5 47.69,7.51 47.66,7.54 47.63,7.56 47.63,7.58 47.59,7.49 47.55,7.49 47.49,7.43 47.51,7.41 47.49,7.42 47.46,7.39 47.44,7.28 47.45,7.25 47.43,7.24 47.45,7.19 47.45,7.21 47.5,7.16 47.51,7.02596957460398 47.5029457670844,7.0249278 47.5042837,7.0215035 47.5044581,7.0201455 47.5043887,7.019036 47.5041376,7.0176065 47.5036556,7.0167248 47.5036841,7.0147395 47.503293,7.0134548 47.5029233,7.0125946 47.5025776,7.0124262 47.5026822,7.00988746311596 47.502099340164,6.97 47.5,6.98 47.46,6.93 47.44,6.93 47.42,6.9 47.41,6.9 47.39,6.87 47.38,6.87 47.34,7 47.36,7.03 47.36,7.04 47.34,7.01 47.34,7 47.31,6.94 47.3,6.93 47.29,6.94 47.24,6.87 47.21,6.85 47.18,6.83 47.18,6.82 47.15,6.75 47.13,6.73 47.12,6.73 47.1,6.69 47.09,6.68 47.07,6.69 47.05,6.65 47.04,6.64 47.01,6.54 46.98,6.48 46.98,6.46 46.95,6.42 46.93,6.45 46.89,6.45 46.85,6.42 46.82,6.44 46.78,6.36 46.74,6.35 46.72,6.27 46.7,6.22 46.65,6.13 46.61,6.1 46.58,6.14 46.54,6.1 46.52,6.1 46.5,6.06 46.47,6.07 46.44,6.05 46.41,6.15 46.37,6.09 46.29,6.11 46.25,6.06 46.26,6.04 46.24,6.03 46.25,5.97 46.23,5.95 46.2,5.97 46.18,5.95 46.12,5.98 46.13,6.04 46.12,6.05 46.14,6.15 46.13,6.19 46.15,6.2 46.18,6.31 46.22,6.32 46.26,6.31 46.27,6.26 46.26,6.26 46.31,6.23 46.32,6.3 46.39,6.42 46.4,6.5 46.45,6.67 46.45,6.8 46.42,6.79 46.38,6.76 46.37,6.76 46.34,6.82 46.29,6.84 46.29,6.85 46.26,6.83 46.26,6.83 46.24,6.81 46.24,6.81 46.22,6.79 46.21,6.8 46.18,6.78 46.17,6.78 46.14,6.8 46.12,6.87 46.12,6.88 46.08,6.86 46.04,6.9 46.03,6.92 46.05,6.95 46.04,6.97 46,7 45.99,7 45.96,7.03 45.95,6.99 45.88,6.94 45.87,6.92 45.85,6.88186346638616 45.85,6.8816547 45.8501919,6.8810550943686 45.85,6.81 45.85,6.79 45.79,6.8 45.72,6.82 45.69,6.89 45.67,6.91 45.64,6.98 45.64,6.97 45.58,6.99 45.5,7.04 45.49,7.04 45.46,7.09 45.46,7.11 45.42,7.17 45.4,7.15 45.39,7.15 45.36,7.1 45.34,7.1 45.31,7.12 45.29,7.12 45.26,7.1 45.24,6.96 45.22,6.94 45.18,6.89 45.18,6.87 45.14,6.76 45.17,6.75 45.15,6.67 45.15,6.66 45.13,6.62 45.12,6.62 45.09,6.65 45.06,6.66 45.01,6.74 45.01,6.73 44.98,6.75 44.97,6.75 44.95,6.73 44.93,6.75 44.89,6.9 44.83,6.93 44.85,6.99 44.84,7.01 44.82,6.99 44.78,7.01 44.78,7.02 44.72,7.06 44.7,6.96 44.69,6.94 44.67,6.95 44.63,6.92 44.6,6.92 44.58,6.88047540024064 44.5552971251504,6.8800101 44.5552997,6.8790778 44.5546252,6.8784929 44.5540922,6.87844086421855 44.5540255401366,6.84 44.53,6.87 44.47,6.91 44.45,6.9 44.43,6.88 44.43,6.89 44.41,6.88 44.35,6.9 44.35,6.92 44.32,6.95 44.31,6.95563311859711 44.2987337628058,6.9546877 44.2982175,6.9555777 44.2977037,6.9559473 44.2970365,6.9565903 44.2965587,6.95708750489726 44.2958249902055,6.97 44.27,6.99 44.27,6.99 44.24,7.01 44.22,7.09 44.22,7.14 44.19,7.16 44.2,7.27 44.13,7.31 44.14,7.34 44.13,7.35 44.11,7.43 44.1,7.44 44.12,7.63 44.14,7.64 44.17,7.66 44.17,7.66 44.12,7.71 44.07,7.65 44.03,7.65 43.98,7.56 43.96,7.55 43.9,7.51 43.9,7.49 43.88,7.49 43.84,7.51 43.81,7.5 43.78,7.48 43.78,7.47 43.76,7.47 43.77,7.42 43.76,7.4 43.73,7.34 43.73,7.33 43.71,7.31 43.72,7.3 43.7,7.23 43.7,7.21 43.66,7.14 43.66,7.11 43.58,7.07 43.58,7.06 43.56,6.95 43.55,6.93 43.53,6.94 43.49,6.91 43.48,6.89 43.44,6.84 43.44,6.81 43.42,6.74 43.43,6.7 43.38,6.7 43.35,6.67 43.35,6.66 43.32,6.63 43.32,6.62 43.3,6.57 43.28,6.59 43.25,6.66 43.26,6.66 43.21,6.63 43.18,6.61 43.18,6.6 43.2,6.54 43.2,6.5 43.16,6.39 43.16,6.36 43.15,6.35 43.1,6.29 43.13,6.24 43.12,6.2 43.13,6.15 43.1,6.15 43.08,6.13 43.08,6.1 43.1,6.03 43.09,6.03 43.11,6 43.12,5.88 43.13,5.88 43.08,5.86 43.08,5.86 43.06,5.83 43.06,5.81 43.07,5.81 43.0921542197932,5.8102416 43.0921428,5.8105515 43.0922294,5.8109179 43.0924045,5.8111984 43.0925567,5.811508 43.0927234,5.8116257 43.0929709,5.8114939 43.0931025,5.8114239 43.0929972,5.8113374 43.0930358,5.811443 43.0932831,5.8115392 43.093264,5.8115176 43.0931587,5.8116612 43.0931282,5.8117523 43.0931175,5.8119105 43.0933766,5.8119117 43.0935653,5.8117644 43.0936158,5.8116642 43.0935388,5.8115639 43.0935587,5.8116761 43.0938094,5.8117848 43.0937845,5.8117639 43.0936871,5.8119584 43.0936675,5.8121621 43.0938813,5.81214 43.0940848,5.8119616 43.0941245,5.8119174 43.0940414,5.8118136 43.0940649,5.8119269 43.0943271,5.8120312 43.094307,5.8120247 43.0941959,5.8122041 43.0941739,5.8122916 43.0942452,5.8124152 43.0944174,5.8124585 43.0945219,5.8125278 43.0947327,5.8123862 43.0950212,5.8121973 43.0953602,5.8121641 43.0954107,5.8117052 43.0954526,5.8115121 43.0954192,5.811469 43.0954627,5.8114661 43.0955096,5.8115246 43.0955417,5.8115976 43.0955481,5.8124453 43.0954488,5.8125923 43.0954831,5.8126118 43.0954585,5.8126582 43.0954639,5.8122985 43.0965339,5.8121396 43.0969631,5.8120763 43.0971341,5.8114408 43.0970015,5.8110206 43.0969138,5.8108243 43.0968728,5.8107126 43.0968236,5.8106968 43.0964391,5.8107152 43.0960446,5.8107076 43.0952339,5.8107891 43.0953521,5.8109207 43.0953521,5.8109289 43.0952783,5.8108677 43.0951915,5.8107713 43.0951462,5.8106523 43.0951338,5.8105431 43.0951902,5.810516 43.0952313,5.8105108 43.0952895,5.810521 43.0953744,5.8105465 43.0954198,5.8105342 43.0955929,5.8105241 43.0959967,5.8105761 43.0960301,5.8105647 43.0961213,5.810564 43.0968137,5.8106114 43.0968806,5.8107827 43.0969555,5.8109751 43.0970075,5.8111638 43.0970846,5.8112848 43.0974511,5.811083 43.097547,5.8110562 43.0976107,5.8111729 43.0976064,5.8112381 43.0977517,5.8111614 43.0979176,5.8108878 43.0980907,5.8108615 43.0982161,5.8106112 43.0983943,5.8104157 43.0985322,5.8101895 43.0985648,5.8101334 43.0984009,5.8100269 43.0983953,5.8100885 43.0985817,5.81 43.0985940527725,5.81 43.1014869882873,5.8100606 43.1015654,5.8100637 43.1016823,5.8101791 43.1018789,5.8102093 43.1020213,5.810247 43.1021776,5.8104566 43.1024305,5.8105143 43.102581,5.8103824 43.1026111,5.8104154 43.1027053,5.8105363 43.1028534,5.810855 43.1029541,5.8110226 43.1031747,5.8108624 43.1032842,5.8109731 43.1033874,5.811072 43.1034556,5.8111682 43.1034716,5.811432 43.1033633,5.8115501 43.1034516,5.8116233 43.1036584,5.811763 43.1037944,5.8118251 43.1039305,5.8118001 43.1040373,5.8119292 43.1040734,5.8121023 43.1042339,5.8121202 43.1043953,5.8119515 43.1044777,5.8120115 43.1046787,5.8122441 43.1048926,5.8120102 43.105156,5.8124901 43.105242,5.8126526 43.1056303,5.8127467 43.1054245,5.8126698 43.1051519,5.8130681 43.1051625,5.8132172 43.10543,5.8128457 43.1055244,5.8128703 43.105608,5.8133085 43.1055097,5.813439 43.1055939,5.8134665 43.1057183,5.8134307 43.1058788,5.8133813 43.105966,5.8132728 43.1060252,5.8131986 43.1060152,5.8131519 43.1060834,5.8130585 43.1060212,5.8130447 43.105947,5.8130049 43.1058607,5.8129225 43.1059129,5.8129513 43.1060663,5.8129637 43.1061285,5.8129758 43.1062025,5.8132083 43.1063443,5.8133333 43.1065593,5.8133189 43.1067322,5.813255 43.1071255,5.813067 43.1072993,5.8126325 43.1072755,5.8126043 43.1073469,5.8133631 43.1074589,5.8134725 43.1076344,5.8134401 43.1078758,5.8133159 43.1081592,5.8130868 43.108507,5.8127958 43.1089264,5.8122892 43.1095818,5.8110492 43.1092979,5.8109741 43.1094236,5.8120663 43.1096574,5.8120561 43.1100983,5.8119257 43.1103776,5.8116964 43.1107819,5.8113407 43.1114804,5.811165 43.1120318,5.8108373 43.1123564,5.8102941 43.1121902,5.8102397 43.1122272,5.8106857 43.1124079,5.8102845 43.113048,5.81 43.1134844258883,5.81 43.13,5.79 43.13,5.78 43.15,5.7 43.16,5.7 43.19,5.62 43.2,5.58 43.18,5.56 43.19,5.56 43.22,5.36 43.22,5.39 43.25,5.38 43.31,5.32 43.37,5.28 43.37,5.25 43.34,5.04 43.34,5.04 43.36,5.01 43.38,5.01 43.41,4.98 43.41,4.97 43.44,4.88 43.44,4.87 43.46,4.84 43.46,4.84 43.44,4.82 43.44,4.81 43.42,4.83 43.41,4.84 43.37,4.87 43.36,4.86 43.34,4.79 43.36,4.61 43.36,4.57 43.38,4.6 43.39,4.6 43.43,4.56 43.46,4.2 43.47,4.13 43.49,4.15 43.54,4.1 43.57,3.95 43.55,3.93 43.53,3.86 43.51,3.78 43.44,3.72 43.43,3.69 43.4,3.64 43.4,3.57 43.35,3.51 43.28,3.39 43.3,3.25 43.24,3.15 43.16,3.07 43.06,3.03 42.96,3.03 42.92,3.05 42.92,3.05 42.9,3.03 42.85,3.02 42.66,3.04 42.54,3.07 42.53,3.08 42.51,3.11 42.51,3.12 42.47,3.15 42.47,3.15 42.44,3.14 42.45,3.08 42.44,3.05 42.48,2.93 42.49,2.92 42.47,2.86 42.48,2.78 42.42,2.76 42.44,2.67 42.42,2.64 42.39,2.66 42.35,2.58 42.37,2.54 42.36,2.54 42.34,2.48 42.35,2.44 42.4,2.36 42.41,2.32 42.44,2.29 42.43,2.27 42.45,2.22 42.43,2.14 42.43,2.08 42.37,2.01 42.36,1.97 42.39,1.97 42.43,1.95 42.44,1.95 42.46,1.89 42.46,1.83 42.5,1.82 42.49,1.74 42.51,1.75 42.55,1.8 42.57,1.79 42.59,1.75 42.59,1.74 42.63,1.72 42.62,1.66 42.64,1.59 42.64,1.58 42.66,1.55 42.67,1.47 42.66,1.46 42.62,1.44 42.61,1.43 42.65,1.37 42.71,1.37 42.73,1.22 42.74,1.16 42.72,1.14 42.73,1.14 42.76,1.09 42.8,1.04 42.79,0.98 42.8,0.96 42.82,0.92 42.8,0.86 42.84,0.76 42.85,0.73 42.87,0.65 42.85,0.63 42.75,0.67 42.73,0.67 42.7,0.63 42.7,0.6 42.72,0.42 42.7,0.38 42.73,0.35 42.73,0.32 42.72,0.31 42.69,0.29 42.69,0.26 42.73,0.22 42.73,0.19 42.75,0.13 42.72,0.08 42.73,0.06 42.71,-0.05 42.7,-0.06 42.73,-0.11 42.74,-0.15 42.81,-0.23 42.81,-0.23 42.83,-0.26 42.83,-0.27 42.85,-0.3 42.86,-0.35 42.85,-0.39 42.81,-0.46 42.81,-0.49 42.84,-0.53 42.83,-0.54 42.8,-0.55 42.8,-0.56 42.8,-0.57 42.82,-0.59 42.81,-0.59 42.84,-0.64 42.86,-0.66 42.89,-0.72 42.9,-0.72 42.95,-0.75 42.98,-0.81 42.96,-0.898140685331124 42.96,-0.8998234 42.9621313,-0.9102668 42.9620744,-0.9175682 42.9621863,-0.9238479 42.9600265,-0.923851106024575 42.96,-0.95 42.96,-1 43,-1.11148318994329 43.0238892549878,-1.1115121 43.023998,-1.11314596646339 43.0242455642422,-1.14 43.03,-1.16 43.05,-1.18 43.04,-1.2 43.06,-1.22861155472133 43.0552314075465,-1.2292737 43.0554682,-1.22946967818323 43.0550883869695,-1.26 43.05,-1.27 43.07,-1.29 43.07,-1.26 43.13,-1.34 43.12,-1.36 43.09,-1.35 43.09,-1.36 43.04,-1.43 43.05,-1.46 43.09,-1.4 43.12,-1.39 43.18,-1.37 43.18,-1.37 43.26,-1.39 43.28,-1.50507954204938 43.2927866157833,-1.5051525 43.2928323,-1.5059563 43.2933305,-1.5059611 43.2933706,-1.5059426 43.2934816,-1.506012 43.2934935,-1.510548 43.2934045,-1.5142976 43.2941461,-1.5151019 43.294005,-1.51544325483209 43.2939381394258,-1.57 43.3,-1.58 43.26,-1.61 43.26,-1.62 43.32,-1.73 43.31,-1.73 43.34,-1.77 43.36,-1.72 43.38,-1.65 43.38,-1.61 43.41,-1.56 43.46,-1.56 43.48,-1.54 43.48,-1.54 43.5,-1.51 43.52,-1.51 43.54,-1.44 43.63,-1.41 43.79,-1.36 43.91,-1.32 44.1,-1.3 44.13,-1.24 44.46,-1.25 44.54,-1.2 44.59,-1.19 44.65,-1.07 44.63,-1.01 44.66,-1.01 44.68,-1.05 44.72,-1.15 44.78,-1.18 44.78,-1.19 44.74,-1.24 44.71,-1.19 44.98,-1.18 45.14,-1.15 45.28,-1.15 45.43,-1.13 45.51,-1.11 45.51,-1.07 45.56,-1.08 45.51,-1.06 45.49,-1.02 45.48,-0.98 45.44,-0.93 45.43,-0.91 45.4,-0.84 45.37,-0.8 45.33,-0.76 45.26,-0.76 45.22,-0.68 45.23,-0.73 45.4,-0.83 45.51,-0.9 45.54,-0.92 45.57,-0.97 45.57,-1.01 45.63,-1.1 45.65,-1.2 45.71,-1.23 45.71,-1.23 45.78,-1.13 45.79,-1.12 45.81,-1.14 45.85,-1.08 45.87,-1.06 45.91,-1.07 45.94,-1.02 45.95,-1.02 45.92,-1 45.92,-0.99 45.9,-0.96 45.91,-0.96 45.93,-0.99 45.93,-0.98 45.98,-1.01 45.99,-1.03 45.97,-1.07 45.97,-1.04 46,-1.05 46.05,-1.08 46.06,-1.12 46.14,-1.15 46.14,-1.14 46.17,-1.21 46.16,-1.19 46.18,-1.19 46.21,-1.11 46.25,-1.12 46.31,-1.19 46.32,-1.21 46.29,-1.24 46.3,-1.28 46.29,-1.34 46.35,-1.46 46.35,-1.47 46.38,-1.52 46.42,-1.62 46.42,-1.66 46.45,-1.75 46.48,-1.76 46.5,-1.81 46.5,-1.81 46.54,-1.84 46.58,-1.84 46.61,-1.9 46.65,-1.9 46.67,-1.93 46.7,-1.97 46.7,-1.97 46.73,-2.14 46.83,-2.14 46.88,-2.12 46.88,-2.11 46.91,-2.06 46.93,-2.03 46.97,-2.04 46.98,-2.01 47.01,-1.98 47.01,-1.97 47.03,-1.99 47.07,-2.03 47.08,-2.06 47.11,-2.22 47.14,-2.16 47.15,-2.15 47.17,-2.16 47.22,-2.15 47.28,-2.17 47.31,-2.19 47.31,-2.2 47.28,-2.23 47.28,-2.3 47.24,-2.36 47.29,-2.42 47.29,-2.43 47.27,-2.47 47.28,-2.46 47.32,-2.48 47.32,-2.51 47.37,-2.53 47.37,-2.52 47.39,-2.42 47.41,-2.45 47.46,-2.48 47.46,-2.48 47.48,-2.44 47.48,-2.43 47.51,-2.48 47.52,-2.49 47.54,-2.53 47.54,-2.56 47.52,-2.57 47.56,-2.59 47.56,-2.62 47.54,-2.64 47.55,-2.65 47.53,-2.68 47.54,-2.68 47.51,-2.74 47.52,-2.78 47.5,-2.84 47.5,-2.86 47.54,-2.96 47.57,-2.98 47.6,-3.01 47.6,-3.01 47.63,-3.03 47.65,-3.05 47.64,-3.04 47.59,-3.06 47.58,-3.18 47.62,-3.28 47.71,-3.33 47.72,-3.29 47.75,-3.3 47.78,-3.33 47.78,-3.34 47.75,-3.36 47.74,-3.39 47.74,-3.39 47.71,-3.46 47.71,-3.53 47.78,-3.63 47.78,-3.63 47.8,-3.69 47.79,-3.69 47.81,-3.64 47.81,-3.64 47.83,-3.66 47.84,-3.68 47.83,-3.71 47.84,-3.71 47.82,-3.73 47.82,-3.73 47.85,-3.76 47.86,-3.76 47.8366713015408)),((1.99455263142727 42.4891052628546,1.9984575 42.4852149,1.9983009 42.4852135,1.9980312 42.4852127,1.9978933 42.4851355,1.9977688 42.4851402,1.9973813 42.48518,1.9972154 42.4851795,1.9969599 42.4851071,1.9967047 42.4849937,1.9964638 42.4847933,1.9963742 42.4847368,1.9962429 42.4847312,1.9960285 42.4847408,1.9959111 42.4847098,1.9957179 42.4846324,1.9954626 42.4845344,1.9952209 42.4844824,1.995048 42.4844717,1.9948682 42.4844865,1.9946536 42.4845216,1.99446 42.4845262,1.9942319 42.4844999,1.9939624 42.4844683,1.9937273 42.4844625,1.9932364 42.4844507,1.9929048 42.4843985,1.9927877 42.4843163,1.9926503 42.4841572,1.9925753 42.4839727,1.9925483 42.4838651,1.9924038 42.4837367,1.9922593 42.4835981,1.9921634 42.4834494,1.9919641 42.4832235,1.9916961 42.482931,1.9916208 42.4828028,1.9915737 42.4825672,1.9915335 42.4823367,1.9915064 42.4822394,1.9913413 42.4821007,1.9912731 42.4819316,1.99126 42.4817985,1.9912956 42.4816195,1.9913313 42.4814251,1.991332 42.4813022,1.9911892 42.4808668,1.9911421 42.4806363,1.9910667 42.4805337,1.9910189 42.4804158,1.9909226 42.4803234,1.9906822 42.4800565,1.9906414 42.4799335,1.9906077 42.4797697,1.99056 42.4796569,1.9904223 42.4795388,1.9903332 42.4794054,1.9902446 42.479185,1.9901906 42.4789546,1.9900672 42.478775,1.9899642 42.4786468,1.989889 42.4784879,1.9897736 42.4781088,1.9897263 42.4779192,1.9895616 42.4776986,1.9892734 42.4773139,1.9891153 42.4771547,1.9888465 42.4770003,1.9887572 42.4769028,1.9886338 42.4767182,1.9885033 42.4765693,1.9883587 42.4764665,1.9881792 42.4764199,1.9878895 42.4762961,1.9876414 42.4761521,1.9870061 42.4757291,1.9868991 42.4756979,1.9865536 42.4756924,1.9864644 42.4756701,1.9863579 42.4755463,1.9863048 42.4754403,1.9863054 42.4753477,1.9863418 42.4752287,1.9863841 42.4751186,1.9863969 42.4749775,1.9863819 42.4744659,1.9864302 42.4743646,1.9864785 42.4742545,1.9864976 42.4740429,1.9864681 42.4739899,1.9864626 42.4739149,1.986487 42.4738047,1.9865605 42.4734654,1.9865253 42.4733595,1.9864842 42.4732535,1.9864729 42.473152,1.9864991 42.4727331,1.9865355 42.4726186,1.9865899 42.4724821,1.9866387 42.4722926,1.9866512 42.4721824,1.9866667 42.4715694,1.9866915 42.4714019,1.9867701 42.4711993,1.9869809 42.4707943,1.9870467 42.470746,1.9871188 42.4706448,1.9871552 42.4705302,1.9872394 42.4703805,1.9873836 42.4701649,1.9873373 42.4699266,1.9873627 42.4696621,1.9876432 42.4695571,1.9885446 42.4692336,1.9889263 42.4691466,1.9894641 42.4688396,1.9894823 42.4687911,1.9896585 42.4681875,1.9897124 42.468126,1.9898319 42.468069,1.9899036 42.4680207,1.9899457 42.4679547,1.9903718 42.4673915,1.9905574 42.4672245,1.9907129 42.4671104,1.9908984 42.4669654,1.9910124 42.4668291,1.9911324 42.4666751,1.9912461 42.4665784,1.9914556 42.4663983,1.9915994 42.4662488,1.9917194 42.4660948,1.9918997 42.4658043,1.9919902 42.4656017,1.9920265 42.4655136,1.9921164 42.4654125,1.9921404 42.4653729,1.9922037 42.4647204,1.9921864 42.4646145,1.9921808 42.4645571,1.992199 42.4644866,1.9922115 42.4643941,1.9920544 42.4637409,1.9919059 42.4636566,1.9916454 42.4633912,1.9917013 42.4629813,1.9916789 42.4627254,1.9917389 42.4626462,1.9916922 42.4624873,1.9919071 42.4623998,1.9926594 42.4620802,1.9926537 42.4620229,1.9931309 42.4618964,1.9942105 42.4616175,1.9953376 42.4613608,1.9957313 42.4612562,1.9964532 42.4610423,1.9974436 42.4607234,1.9983211 42.4603733,1.9989001 42.4601457,1.9996138 42.4598488,2.000088 42.4596466,2.0024347 42.458538,2.006426 42.4565948,2.0105183 42.4558992,2.0119365 42.4530265,2.0137479 42.4521793,2.0143702 42.4518009,2.0132978 42.4497384,2.0099935 42.4496677,2.0079552 42.4490517,2.0038474 42.4477077,2.002498 42.4474424,1.9985737 42.4471576,1.9920666 42.4471398,1.9900287 42.4469777,1.9849617 42.4469698,1.9838237 42.4468906,1.9821435 42.4473621,1.9805672 42.4478785,1.9801201 42.4480551,1.9790314 42.4482992,1.9766419 42.4490294,1.9735718 42.4501858,1.97045 42.4510518,1.9699003 42.4514928,1.9692161 42.4520757,1.9671368 42.452467,1.9650272 42.4527674,1.9625467 42.4531483,1.9603318 42.4533555,1.9567647 42.4577132,1.9567018 42.4586726,1.957434 42.4612116,1.958093 42.462373,1.9582733 42.464485,1.9595575 42.4679636,1.9602762 42.4705683,1.9626931 42.4788014,1.9701984 42.4804783,1.9718178 42.484434,1.9731127 42.4852686,1.9771631 42.485538,1.9780831 42.4860529,1.978064 42.4869334,1.977528 42.4876608,1.9778726 42.4879863,1.9780831 42.4886945,1.9771451 42.4905131,1.9777003 42.4915277,1.9782937 42.4919679,1.9794805 42.4934228,1.9798634 42.4944565,1.980074 42.4952796,1.981023 42.4950916,1.9871626 42.4936767,1.98733742624255 42.4936687131213,1.98 42.49,1.98 42.48,1.99 42.48,1.99455263142727 42.4891052628546)),((8.58 42.36,8.62 42.38,8.62 42.41,8.64 42.4,8.67 42.41,8.67 42.44,8.69 42.46,8.68 42.51,8.72 42.51,8.74 42.56,8.8 42.55,8.82 42.59,8.88 42.6,8.92 42.63,8.94 42.62,9.03 42.63,9.07 42.65,9.09 42.71,9.16 42.73,9.22 42.72,9.25 42.69,9.27 42.69,9.27 42.67,9.3 42.66,9.36 42.74,9.35 42.81,9.33 42.82,9.35 42.86,9.34 42.9,9.37 42.91,9.36 42.99,9.44 42.99,9.48 42.83,9.48 42.79,9.46 42.78,9.44 42.71,9.44 42.65,9.52 42.57,9.52 42.36,9.55 42.29,9.55 42.13,9.52 42.08,9.4 41.96,9.38 41.8,9.39 41.7,9.37 41.69,9.38 41.65,9.34 41.65,9.34 41.63,9.31 41.64,9.28 41.62,9.28 41.58,9.34 41.59,9.34 41.57,9.3 41.56,9.29 41.54,9.26 41.54,9.27 41.48,9.21 41.45,9.22 41.42,9.2 41.42,9.2 41.4,9.22 41.39,9.2 41.37,9.17 41.4,9.13 41.4,9.12 41.45,9.07 41.45,9.09 41.49,8.97 41.49,8.9 41.53,8.87 41.53,8.86 41.56,8.81 41.57,8.8 41.62,8.88 41.64,8.93 41.69,8.84 41.72,8.79 41.72,8.79 41.75,8.71 41.74,8.75 41.8,8.78 41.8,8.8 41.84,8.81 41.91,8.78 41.94,8.73 41.94,8.73 41.92,8.68 41.91,8.62 41.91,8.63 41.95,8.61 41.96,8.68 41.97,8.67 42.01,8.73 42.02,8.76 42.05,8.74 42.08,8.72 42.08,8.72 42.11,8.7 42.13,8.66 42.12,8.6 42.14,8.6 42.19,8.58 42.23,8.69 42.25,8.71 42.27,8.69 42.3,8.63 42.32,8.64 42.35,8.58 42.36)),((9.22 41.39,9.23 41.4,9.23 41.39,9.22 41.39)),((9.11 41.41,9.11 41.4,9.1 41.4,9.1 41.41,9.11 41.41)),((-0.55 42.8,-0.55 42.79,-0.56 42.79,-0.55 42.8)),((4.84 43.44,4.85 43.44,4.85 43.43,4.84 43.43,4.84 43.44)),((4.18 50.25,4.18 50.26,4.21 50.26,4.21 50.25,4.18 50.25)),((-3.99 48.7,-3.99 48.71,-3.98 48.71,-3.99 48.7)),((-1.07 45.98,-1.08 45.98,-1.08 45.99,-1.07 45.99,-1.07 45.98)),((-1.39 46.03,-1.33 46,-1.32 45.98,-1.25 45.98,-1.24 45.91,-1.2 45.89,-1.22 45.86,-1.21 45.83,-1.23 45.81,-1.25 45.88,-1.28 45.91,-1.35 45.93,-1.38 45.96,-1.39 46.03)),((-1.39 46.19,-1.36 46.2,-1.34 46.18,-1.3 46.18,-1.29 46.15,-1.35 46.16,-1.39 46.19)),((-1.52 46.25,-1.51 46.25,-1.51 46.24,-1.52 46.25)),((-1.54 46.23,-1.53 46.24,-1.53 46.22,-1.54 46.22,-1.54 46.23)),((-1.53 46.22,-1.52 46.21,-1.53 46.21,-1.53 46.22)),((-2.18 46.95,-2.17 46.95,-2.17 46.94,-2.18 46.94,-2.18 46.95)),((-2.17 46.94,-2.16 46.94,-2.16 46.93,-2.17 46.93,-2.17 46.94)),((-2.28 47.02,-2.25 47.01,-2.25 46.97,-2.29 46.99,-2.28 47.02)),((-2.34 46.71,-2.32 46.71,-2.32 46.7,-2.34 46.7,-2.34 46.71)),((-2.35 46.71,-2.38 46.71,-2.38 46.72,-2.35 46.72,-2.35 46.71)),((-3.25 47.36,-3.23 47.37,-3.22 47.35,-3.16 47.35,-3.15 47.32,-3.08 47.3,-3.09 47.29,-3.16 47.31,-3.22 47.3,-3.25 47.36)),((-3.14 47.51,-3.13 47.51,-3.13 47.5,-3.14 47.5,-3.14 47.51)),((-3.47 47.64,-3.46 47.64,-3.46 47.63,-3.47 47.63,-3.47 47.64)),((-4.57 48.27,-4.57 48.26,-4.59 48.26,-4.59 48.27,-4.57 48.27)))')) 
     50    COUNT(*) = 1 
    5351""" 
    5452 
  • analysers/analyser_osmosis_way_approximate.py

    rfeccd33 re00d14f  
    7777        ) 
    7878    )/2 AS d, 
    79     type 
     79    type, 
     80    {3} 
    8081FROM ( 
    8182    SELECT 
     
    8384        ST_Transform(linestring, 2154) AS linestring, 
    8485        generate_series(2, ST_NPoints(linestring)-1) AS index, 
    85         COALESCE(tags->'railway', tags->'waterway', tags->'highway') AS type 
     86        tags->'{1}' AS type 
    8687    FROM 
    8788        {0}ways AS ways 
    8889    WHERE 
    89         ( 
    90             (tags?'railway' AND tags->'railway' = 'rail') OR 
    91             (tags?'waterway' AND tags->'waterway' = 'river') OR 
    92             (tags?'highway' AND tags->'highway' IN ('motorway', 'trunk', 'primary', 'secondary')) 
    93         ) AND 
     90        tags?'{1}' AND tags->'{1}' IN ('{2}') AND 
    9491        ST_NPoints(linestring) >= 4 
    9592) AS foo 
     
    114111    def __init__(self, config, logger = None): 
    115112        Analyser_Osmosis.__init__(self, config, logger) 
    116         self.classs_change[1] = {"item":"1190", "level": 3, "tag": ["geom", "highway", "railway"], "desc":{"fr":"Chemin approximatif", "en":"Approximate way"} } 
    117         self.callback10 = lambda res: {"class":1, "subclass":abs(int(hash(res[3]))), "data":[self.way_full, self.positionAsText], "text": {"en": "%s discart from %sm" % (res[3], res[2]), "fr": "Flèche de %sm sur %s" % (res[2], res[3])}} 
     113        self.tags = ( (10, "railway", ("rail",)), 
     114                      (20, "waterway", ("river",)), 
     115                      (30, "highway", ("motorway", "trunk", "primary", "secondary")), 
     116                    ) 
     117        for t in self.tags: 
     118            self.classs_change[t[0]] = {"item":"1190", "level": 3, "tag": ["geom", "highway", "railway"], "desc":{"fr":"%s approximatif" % t[1], "en":"Approximate %s" % t[1]} } 
     119        self.callback10 = lambda res: {"class":res[4], "subclass":abs(int(hash(res[3]))), "data":[self.way_full, self.positionAsText], "text": {"en": "%s discart from %sm" % (res[3], res[2]), "fr": "Flèche de %sm sur %s" % (res[2], res[3])}} 
    118120 
    119121    def analyser_osmosis_all(self): 
    120122        self.run(sql10) 
    121123        self.run(sql11) 
    122         self.run(sql12.format(""), self.callback10) 
     124        for t in self.tags: 
     125            self.run(sql12.format("", t[1], "', '".join(t[2]), t[0]), self.callback10) 
    123126 
    124127    def analyser_osmosis_touched(self): 
    125128        self.run(sql10) 
    126129        self.run(sql11) 
    127         self.run(sql12.format("touched_"), self.callback10) 
     130        for t in self.tags: 
     131            self.run(sql12.format("", t[1], ", ".join(t[2]), t[0]), self.callback10) 
  • plugins/TagFix_Wikipedia.py

    r7b8c839 r5c6c2f8  
    2727    def init(self, logger): 
    2828        Plugin.init(self, logger) 
    29         self.errors[30310] = { "item": 3031, "level": 2, "tag": ["value", "wikipedia"], "desc": {"en": u"Not a Wikipedia URL"} } 
    30         self.errors[30311] = { "item": 3031, "level": 2, "tag": ["value", "wikipedia"], "desc": {"en": u"Use Wikipedia title instead of an url"} } 
    31         self.errors[30312] = { "item": 3031, "level": 2, "tag": ["value", "wikipedia"], "desc": {"en": u"Missing Wikipedia language before article title"} } 
    32         self.errors[30313] = { "item": 3031, "level": 2, "tag": ["value", "wikipedia"], "desc": {"en": u"Use human Wikipedia page title"} } 
    33         self.errors[30314] = { "item": 3031, "level": 2, "tag": ["value", "wikipedia"], "desc": {"en": u"Missing primary Wikipedia tag"} } 
    34         self.errors[30315] = { "item": 3031, "level": 2, "tag": ["value", "wikipedia"], "desc": {"en": u"Invalid wikipedia sufix"} } 
     29        self.errors[30310] = { "item": 3031, "level": 2, "tag": ["value", "wikipedia"], "desc": {"en": u"Not a Wikipedia URL", "fr": u"L'URL n'appartient pas au domaine wikipedia."} } 
     30        self.errors[30311] = { "item": 3031, "level": 2, "tag": ["value", "wikipedia"], "desc": {"en": u"Use Wikipedia title instead of an url", "fr": u"Utilisez le titre de l'article plutôt que l'URL"} } 
     31        self.errors[30312] = { "item": 3031, "level": 2, "tag": ["value", "wikipedia"], "desc": {"en": u"Missing Wikipedia language before article title", "fr": u"Le nom de l'article wikipedia doit-être prefixé par un code langue ('fr:' par exemple)"} } 
     32        self.errors[30313] = { "item": 3031, "level": 2, "tag": ["value", "wikipedia"], "desc": {"en": u"Use human Wikipedia page title"}, "fr": u"Utilisez le nom tel qu'il apparait dans l'article, et non telqu'il apparait dans l'URL de la page" } 
     33        self.errors[30314] = { "item": 3031, "level": 2, "tag": ["value", "wikipedia"], "desc": {"en": u"Missing primary Wikipedia tag", "fr": u"Un tag 'wikipedia' doit être présent avant d'utiliser des tags 'wikipedia:LANG'"} } 
     34        self.errors[30315] = { "item": 3031, "level": 2, "tag": ["value", "wikipedia"], "desc": {"en": u"Invalid wikipedia sufix", "fr": u"Utilisation incorrect d'un tag 'wikipedia:xxx', xxx devrait être un autre attribut ou un code langue"} } 
    3535 
    3636        import re 
    37         self.wiki_regexp = re.compile(u"(http://)?([^\.]+)\.wikipedia.+/wiki/(.+)") 
     37        self.wiki_regexp = re.compile(u"(https?://)?([^\.]+)\.wikipedia.+/wiki/(.+)") 
    3838        self.lang_regexp = re.compile(u"[-a-z]+:.*") 
    3939        self.lang = ["en", "de", "fr", "nl", "it", "es", "pl", "ru", "ja", "pt", "zh", "sv", "vi", "uk", "ca", "no", "fi", "cs", "fa", "hu", "ko", "ro", "id", "ar", "tr", "kk", "sk", "eo", "da", "sr", "lt", "eu", "ms", "he", "bg", "sl", "vo", "hr", "war", "hi", "et"] 
     
    5050        if wikipediaTag in tags: 
    5151            m = self.wiki_regexp.match(tags[wikipediaTag]) 
    52             if tags[wikipediaTag].startswith("http://") and not m: 
     52            if (tags[wikipediaTag].startswith("http://") or tags[wikipediaTag].startswith("https://")) and not m: 
    5353                # tag 'wikipedia' starts with 'http://' but it's not a wikipedia url 
    5454                return [(30310, 0, {})] 
     
    7575                    m = self.wiki_regexp.match(tags[tag]) 
    7676                    if m: 
    77                         value = self.human_readable(m.group(2)) 
     77                        value = self.human_readable(m.group(3)) 
     78                    elif tags[tag].startswith(sufix+":"): 
     79                        value = tags[tag][len(sufix)+1:] 
    7880                    else: 
    7981                        value = self.human_readable(tags[tag]) 
     
    128130    check( { "wikipedia": "http://fr.wikipedia.org/wiki/Tour_Eiffel"}, 
    129131        has_error = "Use Wikipedia title instead of an url", 
    130         fix = { "wikipedia": u"fr:Tour Eiffel"})         
     132        fix = { "wikipedia": u"fr:Tour Eiffel"}) 
     133     
     134    check( { "wikipedia": "https://fr.wikipedia.org/wiki/Tour_Eiffel"}, 
     135        has_error = "Use Wikipedia title instead of an url", 
     136        fix = { "wikipedia": u"fr:Tour Eiffel"}) 
    131137     
    132138    check( { "wikipedia": "fr.wikipedia.org/wiki/Tour_Eiffel"}, 
     
    139145        fix = {'+': {'wikipedia': u'fr:Tour Eiffel'}, '-': ['wikipedia:fr']}) 
    140146     
     147    check( {"wikipedia:fr" : u"fr:Tour Eiffel"}, 
     148        has_error = u"Missing primary Wikipedia tag", 
     149        fix = {'+': {'wikipedia': u'fr:Tour Eiffel'}, '-': ['wikipedia:fr']}) 
     150     
     151    check( { "wikipedia:fr": "http://fr.wikipedia.org/wiki/Tour_Eiffel"}, 
     152        has_error = u"Missing primary Wikipedia tag", 
     153        fix = {'+': {'wikipedia': u'fr:Tour Eiffel'}, '-': ['wikipedia:fr']}) 
     154         
     155    check( { "wikipedia:fr": "fr.wikipedia.org/wiki/Tour_Eiffel"}, 
     156        has_error = u"Missing primary Wikipedia tag", 
     157        fix = {'+': {'wikipedia': u'fr:Tour Eiffel'}, '-': ['wikipedia:fr']}) 
     158      
    141159    # Missing lang in value 
    142160    check( { "wikipedia": "Tour Eiffel"}, 
     
    147165        has_error = u"Use human Wikipedia page title", 
    148166        fix = { "wikipedia": u"fr:Tour Eiffel"}) 
    149      
     167         
     168    check( { "wikipedia": u"fr:Château_de_Gruyères_(Ardennes)"}, 
     169        has_error = u"Use human Wikipedia page title", 
     170        fix = { "wikipedia": u"fr:Château de Gruyères (Ardennes)"}) 
    150171     
    151172    check( { "name" : "Rue Jules Verne", 
Note: See TracChangeset for help on using the changeset viewer.