Changeset 565b847 in osmose-backend


Ignore:
Timestamp:
May 7, 2014 11:23:42 PM (6 years ago)
Author:
Jocelyn Jaubert <jocelyn.jaubert@…>
Branches:
master
Children:
2aa1c6e
Parents:
59495b9 (diff), 07c86f3 (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.
Message:

Merge remote-tracking branch 'frodrigo/master'

Files:
9 edited

Legend:

Unmodified
Added
Removed
  • analysers/Analyser.py

    r7516869 re2ccccb  
    2121 
    2222import __builtin__ 
    23 import re 
     23import re, hashlib 
    2424from modules import OsmoseTranslation 
    2525 
     
    5959    def analyser_change(self): 
    6060        self.analyser() 
     61 
     62    def stablehash(self, s): 
     63        """ 
     64        Compute a stable positive integer hash on 32bits 
     65        @param s: a string 
     66        """ 
     67        return int(abs(int(hashlib.md5(s).hexdigest(), 16)) % 2147483647) 
  • analysers/Analyser_Merge.py

    raa65b36 re2ccccb  
    397397            self.run(sql12, lambda res: { 
    398398                "class": self.missing_official["class"], 
    399                 "subclass": str(abs(int(hash("%s%s"%(res[0],res[1]))))), 
     399                "subclass": str(self.stablehash("%s%s"%(res[0],res[1])), 
    400400                "self": lambda r: [0]+r[1:], 
    401401                "data": [self.node_new, self.positionAsText], 
     
    426426            self.run(sql30 % {"conflationDistance":self.conflationDistance}, lambda res: { 
    427427                "class": self.possible_merge["class"], 
    428                 "subclass": str(abs(int(hash("%s%s"%(res[0],str(res[3])))))), 
     428                "subclass": str(self.stablehash("%s%s"%(res[0],str(res[3])))), 
    429429                "data": [typeMapping[res[1]], None, self.positionAsText], 
    430430                "text": self.text(defaultdict(lambda:None,res[3]), defaultdict(lambda:None,res[4])), 
     
    443443            self.run(sql60 % {"official": tableOfficial, "joinClause": joinClause}, lambda res: { 
    444444                "class": self.update_official["class"], 
    445                 "subclass": str(abs(int(hash("%s%s"%(res[0],str(res[4])))))), 
     445                "subclass": str(self.stablehash("%s%s"%(res[0],str(res[4])))), 
    446446                "data": [typeMapping[res[1]], None, self.positionAsText], 
    447447                "text": self.text(defaultdict(lambda:None,res[3]), defaultdict(lambda:None,res[4])), 
  • analysers/analyser_osmosis_boundary_hole.py

    ra6719c9 re2ccccb  
    6666        sql = sql10 % (admin_level) 
    6767 
    68         self.run(sql, lambda res: {"class":1, "subclass":abs(int(hash(res[0]))), "data":[self.positionAsText]} ) 
     68        self.run(sql, lambda res: {"class":1, "subclass":self.stablehash(res[0]), "data":[self.positionAsText]} ) 
  • analysers/analyser_osmosis_orphan_nodes_cluster.py

    r80b2fb8 re2ccccb  
    5555 
    5656    def analyser_osmosis(self): 
    57         self.run(sql10, lambda res: {"class":1, "subclass":abs(int(hash(res[0]))), "data":[self.positionAsText]} ) 
     57        self.run(sql10, lambda res: {"class":1, "subclass":self.stablehash(res[0]), "data":[self.positionAsText]} ) 
  • analysers/analyser_osmosis_relation_multipolygon.py

    ra6719c9 re2ccccb  
    177177        self.classs_change[4] = {"item":"1170", "level": 1, "tag": ["relation", "geom", "fix:chair"], "desc": T_(u"Should be polygon or part of multipolygon") } 
    178178        self.callback10 = lambda res: {"class":1, "data":[self.way_full, self.way_full, self.positionAsText]} 
    179         self.callback20 = lambda res: {"class":2, "subclass":abs(int(hash(res[11]))), "data":[self.relation_full, self.way_full, self.positionAsText], 
     179        self.callback20 = lambda res: {"class":2, "subclass":self.stablehash(res[11]), "data":[self.relation_full, self.way_full, self.positionAsText], 
    180180            "text": {"en": u", ".join(map(lambda k: "%s=(%s,%s)"%k, filter(lambda k: k[1], (("landuse",res[3],res[4]), ("natural",res[5],res[6]), ("waterway",res[7],res[8]), ("building",res[9],res[10])))))} 
    181181        } 
     
    183183            "text": {"en": u", ".join(map(lambda k: "%s=(%s)"%k, filter(lambda k: k[1], (("landuse",res[2]), ("natural",res[3]), ("waterway",res[4]), ("building",res[5])))))} 
    184184        } 
    185         self.callback40 = lambda res: {"class":4, "subclass":abs(int(hash(res[6]))), "data":[self.way_full, self.positionAsText], 
     185        self.callback40 = lambda res: {"class":4, "subclass":self.stablehash(res[6]), "data":[self.way_full, self.positionAsText], 
    186186            "text": {"en": u", ".join(map(lambda k: "%s=%s"%k, filter(lambda k: k[1], (("landuse",res[2]), ("natural",res[3]), ("waterway",res[4]), ("building",res[5])))))} 
    187187        } 
  • analysers/analyser_osmosis_way_approximate.py

    r1e8ec34 re2ccccb  
    118118        for t in self.tags: 
    119119            self.classs_change[t[0]] = {"item":"1190", "level": 3, "tag": ["geom", "highway", "railway", "fix:imagery"], "desc": T_(u"Approximate %s", t[1]) } 
    120         self.callback10 = lambda res: {"class":res[4], "subclass":abs(int(hash(res[3]))), "data":[self.way_full, self.positionAsText], "text": {"en": u"%s discart from %sm" % (res[3], res[2]), "es": u"%s de %sm descartados" % (res[3], res[2]), "fr": u"Flèche de %sm sur %s" % (res[2], res[3])}} 
     120        self.callback10 = lambda res: {"class":res[4], "subclass":self.stablehash(res[3]), "data":[self.way_full, self.positionAsText], "text": {"en": u"%s discart from %sm" % (res[3], res[2]), "es": u"%s de %sm descartados" % (res[3], res[2]), "fr": u"Flèche de %sm sur %s" % (res[2], res[3])}} 
    121121 
    122122    def analyser_osmosis_all(self): 
  • plugins/Plugin.py

    r14f8392 re2ccccb  
    2020########################################################################### 
    2121 
     22import hashlib 
    2223 
    2324class Plugin(object): 
     
    123124        return mot 
    124125 
     126    def stablehash(self, s): 
     127        """ 
     128        Compute a stable positive integer hash on 32bits 
     129        @param s: a string 
     130        """ 
     131        return int(abs(int(hashlib.md5(s).hexdigest(), 16)) % 2147483647) 
     132 
    125133 
    126134########################################################################### 
  • plugins/TagFix_BadValue.py

    r6bf04e7 r07c86f3  
    4848            'sac_scale', 'service', 'shop', 'smoothness', 'sport', 'surface', 
    4949            'tactile_paving', 'toll', 'tourism', 'tracktype', 'traffic_calming', 'trail_visibility', 
    50             'tunnel', 'type', 
     50            'tunnel', 
    5151            'usage', 
    5252            'vehicle', 
    5353            'wall', 'waterway', 'wheelchair', 'wood' 
    5454            ) ) 
     55        self.check_list_open_node = self.check_list_open 
     56        self.check_list_open_way = self.check_list_open 
     57        self.check_list_open_relation = self.check_list_open.copy() 
     58        self.check_list_open_relation.add('type') 
    5559        self.exceptions_open = { "type": ( "associatedStreet", 
    5660                                           "turnlanes:lengths", 
     
    7377                          } 
    7478 
    75     def node(self, data, tags): 
     79    def check(self, data, tags, check_list_open): 
    7680        err = [] 
    7781        keyss = tags.keys() 
    7882 
    79         keys = set(keyss) & self.check_list_open 
     83        keys = set(keyss) & check_list_open 
    8084        for k in keys: 
    8185            if not self.Values_open.match(tags[k]): 
     
    9397        return err 
    9498 
     99    def node(self, data, tags): 
     100        return self.check(data, tags, self.check_list_open_node) 
     101 
    95102    def way(self, data, tags, nds): 
    96         return self.node(data, tags) 
     103        return self.check(data, tags, self.check_list_open_way) 
    97104 
    98105    def relation(self, data, tags, members): 
    99         return self.node(data, tags) 
     106        return self.check(data, tags, self.check_list_open_relation) 
     107 
     108 
     109########################################################################### 
     110from plugins.Plugin import TestPluginCommon 
     111 
     112class Test(TestPluginCommon): 
     113    def test(self): 
     114        a = TagFix_BadValue(None) 
     115        a.init(None) 
     116        self.check_err(a.relation(None, {"type": "vor/dme"}, None)) 
  • plugins/TagWatchFrViPofm.py

    r39b487c re2ccccb  
    5959                    c0 = res[2].strip() 
    6060                    tags = ["fix:chair"] if c0 == "" else [c0, "fix:chair"] 
    61                     c = abs(hash(c0.encode("utf8")))%2147483647 
     61                    c = self.stablehash(c0.encode("utf8")) 
    6262                    self.errors[c] = { "item": 3030, "level": 2, "tag": tags, "desc": {"en": c0} } 
    6363                    if u"=" in res[0]: 
     
    8585        for k in tags: 
    8686            if k in self._update_ks: 
    87                 err.append((self._update_ks[k][1], abs(hash(k.encode("utf8"))), {"en": u"tag key: %s => %s (rule ks)"%(k,self._update_ks[k][0])})) 
     87                err.append((self._update_ks[k][1], self.stablehash(k.encode("utf8")), {"en": u"tag key: %s => %s (rule ks)"%(k,self._update_ks[k][0])})) 
    8888            if k in self._update_ks_vs and tags[k] in self._update_ks_vs[k]: 
    89                 err.append((self._update_ks_vs[k][tags[k]][1], abs(hash((u"%s=%s"%(k,tags[k])).encode("utf8"))), {"en": u"tag value: %s=%s => %s (rule ks_vs)"%(k,tags[k],self._update_ks_vs[k][tags[k]][0])})) 
     89                err.append((self._update_ks_vs[k][tags[k]][1], self.stablehash((u"%s=%s"%(k,tags[k])).encode("utf8")), {"en": u"tag value: %s=%s => %s (rule ks_vs)"%(k,tags[k],self._update_ks_vs[k][tags[k]][0])})) 
    9090            if k in self._update_ks_vr: 
    9191                for v in self._update_ks_vr[k]: 
    9292                    if v.match(tags[k]): 
    93                         err.append((self._update_ks_vr[k][v][1], abs(hash((u"%s=%s"%(k,tags[k])).encode("utf8"))), {"en": u"tag value: %s=%s => %s (rule ks_vr)"%(k,tags[k],self._update_ks_vr[k][v][0])})) 
     93                        err.append((self._update_ks_vr[k][v][1], self.stablehash((u"%s=%s"%(k,tags[k])).encode("utf8")), {"en": u"tag value: %s=%s => %s (rule ks_vr)"%(k,tags[k],self._update_ks_vr[k][v][0])})) 
    9494 
    9595        for kk in tags: 
    9696            for k in self._update_kr: 
    9797                if k.match(kk): 
    98                     err.append((self._update_kr[k][1], abs(hash(kk.encode("utf8"))), {"en": u"tag key: %s => %s (rule kr)"%(kk,self._update_kr[k][0])})) 
     98                    err.append((self._update_kr[k][1], self.stablehash(kk.encode("utf8")), {"en": u"tag key: %s => %s (rule kr)"%(kk,self._update_kr[k][0])})) 
    9999            for k in self._update_kr_vs: 
    100100                if k.match(kk): 
    101101                    if tags[kk] in self._update_kr_vs[k]: 
    102                         err.append((self._update_kr_vs[k][tags[kk]][1], abs(hash((u"%s=%s"%(kk,tags[kk])).encode("utf8"))), {"en": u"tag value: %s=%s => %s (rule kr_vs)"%(kk,tags[kk],self._update_kr_vs[k][tags[kk]][0])})) 
     102                        err.append((self._update_kr_vs[k][tags[kk]][1], self.stablehash((u"%s=%s"%(kk,tags[kk])).encode("utf8")), {"en": u"tag value: %s=%s => %s (rule kr_vs)"%(kk,tags[kk],self._update_kr_vs[k][tags[kk]][0])})) 
    103103            for k in self._update_kr_vr: 
    104104                if k.match(kk): 
    105105                    for v in self._update_kr_vr[k]: 
    106106                        if v.match(tags[kk]): 
    107                             err.append((self._update_kr_vr[k][v][1], abs(hash((u"%s=%s"%(kk,tags[kk])).encode("utf8"))), {"en": u"tag value: %s=%s => %s (rule ks_vr)"%(kk,tags[kk],self._update_kr_vr[k][v][0])})) 
     107                            err.append((self._update_kr_vr[k][v][1], self.stablehash((u"%s=%s"%(kk,tags[kk])).encode("utf8")), {"en": u"tag value: %s=%s => %s (rule ks_vr)"%(kk,tags[kk],self._update_kr_vr[k][v][0])})) 
    108108        return err 
    109109 
Note: See TracChangeset for help on using the changeset viewer.