Changeset 5788a14 in osmose-backend


Ignore:
Timestamp:
Jul 1, 2014 3:36:12 PM (5 years ago)
Author:
Frédéric Rodrigo <fred.rodrigo@…>
Branches:
master
Children:
8cbece2
Parents:
9356c1c
git-author:
Frédéric Rodrigo <fred.rodrigo@…> (29/06/2014 14:35:05)
git-committer:
Frédéric Rodrigo <fred.rodrigo@…> (01/07/2014 15:36:12)
Message:

Add check into analyser_osmosis_relation_associatedStreet for addr:city

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • analysers/analyser_osmosis_relation_associatedStreet.py

    rdea30cd r5788a14  
    452452""" 
    453453 
     454sqlC0 = """ 
     455CREATE TABLE {0}addr_city AS 
     456( 
     457    SELECT 
     458        'N'::char(1) AS type, 
     459        id, 
     460        tags->'addr:city' AS city 
     461    FROM 
     462        {0}nodes 
     463    WHERE 
     464        tags?'addr:city' 
     465) UNION ( 
     466    SELECT 
     467        'W'::char(1) AS type, 
     468        id, 
     469        tags->'addr:city' AS city 
     470    FROM 
     471        {0}ways 
     472    WHERE 
     473        tags?'addr:city' 
     474) 
     475""" 
     476 
     477sqlC1 = """ 
     478CREATE TABLE admin_8 AS 
     479SELECT 
     480    'R'::char(1) AS type, 
     481    id, 
     482    tags->'name' AS city 
     483FROM 
     484    relations 
     485WHERE 
     486    tags?'type' AND 
     487    tags->'type' = 'boundary' AND 
     488    tags?'boundary' AND 
     489    tags->'boundary' = 'administrative' AND 
     490    tags->'admin_level' IN ('{0}') AND 
     491    tags?'name' 
     492""" 
     493 
     494sqlC2 = """ 
     495SELECT 
     496    id, 
     497    type, 
     498    ST_AsText(any_locate(type, id)) 
     499FROM 
     500    ( 
     501    SELECT 
     502        c.city 
     503    FROM 
     504        (SELECT city FROM addr_city GROUP BY city) AS c 
     505        NATURAL LEFT JOIN {0}admin_8 
     506    WHERE 
     507        {0}admin_8.city IS NULL 
     508    ) AS t 
     509    NATURAL JOIN addr_city 
     510""" 
     511 
    454512class Analyser_Osmosis_Relation_AssociatedStreet(Analyser_Osmosis): 
    455513 
     
    465523        self.classs[8] = {"item":"2060", "level": 2, "tag": ["addr", "relation", "fix:chair"], "desc": T_(u"Many relations on one street") } 
    466524        self.classs[9] = {"item":"2060", "level": 2, "tag": ["addr", "geom", "fix:chair"], "desc": T_(u"House too far away from street") } 
     525        if self.config.options.get("addr:city-admin_level"): 
     526            self.classs[12] = {"item":"2060", "level": 2, "tag": ["addr", "fix:chair"], "desc": T_(u"Tag \"addr:city\" not matching a city") } 
    467527        self.callback20 = lambda res: {"class":2, "subclass":1, "data":[self.relation_full, self.positionAsText]} 
    468528        self.callback30 = lambda res: {"class":3, "subclass":1, "data":[self.way_full, self.relation, self.positionAsText]} 
     
    471531        self.callback50 = lambda res: {"class":5, "subclass":1, "data":[self.node_full, self.relation, self.positionAsText]} 
    472532        self.callback51 = lambda res: {"class":5, "subclass":1, "data":[self.way_full, self.relation, self.positionAsText]} 
     533        self.callbackC2 = lambda res: {"class":12, "subclass":1, "data":[lambda t: self.typeMapping[res[1]], None, self.positionAsText]} 
    473534 
    474535    def analyser_osmosis(self): 
    475         byType = {'N':self.node_full, 'W':self.way_full} 
    476536        self.run(sql10, lambda res: {"class":1, "subclass":1, "data":[self.way_full, self.positionAsText]} ) 
    477537        self.run(sql11, lambda res: {"class":1, "subclass":2, "data":[self.node_full, self.positionAsText]} ) 
     
    479539        self.run(sql61) 
    480540        self.run(sql62, lambda res: {"class":6, "subclass":1, 
    481             "data":[lambda t: byType[res[1]], None, self.positionAsText], 
     541            "data":[lambda t: self.typeMapping[res[1]], None, self.positionAsText], 
    482542            "text":{"fr": u"Multiples numéros \"%s\" dans la voie \"%s\"" % (res[4], res[3]), "en": u"Multiple numbers \"%s\" in way \"%s\"" % (res[4], res[3])} } ) 
    483543        self.run(sql70) 
     
    485545        self.run(sql90) 
    486546        self.run(sqlA0, lambda res: {"class":8, "subclass":1, "data":[self.relation_full, self.relation_full, self.positionAsText]} ) 
    487         self.run(sqlB0, lambda res: {"class":9, "subclass":1, "data":[lambda t: byType[res[1]], None, self.positionAsText, self.relation_full]} ) 
     547        self.run(sqlB0, lambda res: {"class":9, "subclass":1, "data":[lambda t: self.typeMapping[res[1]], None, self.positionAsText, self.relation_full]} ) 
    488548 
    489549    def analyser_osmosis_all(self): 
     
    494554        self.run(sql50.format("", ""), self.callback50) 
    495555        self.run(sql51.format("", ""), self.callback51) 
     556        if self.config.options.get("addr:city-admin_level"): 
     557            self.run(sqlC0.format("")) 
     558            self.run(sqlC1.format("','".join(self.config.options.get("addr:city-admin_level").split(',')))) 
     559            self.run(sqlC2.format(""), self.callbackC2) 
    496560 
    497561    def analyser_osmosis_touched(self): 
     
    508572        self.run(sql51.format("touched_", ""), lambda res: dup51.add(res[0]) or self.callback51(res)) 
    509573        self.run(sql51.format("", "touched_"), lambda res: res[0] in dup51 or dup51.add(res[0]) or self.callback51(res)) 
     574        if self.config.options.get("addr:city-admin_level"): 
     575            self.run(sqlC0.format("touched_")) 
     576            self.run(sqlC1.format("touched_")) 
     577            self.run(sqlC2.format("touched_"), self.callbackC2) 
  • osmose_config.py

    r9356c1c r5788a14  
    202202        if not analyser_options: 
    203203            analyser_options = {} 
    204         analyser_options.update({"country": "FR", "language": "fr", "proj": proj}) 
     204        analyser_options.update({"country": "FR", "language": "fr", "proj": proj, "addr:city-admin_level": "8,9"}) 
    205205        default_country.__init__(self, part, country, polygon_id, analyser_options, 
    206206                                        download_repo, download_country) 
Note: See TracChangeset for help on using the changeset viewer.