Changeset e2ccccb in osmose-backend


Ignore:
Timestamp:
May 7, 2014 11:19:07 PM (6 years ago)
Author:
Frédéric Rodrigo <fred.rodrigo@…>
Branches:
master
Children:
07c86f3
Parents:
59495b9
git-author:
Frédéric Rodrigo <fred.rodrigo@…> (06/05/2014 17:33:12)
git-committer:
Frédéric Rodrigo <fred.rodrigo@…> (07/05/2014 23:19:07)
Message:

Use hashlib in place of hash : stable hash

Files:
8 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/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.