Changeset bc151e7 in osmose-backend


Ignore:
Timestamp:
Oct 9, 2012 10:08:52 PM (6 years ago)
Author:
Fred <fred.rodrigo@…>
Branches:
master
Children:
6379c65
Parents:
8b9b9cd
git-author:
Frédéric Rodrigo <frodrigo@…> (09/10/2012 14:36:15)
git-committer:
Fred <fred.rodrigo@…> (09/10/2012 22:08:52)
Message:

Add bbox to improve sspeed on small dataset into merge analyser

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Analyser_Merge.py

    r8475a40 rbc151e7  
    250250    def analyser_osmosis(self): 
    251251        # Convert 
     252        self.run(sql00) 
     253        self.logger.log(u"Convert official to OSM") 
     254        giscurs = self.gisconn.cursor(cursor_factory=psycopg2.extras.DictCursor) 
     255        self.run0((sql01_ref if self.sourceRef != "NULL" else sql01_geo) % {"table":self.sourceTable, "ref":self.sourceRef, "x":self.sourceX, "y":self.sourceY}, lambda res: 
     256            giscurs.execute(sql02, { 
     257                "ref": res[0], 
     258                "tags": self.tagFactory(res), 
     259                "fields": dict(zip(dict(res).keys(), map(lambda x: str(x), dict(res).values()))), 
     260                "x": self.sourceXfunction(res[1]), "y": self.sourceYfunction(res[2]), "SRID": self.sourceSRID 
     261            } ) if self.sourceWhere(res) else False 
     262        ) 
     263        giscurs.execute("SELECT ST_AsText(ST_Envelope(ST_Extent(geom::geometry))::geography) FROM official") 
     264        bbox = giscurs.fetchone()[0] 
     265        self.run(sql03) 
     266 
    252267        typeGeom = {'n': 'geom', 'w': 'way_locate(linestring)', 'r': 'relation_locate(id)'} 
    253268        self.logger.log(u"Retrive OSM item") 
     
    269284                    WHERE 
    270285                        %(geom)s IS NOT NULL AND 
    271                         %(where)s)""" % {"type":type[0], "ref":self.osmRef, "geom":typeGeom[type[0]], "from":type, "where":self.where(self.osmTags)}, 
     286                        ST_SetSRID(ST_GeomFromText('%(bbox)s'), 4326) && %(geom)s AND 
     287                        %(where)s)""" % {"type":type[0], "ref":self.osmRef, "geom":typeGeom[type[0]], "from":type, "bbox":bbox, "where":self.where(self.osmTags)}, 
    272288                    self.osmTypes 
    273289                ) 
     
    276292        self.run("CREATE INDEX osm_item_index_ref ON osm_item(ref)") 
    277293        self.run("CREATE INDEX osm_item_index_geom ON osm_item USING GIST(geom)") 
    278         self.run(sql00) 
    279         self.logger.log(u"Convert official to OSM") 
    280         giscurs = self.gisconn.cursor(cursor_factory=psycopg2.extras.DictCursor) 
    281         self.run0((sql01_ref if self.sourceRef != "NULL" else sql01_geo) % {"table":self.sourceTable, "ref":self.sourceRef, "x":self.sourceX, "y":self.sourceY}, lambda res: 
    282             giscurs.execute(sql02, { 
    283                 "ref": res[0], 
    284                 "tags": self.tagFactory(res), 
    285                 "fields": dict(zip(dict(res).keys(), map(lambda x: str(x), dict(res).values()))), 
    286                 "x": self.sourceXfunction(res[1]), "y": self.sourceYfunction(res[2]), "SRID": self.sourceSRID 
    287             } ) if self.sourceWhere(res) else False 
    288         ) 
    289         self.run(sql03) 
    290294 
    291295        # Missing official 
Note: See TracChangeset for help on using the changeset viewer.