if not context.config.has_option('GDAL/OGR', 'PATH_OF_GDAL_WARP'): sys.exit("Config file %s does not define option %s in section %s" & \ (args.configfile, 'GDAL/OGR', 'PATH_OF_GDAL_WARP')) if args.outfile: outfile = args.outfile else: outfile = "NLCD" tileFilename = "%s.tif" % (outfile) # Get name of DEM raster manifest = GenericMetadata.readManifestEntries(context) demFilename = manifest['dem'] demFilepath = os.path.join(context.projectDir, demFilename) demFilepath = os.path.abspath(demFilepath) bbox = getRasterExtentAsBbox(demFilepath) # Get study area parameters studyArea = GenericMetadata.readStudyAreaEntries(context) outputrasterresolutionX = studyArea['dem_res_x'] outputrasterresolutionY = studyArea['dem_res_y'] srs = studyArea['dem_srs'] if args.source == 'local': nlcdURL = 'http://gisdata.usgs.gov/TDDS/DownloadFile.php?TYPE=nlcd2006&FNAME=NLCD2006_landcover_4-20-11_se5.zip' nlcdRaster = context.config.get('NLCD', 'PATH_OF_NLCD2006') if not os.access(nlcdRaster, os.R_OK): raise IOError(errno.EACCES, "Not allowed to read NLCD raster %s" % (nlcdRaster, )) nlcdRaster = os.path.abspath(nlcdRaster)
def run(self, *args, **kwargs): """ Run the command: Acquire NLCD data from USGS WCS web service. Arguments: lctype -- string Source dataset from which NLCD tile should be extracted. outfile -- string The name of the NLCD file to be written. File extension ".tif" will be added. verbose -- boolean Produce verbose output. Default: False. overwrite -- boolean Overwrite existing output. Default: False. """ lctype = kwargs.get('lctype', DEFAULT_LC_TYPE) outfile = kwargs.get('outfile', None) verbose = kwargs.get('verbose', False) overwrite = kwargs.get('overwrite', False) if lctype not in ecohydrolib.usgs.nlcdwcs.LC_TYPE_TO_COVERAGE: msg = "Land cover type {lctype} is not in the list of supported types {types}" raise CommandException(msg.format(lctype=lctype, types=ecohydrolib.usgs.nlcdwcs.LC_TYPE_TO_COVERAGE)) self.checkMetadata() demFilename = self.manifest['dem'] demFilepath = os.path.join(self.context.projectDir, demFilename) demFilepath = os.path.abspath(demFilepath) bbox = getRasterExtentAsBbox(demFilepath) if not outfile: outfile = 'NLCD' try: (resp, urlFetched, fname) = getNLCDRasterDataForBoundingBox(self.context.config, self.context.projectDir, bbox, coverage=LC_TYPE_TO_COVERAGE[lctype], filename=outfile, srs=self.studyArea['dem_srs'], resx=self.studyArea['dem_res_x'], resy=self.studyArea['dem_res_y'], overwrite=overwrite, verbose=verbose, outfp=self.outfp) except Exception as e: traceback.print_exc(file=self.outfp) raise RunException(e) if not resp: raise RunException("Failed to download NLCD data from URL {0}".format(urlFetched)) # Write metadata entries cmdline = GenericMetadata.getCommandLine() GenericMetadata.writeStudyAreaEntry(self.context, "landcover_type", lctype) # Write provenance asset = AssetProvenance(GenericMetadata.MANIFEST_SECTION) asset.name = 'landcover' asset.dcIdentifier = fname asset.dcSource = urlFetched asset.dcTitle = "The National Landcover Database: {0}".format(lctype) asset.dcPublisher = 'USGS' asset.dcDescription = cmdline asset.writeToMetadata(self.context) # Write processing history GenericMetadata.appendProcessingHistoryItem(self.context, cmdline)
if not context.config.has_option('GDAL/OGR', 'PATH_OF_GDAL_WARP'): sys.exit("Config file %s does not define option %s in section %s" & \ (args.configfile, 'GDAL/OGR', 'PATH_OF_GDAL_WARP')) if args.outfile: outfile = args.outfile else: outfile = "NLCD" tileFilename = "%s.tif" % (outfile) # Get name of DEM raster manifest = GenericMetadata.readManifestEntries(context) demFilename = manifest['dem'] demFilepath = os.path.join(context.projectDir, demFilename) demFilepath = os.path.abspath(demFilepath) bbox = getRasterExtentAsBbox(demFilepath) # Get study area parameters studyArea = GenericMetadata.readStudyAreaEntries(context) outputrasterresolutionX = studyArea['dem_res_x'] outputrasterresolutionY = studyArea['dem_res_y'] srs = studyArea['dem_srs'] if args.source == 'local': nlcdURL = 'http://gisdata.usgs.gov/TDDS/DownloadFile.php?TYPE=nlcd2006&FNAME=NLCD2006_landcover_4-20-11_se5.zip' nlcdRaster = context.config.get('NLCD', 'PATH_OF_NLCD2006') if not os.access(nlcdRaster, os.R_OK): raise IOError(errno.EACCES, "Not allowed to read NLCD raster %s" % (nlcdRaster,)) nlcdRaster = os.path.abspath(nlcdRaster)
def run(self, *args, **kwargs): """ Run the command: Acquire NLCD data from USGS WCS web service. Arguments: lctype -- string Source dataset from which NLCD tile should be extracted. outfile -- string The name of the NLCD file to be written. File extension ".tif" will be added. verbose -- boolean Produce verbose output. Default: False. overwrite -- boolean Overwrite existing output. Default: False. """ lctype = kwargs.get('lctype', DEFAULT_LC_TYPE) outfile = kwargs.get('outfile', None) verbose = kwargs.get('verbose', False) overwrite = kwargs.get('overwrite', False) if lctype not in ecohydrolib.usgs.nlcdwcs.LC_TYPE_TO_COVERAGE: msg = "Land cover type {lctype} is not in the list of supported types {types}" raise CommandException( msg.format(lctype=lctype, types=ecohydrolib.usgs.nlcdwcs.LC_TYPE_TO_COVERAGE)) self.checkMetadata() demFilename = self.manifest['dem'] demFilepath = os.path.join(self.context.projectDir, demFilename) demFilepath = os.path.abspath(demFilepath) bbox = getRasterExtentAsBbox(demFilepath) if not outfile: outfile = 'NLCD' try: (resp, urlFetched, fname) = getNLCDRasterDataForBoundingBox( self.context.config, self.context.projectDir, bbox, coverage=LC_TYPE_TO_COVERAGE[lctype], filename=outfile, srs=self.studyArea['dem_srs'], resx=self.studyArea['dem_res_x'], resy=self.studyArea['dem_res_y'], overwrite=overwrite, verbose=verbose, outfp=self.outfp) except Exception as e: traceback.print_exc(file=self.outfp) raise RunException(e) if not resp: raise RunException( "Failed to download NLCD data from URL {0}".format(urlFetched)) # Write metadata entries cmdline = GenericMetadata.getCommandLine() GenericMetadata.writeStudyAreaEntry(self.context, "landcover_type", lctype) # Write provenance asset = AssetProvenance(GenericMetadata.MANIFEST_SECTION) asset.name = 'landcover' asset.dcIdentifier = fname asset.dcSource = urlFetched asset.dcTitle = "The National Landcover Database: {0}".format(lctype) asset.dcPublisher = 'USGS' asset.dcDescription = cmdline asset.writeToMetadata(self.context) # Write processing history GenericMetadata.appendProcessingHistoryItem(self.context, cmdline)