def get_2d_dataset( self, layers, srs, bbox, width, height, styles, bgcolor, transparent, time, elevation, v, filter, **kwargs ): time = time if time else datetime.now() # if we don't have time, we should use whatever the latest is. srs = int(srs[5:] if srs.upper().startswith('EPSG:') else int(srs)) t_srs = SpatialReference() s_srs = SpatialReference() s_srs.ImportFromEPSG(4326) t_srs.ImportFromEPSG(srs) crx = CoordinateTransformation(t_srs, s_srs) # transform to lon-lat for getting into the bathymetry index x1, y1, _ = crx.TransformPoint(bbox[0], bbox[1], 0) x2, y2, _ = crx.TransformPoint(bbox[2], bbox[3], 0) t_srs = SpatialReference() s_srs = SpatialReference() s_srs.ImportFromEPSG(4326) t_srs.ImportFromEPSG(srs) xrc = CoordinateTransformation(s_srs, t_srs) then = datetime.now() # timing if isinstance(styles, list): styles = styles[0] palette, minv, maxv = self.styles[styles] ctx = RenderingContext(palette, bbox[0], bbox[1], bbox[2], bbox[3], minv, maxv, width, height) delta = datetime.now() - then # timing log.debug("Created rendering context in {secs}.{usecs}".format(secs=delta.seconds, usecs=delta.microseconds)) # timing for layer in layers: basename, varname = layer.split('.') then = datetime.now() geometry, values = query.bbox_mean_values_for_triangles(basename, varname, time, (x1,y1,x2,y2)) delta = datetime.now() - then # timing log.debug("query completed in {secs}.{usecs}".format(secs=delta.seconds, usecs=delta.microseconds)) # timing if geometry.shape[0] == 0: continue then = datetime.now() if srs != 4326: log.debug('transforming geometry from 4326 to {srs}'.format(srs=srs)) geometry = geometry.reshape(geometry.shape[0]*3, 2) for i in range(geometry.shape[0]): x, y, _ = xrc.TransformPoint(geometry[i,0], geometry[i,1]) geometry[i,0] = x geometry[i,1] = y geometry = geometry.reshape(geometry.shape[0]/3, 3, 2) delta = datetime.now() - then # timing log.debug("transformation completed in {secs}.{usecs}".format(secs=delta.seconds, usecs=delta.microseconds)) # timing ctx.render(geometry, values) return ctx.surface
from osgeo import ogr from ga_spatialnosql.index import GeoIndex from datetime import datetime from django.contrib.gis.geos import Polygon from cera import query ds3 = GeoIndex('cera/', 'bathymetry',str,int) query.ensure_bathymetry_index() then = datetime.now() x1,y1,x2,y2 = -81,31,-76,36 bbox = Polygon(((x1,y1), (x2,y1), (x2,y2), (x1,y2), (x1,y1)), srid=4326) l = ds3.bboverlaps(bbox) fs = list(l) delta = datetime.now() print "finished test 1 in {secs}".format(secs=(delta-then).seconds) then = datetime.now() g,l = query.bbox_values_for_triangles('maxelev','inundationZeta',datetime(2012,6,28), (-81,31,-76,36)) print l.shape delta = datetime.now() print 'finished test 2 in {secs}'.format(secs=(delta-then).seconds) then = datetime.now() g, l = query.bbox_mean_values_for_triangles('maxelev','inundationZeta',datetime(2012,6,28), (-81,31,-76,36)) print l.shape delta = datetime.now() print 'finished test 3 in {secs}'.format(secs=(delta-then).seconds)