Changeset c95a108 in osmose-backend


Ignore:
Timestamp:
Jan 3, 2013 9:10:54 PM (7 years ago)
Author:
Jocelyn Jaubert <jocelyn.jaubert@…>
Branches:
master
Children:
dd5c955
Parents:
d534d91
git-author:
Jocelyn Jaubert <jocelyn.jaubert@…> (01/01/2013 13:25:56)
git-committer:
Jocelyn Jaubert <jocelyn.jaubert@…> (03/01/2013 21:10:54)
Message:

Fix indentation in analyser_admin_level

File:
1 edited

Legend:

Unmodified
Added
Removed
  • analysers/analyser_admin_level.py

    rfeccd33 rc95a108  
    3131    def __init__(self): 
    3232        self.ways = {} 
    33         self.rels = {}         
     33        self.rels = {} 
    3434    def WayCreate(self, data): 
    3535        if data[u"tag"].get(u"boundary", None) <> u"administrative": 
     
    4545class Analyser_Admin_Level(Analyser): 
    4646 
    47   def __init__(self, config, logger = OsmoseLog.logger()): 
    48     Analyser_Osmosis.__init__(self, config, logger) 
     47    def __init__(self, config, logger = OsmoseLog.logger()): 
     48        Analyser_Osmosis.__init__(self, config, logger) 
    4949 
    50   def analyser(self): 
    51      
    52     o = DataHandler() 
    53     i = OsmSaxAlea.OsmSaxReader(self.config.src) 
    54      
    55     ## get relations 
    56     self.logger.log("get ways data") 
    57     i.CopyWayTo(o) 
    58     wdta = o.ways 
    59      
    60     ## get ways id 
    61     self.logger.log("get relations data") 
    62     i.CopyRelationTo(o) 
    63     rdta = o.rels     
     50    def analyser(self): 
    6451 
    65     del i, o 
    66      
    67     ## start output 
    68     outxml = OsmSax.OsmSaxWriter(open(self.config.dst, "w"), "UTF-8") 
    69     outxml.startDocument() 
    70     outxml.startElement("analyser", {"timestamp":time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())}) 
    71     outxml.startElement("class", {"id":"1", "item":"6050"}) 
    72     outxml.Element("classtext", {"lang":"fr", "title":"Mauvais niveau administratif", "menu":"admin_level"}) 
    73     outxml.Element("classtext", {"lang":"en", "title":"Wrong administrative level", "menu":"admin_level"}) 
    74     outxml.endElement("class") 
    75     api = OsmSaxAlea.OsmSaxReader(self.config.src) 
     52        o = DataHandler() 
     53        i = OsmSaxAlea.OsmSaxReader(self.config.src) 
    7654 
    77     ## find admin level 
    78     way_to_level = {} 
    79     rel_to_level = {} 
    80     for wid in wdta: 
    81         way_to_level[wid] = 99 
    82     for rid in rdta: 
    83         rel_to_level[rid] = 99 
    84      
    85     for rid in rdta: 
    86          
    87         try: 
    88             level = int(rdta[rid]["tag"]["admin_level"]) 
    89         except: 
    90             # find node in relation 
    91             wid = [x["ref"] for x in rdta[rid]["member"] if x["type"]=="way"] 
    92             if not wid: 
     55        ## get relations 
     56        self.logger.log("get ways data") 
     57        i.CopyWayTo(o) 
     58        wdta = o.ways 
     59 
     60        ## get ways id 
     61        self.logger.log("get relations data") 
     62        i.CopyRelationTo(o) 
     63        rdta = o.rels 
     64 
     65        del i, o 
     66 
     67        ## start output 
     68        outxml = OsmSax.OsmSaxWriter(open(self.config.dst, "w"), "UTF-8") 
     69        outxml.startDocument() 
     70        outxml.startElement("analyser", {"timestamp":time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())}) 
     71        outxml.startElement("class", {"id":"1", "item":"6050"}) 
     72        outxml.Element("classtext", {"lang":"fr", "title":"Mauvais niveau administratif", "menu":"admin_level"}) 
     73        outxml.Element("classtext", {"lang":"en", "title":"Wrong administrative level", "menu":"admin_level"}) 
     74        outxml.endElement("class") 
     75        api = OsmSaxAlea.OsmSaxReader(self.config.src) 
     76 
     77        ## find admin level 
     78        way_to_level = {} 
     79        rel_to_level = {} 
     80        for wid in wdta: 
     81            way_to_level[wid] = 99 
     82        for rid in rdta: 
     83            rel_to_level[rid] = 99 
     84 
     85        for rid in rdta: 
     86 
     87            try: 
     88                level = int(rdta[rid]["tag"]["admin_level"]) 
     89            except: 
     90                # find node in relation 
     91                wid = [x["ref"] for x in rdta[rid]["member"] if x["type"]=="way"] 
     92                if not wid: 
     93                    continue 
     94                wid = wid[0] 
     95                wta = api.WayGet(wid) 
     96                if not wta["nd"]: 
     97                    continue 
     98                nid = wta["nd"][0] 
     99                nta = api.NodeGet(nid) 
     100                if not nta: 
     101                    continue 
     102                # add error to xml 
     103                outxml.startElement("error", {"class":"1"}) 
     104                outxml.Element("text", {"lang":"fr", "value":"admin_level illisible"}) 
     105                outxml.Element("text", {"lang":"en", "value":"admin_level unreadable"}) 
     106                outxml.RelationCreate(rdta[rid]) 
     107                outxml.Element("location", {"lat":str(nta["lat"]),"lon":str(nta["lon"])}) 
     108                outxml.endElement("error") 
    93109                continue 
    94             wid = wid[0] 
    95             wta = api.WayGet(wid) 
    96             if not wta["nd"]: 
     110 
     111            for m in rdta[rid][u"member"]: 
     112                if m[u"type"] == u"way": 
     113                    if m[u"ref"] in way_to_level: 
     114                        way_to_level[m[u"ref"]] = min(way_to_level[m[u"ref"]], level) 
     115                if m[u"type"] == u"relation": 
     116                    if m[u"ref"] in rel_to_level: 
     117                        rel_to_level[m[u"ref"]] = min(rel_to_level[m[u"ref"]], level) 
     118 
     119        ## 
     120        for wid in wdta: 
     121 
     122            try: 
     123                level = int(wdta[wid]["tag"]["admin_level"]) 
     124            except: 
     125                outxml.startElement("error", {"class":"1"}) 
     126                outxml.Element("text", {"lang":"fr", "value":"admin_level illisible"}) 
     127                outxml.Element("text", {"lang":"en", "value":"admin_level unreadable"}) 
     128                outxml.WayCreate(wdta[wid]) 
     129                n =  api.NodeGet(wdta[wid]["nd"][0]) 
     130                if n: 
     131                    outxml.Element("location", {"lat":str(n["lat"]),"lon":str(n["lon"])}) 
     132                outxml.endElement("error") 
    97133                continue 
    98             nid = wta["nd"][0] 
    99             nta = api.NodeGet(nid) 
    100             if not nta: 
     134 
     135            if way_to_level[wid] not in [99, level]: 
     136                outxml.startElement("error", {"class":"1"}) 
     137                outxml.Element("text", {"lang":"fr", "value":"admin_level devrait être %d"%way_to_level[wid]}) 
     138                outxml.Element("text", {"lang":"en", "value":"admin_level should be %d"%way_to_level[wid]}) 
     139                outxml.WayCreate(wdta[wid]) 
     140                n = api.NodeGet(wdta[wid]["nd"][0]) 
     141                if n: 
     142                    outxml.Element("location", {"lat":str(n["lat"]),"lon":str(n["lon"])}) 
     143                outxml.endElement("error") 
    101144                continue 
    102             # add error to xml 
    103             outxml.startElement("error", {"class":"1"}) 
    104             outxml.Element("text", {"lang":"fr", "value":"admin_level illisible"}) 
    105             outxml.Element("text", {"lang":"en", "value":"admin_level unreadable"}) 
    106             outxml.RelationCreate(rdta[rid]) 
    107             outxml.Element("location", {"lat":str(nta["lat"]),"lon":str(nta["lon"])}) 
    108             outxml.endElement("error")             
    109             continue 
    110          
    111         for m in rdta[rid][u"member"]: 
    112             if m[u"type"] == u"way": 
    113                 if m[u"ref"] in way_to_level: 
    114                     way_to_level[m[u"ref"]] = min(way_to_level[m[u"ref"]], level) 
    115             if m[u"type"] == u"relation": 
    116                 if m[u"ref"] in rel_to_level: 
    117                     rel_to_level[m[u"ref"]] = min(rel_to_level[m[u"ref"]], level) 
    118145 
    119     ## 
    120     for wid in wdta: 
    121          
    122         try: 
    123             level = int(wdta[wid]["tag"]["admin_level"]) 
    124         except: 
    125             outxml.startElement("error", {"class":"1"}) 
    126             outxml.Element("text", {"lang":"fr", "value":"admin_level illisible"}) 
    127             outxml.Element("text", {"lang":"en", "value":"admin_level unreadable"}) 
    128             outxml.WayCreate(wdta[wid]) 
    129             n =  api.NodeGet(wdta[wid]["nd"][0]) 
    130             if n: 
    131                 outxml.Element("location", {"lat":str(n["lat"]),"lon":str(n["lon"])}) 
    132             outxml.endElement("error") 
    133             continue 
    134          
    135         if way_to_level[wid] not in [99, level]: 
    136             outxml.startElement("error", {"class":"1"}) 
    137             outxml.Element("text", {"lang":"fr", "value":"admin_level devrait être %d"%way_to_level[wid]}) 
    138             outxml.Element("text", {"lang":"en", "value":"admin_level should be %d"%way_to_level[wid]}) 
    139             outxml.WayCreate(wdta[wid]) 
    140             n = api.NodeGet(wdta[wid]["nd"][0]) 
    141             if n: 
    142                 outxml.Element("location", {"lat":str(n["lat"]),"lon":str(n["lon"])}) 
    143             outxml.endElement("error") 
    144             continue 
     146        outxml.endElement("analyser") 
     147        outxml._out.close() 
     148        del api 
    145149 
    146     outxml.endElement("analyser") 
    147     outxml._out.close() 
    148     del api 
    149  
    150     ## update front-end 
    151     #if self.config.updt: 
    152     #    self.logger.log("update front-end") 
    153     #    urllib.urlretrieve(self.config.updt,"/dev/null") 
     150        ## update front-end 
     151        #if self.config.updt: 
     152        #    self.logger.log("update front-end") 
     153        #    urllib.urlretrieve(self.config.updt,"/dev/null") 
    154154 
    155155########################################################################### 
Note: See TracChangeset for help on using the changeset viewer.