def import_blocks_from_shapefiles(edges, featnames, faces, place, city=None, fix_cities=False, regenerate_intersections=True, reset=False, ): # File args are paths to zip files. outdir = mkdtemp(suffix='-block-shapefiles') try: try: for path in (edges, featnames, faces, place): ZipFile(path, 'r').extractall(outdir) except Exception: # TODO: display error in UI logger.exception('Extracting zipfile failed') raise edges = glob.glob(os.path.join(outdir, '*edges.shp'))[0] featnames = glob.glob(os.path.join(outdir, '*featnames.dbf'))[0] faces = glob.glob(os.path.join(outdir, '*faces.dbf'))[0] place = glob.glob(os.path.join(outdir, '*place*.shp'))[0] tiger = TigerImporter( edges, featnames, faces, place, filter_city=city, fix_cities=fix_cities, reset=reset, ) num_created = tiger.save() finally: shutil.rmtree(outdir) if regenerate_intersections: populate_streets_task() return num_created
def import_blocks_from_shapefiles( edges, featnames, faces, place, city=None, fix_cities=False, regenerate_intersections=True ): # File args are paths to zip files. outdir = mkdtemp(suffix="-block-shapefiles") try: for path in (edges, featnames, faces, place): ZipFile(path, "r").extractall(outdir) except: # TODO: display error in UI logger.exception("Extracting zipfile failed") shutil.rmtree(outdir) raise finally: os.unlink(edges) os.unlink(featnames) os.unlink(faces) os.unlink(place) try: edges = glob.glob(os.path.join(outdir, "*edges.shp"))[0] featnames = glob.glob(os.path.join(outdir, "*featnames.dbf"))[0] faces = glob.glob(os.path.join(outdir, "*faces.dbf"))[0] place = glob.glob(os.path.join(outdir, "*place.shp"))[0] tiger = TigerImporter(edges, featnames, faces, place, filter_city=city, fix_cities=fix_cities) num_created = tiger.save() finally: shutil.rmtree(outdir) if regenerate_intersections: populate_streets_task() return num_created
def import_blocks(self): # Now we load the blocks table. print "Importing blocks, this may take several minutes ..." importer = TigerImporter( '%s/%s.shp' % (self.zip_dir, self.datafiles['edges']['file_name']), '%s/%s.dbf' % (self.zip_dir, self.datafiles['featnames']['file_name']), '%s/%s.dbf' % (self.zip_dir, self.datafiles['faces']['file_name']), '%s/%s.shp' % (self.zip_dir, self.datafiles['place']['file_name']), fix_cities=True, encoding='utf8', filter_bounds=self.county_location.location) num_created, num_updated = importer.save() print "Created %d blocks, updated %d" % (num_created, num_updated)
def import_blocks_from_shapefiles(edges, featnames, faces, place, city=None, fix_cities=False, regenerate_intersections=True): # File args are paths to zip files. outdir = mkdtemp(suffix='-block-shapefiles') try: for path in (edges, featnames, faces, place): ZipFile(path, 'r').extractall(outdir) except: # TODO: display error in UI log_exception() shutil.rmtree(outdir) raise finally: os.unlink(edges) os.unlink(featnames) os.unlink(faces) os.unlink(place) try: edges = glob.glob(os.path.join(outdir, '*edges.shp'))[0] featnames = glob.glob(os.path.join(outdir, '*featnames.dbf'))[0] faces = glob.glob(os.path.join(outdir, '*faces.dbf'))[0] place = glob.glob(os.path.join(outdir, '*place.shp'))[0] tiger = TigerImporter( edges, featnames, faces, place, filter_city=city, fix_cities=fix_cities, ) num_created = tiger.save() finally: shutil.rmtree(outdir) if regenerate_intersections: populate_streets_task() return num_created