def map_nhd(grid): """ #nhd_proj4 = '+init=epsg:4269' nhd_proj4 = '+proj=latlong +ellps=GRS80 +datum=NAD83 +no_defs' if 1: imgs = [render_shapefile(('nhdflowline', 'false'), nhd_proj4, grid, get_mss('nhd_flowline')), render_shapefile(('nhdwaterbody', 'true'), nhd_proj4, grid, get_mss('nhd_waterbody')), render_shapefile(('nhdarea', 'true'), nhd_proj4, grid, get_mss('nhd_area'))] img = asum(imgs[0], imgs[2], 1.0) img = asum(img, imgs[1], 1.0) """ img = render_layer(workdir, 'features', grid, ['nhd_flowline', 'nhd_waterbody', 'nhd_area', 'osm_line']) #img = 1 - N.prod([1.0 - im for im in imgs], axis=0) #img = N.max(imgs, axis=0) #img = imgs[0] # osm roads are imported in 900913 if 0: osm = render_layer('features', grid, ['osm_line']) if 0: osm = render_shapefile(('ca_line',0), gym.proj4_srs, grid, get_mss('osm_label')) if 0: osm = render_shapefile(('ca_point',0), gym.proj4_srs, grid, get_mss('osm_point')) #glumpy_loop(img+osm) #return img #return osm #return 0.5 * (osm + img) #return asum(img, osm) return img
def doit(workdir, grid): extract_all(workdir, grid) # create surface lcf = '%s/mrlc' % (workdir,) if os.path.exists(lcf + '.tif'): sfcinfo, surface = load_mrlc(lcf + '.tif') else: sfcinfo, surface = load_quarters(lcf) #print 'SFCI', sfcinfo # get the hydrography #water = map_nhd(sfcinfo.grid) #print 'WWWWS', water.shape #glumpy_loop(water) demf = '%s/dem' % (workdir,) demtif = demf + '.tif' if os.path.exists(demtif): deminfo, demlayers = load_raster(demtif) else: deminfo, demlayers = load_quarters(lcf) dem = demlayers[0] # XXX handle missing values #glumpy_loop(surface) shaded = reliefshade(deminfo, dem, surface) #glumpy_loop(shaded) # test of grid tiling #for (z,ix,iy) in sfcinfo.grid.itertiles(): # print 'TILE %d %d %d' % (z, ix, iy) #print 'TIFF_HISTO', N.histogram(img, new=True) # if we don't have the DEM in a file (because we just composited it from quadrants), # save it to a file so it can be fed to gdal_contour if not os.path.exists(demtif): save_raster(deminfo, demtif, dem) if not os.path.isdir('%s/contour' % workdir): contour_find(demtif, '%s/contour' % workdir) if not os.path.isdir('%s/contourft' % (workdir,)): ContourTweaker().filter('%s/contour' % (workdir,), '%s/contourft' % (workdir,)) feats = render_layer(workdir, 'features', grid, ['nhd_flowline', 'nhd_waterbody', 'nhd_area', 'osm_line', 'contours']) fills = render_layer(workdir, 'fills', grid, ['contours', 'nhd_flowline', 'nhd_waterbody', 'nhd_area', 'osm_line']) labels = render_layer(workdir, 'labels', grid, ['contours', 'nhd_flowline', 'nhd_waterbody', 'nhd_area', 'osm_line']) # add contour labels and features img = asum(shaded, halo_mask(feats, labels)) img = asum(img, fills) img = asum(img, labels) # build half-resolution versions for next zoom level #if not os.path.isdir('%s/quarter' % (workdir,)): # os.mkdir('%s/quarter' % (workdir,)) # XXX doesn't do anything right now parentgrid = sfcinfo.grid # XXX need to figure these out based on ix%2, iy%2 at some zoom? is_east = 0 is_north = 0 quadrant = [['sw', 'se'], ['nw', 'ne']][is_north][is_east] mrlcdir = request_workdir(parentgrid, 'mrlc') build_quarter('%s/%s.tif' % (mrlcdir,quadrant), sfcinfo, surface) demdir = request_workdir(parentgrid, 'dem') build_quarter('%s/%s.tif' % (demdir,quadrant), deminfo, dem) return img