def populate_tile_level(self, zoom): """ Create tiles for this raster at the given zoomlevel. This routine first snaps the raster to the grid of the zoomlevel, then creates the tiles from the snapped raster. """ # Abort if zoom level is above resolution of the raster layer if zoom > self.max_zoom: return elif zoom == self.max_zoom: self.create_initial_histogram_buckets() # Compute the tile x-y-z index range for the rasterlayer for this zoomlevel bbox = self.dataset.extent quadrants = utils.quadrants(bbox, zoom) self.log('Creating {0} tiles in {1} quadrants at zoom {2}.'.format( self.nr_of_tiles(zoom), len(quadrants), zoom)) # Process quadrants in parallell for indexrange in quadrants: self.process_quadrant(indexrange, zoom) # Store histogram data if zoom == self.max_zoom: bandmetas = RasterLayerBandMetadata.objects.filter( rasterlayer=self.rasterlayer) for bandmeta in bandmetas: bandmeta.hist_values = self.hist_values[bandmeta.band].tolist() bandmeta.save() self.log('Finished parsing at zoom level {0}.'.format(zoom), zoom=zoom)
def populate_tile_level(self, zoom): """ Create tiles for this raster at the given zoomlevel. This routine first snaps the raster to the grid of the zoomlevel, then creates the tiles from the snapped raster. """ # Abort if zoom level is above resolution of the raster layer if zoom > self.max_zoom: return elif zoom == self.max_zoom: self.create_initial_histogram_buckets() # Compute the tile x-y-z index range for the rasterlayer for this zoomlevel bbox = self.dataset.extent quadrants = utils.quadrants(bbox, zoom) self.log('Creating {0} tiles in {1} quadrants at zoom {2}.'.format(self.nr_of_tiles(zoom), len(quadrants), zoom)) # Process quadrants in parallell quadrant_task_group = group(self.process_quadrant.si(indexrange, zoom) for indexrange in quadrants) quadrant_task_group.apply() # Store histogram data if zoom == self.max_zoom: bandmetas = RasterLayerBandMetadata.objects.filter(rasterlayer=self.rasterlayer) for bandmeta in bandmetas: bandmeta.hist_values = self.hist_values[bandmeta.band].tolist() bandmeta.save() self.log('Finished parsing at zoom level {0}.'.format(zoom), zoom=zoom)