{ "info": { "author": "Brian Miles", "author_email": "brian_miles@unc.edu", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Operating System :: Unix", "Topic :: Scientific/Engineering :: GIS" ], "description": "**RHESSysWorkflows**\t\t\t{#index}\n\n**Introduction**\n\nRHESSysWorkflows provides a series of Python tools for performing\n[RHESSys](http://fiesta.bren.ucsb.edu/~rhessys/) data preparation\nworkflows. These tools build on the workflow system defined by\n[EcohydroLib](https://github.com/selimnairb/EcohydroLib).\n\nBefore reading ahead, you might want to check out \n[this screencast](http://youtu.be/vbIqsSVROiU), which provides a \nconceptual overview RHESSysWorkflows.\n\n\n\n**Table of Contents**\n\n- [Authors](#authors)\n- [Funding](#funding)\n- [Source code](#source-code)\n- [Installation instructions](#installation-instructions)\n - [Installing on OS X using Homebrew](#installing-on-os-x-using-homebrew)\n - [Install dependencies for GRASS, QGIS, and RHESSysWorkflows](#install-dependencies-for-grass-qgis-and-rhessysworkflows)\n - [Install RHESSysWorkflows and Python packages](#install-rhessysworkflows-and-python-packages)\n - [Upgrading to a new version of RHESSysWorkflows](#upgrading-to-a-new-version-of-rhessysworkflows)\n - [Install GRASS and QGIS](#install-grass-and-qgis)\n - [Installing on Ubuntu Linux 14.04 or 15.04](#installing-on-ubuntu-linux-1404-or-1504)\n - [Install RHESSysWorkflows and Python packages under Linux](#install-rhessysworkflows-and-python-packages-under-linux)\n - [Upgrading to a new version of RHESSysWorkflows](#upgrading-to-a-new-version-of-rhessysworkflows-1)\n - [A note on RHESSysWorkflows version numbers](#a-note-on-rhessysworkflows-version-numbers)\n - [Install GRASS Addons for RHESSysWorkflows](#install-grass-addons-for-rhessysworkflows)\n - [Setup EcohydroLib and RHESSysWorkflows configuration file](#setup-ecohydrolib-and-rhessysworkflows-configuration-file)\n- [Using RHESSysWorkflows - Introduction](#using-rhessysworkflows---introduction)\n- [Using RHESSysWorkflows - Typical workflows](#using-rhessysworkflows---typical-workflows)\n - [National spatial data workflow](#national-spatial-data-workflow)\n - [Specify a USGS streamflow data to locate on the NHD network](#specify-a-usgs-streamflow-data-to-locate-on-the-nhd-network)\n - [Extract NHD catchments that drain through the streamflow gage](#extract-nhd-catchments-that-drain-through-the-streamflow-gage)\n - [Get bounding box for study area](#get-bounding-box-for-study-area)\n - [Acquire terrain data from U.S. Geological Survey](#acquire-terrain-data-from-us-geological-survey)\n - [Extract landcover data from local NLCD 2006 or 2011 data](#extract-landcover-data-from-local-nlcd-2006-or-2011-data)\n - [Download soils data from SSURGO](#download-soils-data-from-ssurgo)\n - [Registering custom local data: LAI data](#registering-custom-local-data-lai-data)\n - [Create a new GRASS location](#create-a-new-grass-location)\n - [Import RHESSys source code into your project](#import-rhessys-source-code-into-your-project)\n - [Import RHESSys climate data](#import-rhessys-climate-data)\n - [Create climate stations map](#create-climate-stations-map)\n - [Delineate watershed and generate derived data products](#delineate-watershed-and-generate-derived-data-products)\n - [Generating a patch map](#generating-a-patch-map)\n - [Generating soil texture map](#generating-soil-texture-map)\n - [Import LAI map into GRASS](#import-lai-map-into-grass)\n - [Generate landcover maps in GRASS](#generate-landcover-maps-in-grass)\n - [Creating the worldfile for a watershed](#creating-the-worldfile-for-a-watershed)\n - [Creating the flow table](#creating-the-flow-table)\n - [Initializing vegetation carbon stores](#initializing-vegetation-carbon-stores)\n - [Running RHESSys models](#running-rhessys-models)\n - [Working in watersheds outside the United States](#working-in-watersheds-outside-the-united-states)\n - [Custom local data workflow](#custom-local-data-workflow)\n - [Import a DEM into your project](#import-a-dem-into-your-project)\n - [Use a DEM with streams and storm drains burned into it](#use-a-dem-with-streams-and-storm-drains-burned-into-it)\n - [Import streamflow gage coordinates](#import-streamflow-gage-coordinates)\n - [Importing data into GRASS for use with RHESSys](#importing-data-into-grass-for-use-with-rhessys)\n - [Importing other raster layers](#importing-other-raster-layers)\n - [Landcover data](#landcover-data)\n - [Rooftop connectivity](#rooftop-connectivity)\n - [Vegetation LAI](#vegetation-lai)\n - [Custom patch map](#custom-patch-map)\n - [Custom soils data](#custom-soils-data)\n - [Climate station zone map](#climate-station-zone-map)\n - [Isohyet map](#isohyet-map)\n - [Generating RHESSys definitions for custom soil data](#generating-rhessys-definitions-for-custom-soil-data)\n - [Creating a world file template in areas with low slope](#creating-a-world-file-template-in-areas-with-low-slope)\n - [Creating a surface flow table using a roof connectivity map](#creating-a-surface-flow-table-using-a-roof-connectivity-map)\n - [Creating the worldfile and initializing vegetation carbon stores](#creating-the-worldfile-and-initializing-vegetation-carbon-stores)\n - [Running custom commands](#running-custom-commands)\n - [Creating multiple worldfiles based on subbasins](#creating-multiple-worldfiles-based-on-subbasins)\n- [Appendix](#appendix)\n - [Visualizing RHESSys output](#visualizing-rhessys-output)\n - [OS X](#os-x)\n - [Linux (Debian/Ubuntu-based systems)](#linux-debianubuntu-based-systems)\n - [Deprecated installation instructions](#deprecated-installation-instructions)\n - [OS X 10.7 through 10.10 using Kyngchaos GIS packages](#os-x-107-through-1010-using-kyngchaos-gis-packages)\n - [Install Xcode (OS X developer tools):](#install-xcode-os-x-developer-tools)\n - [Install RHESSysWorkflows Python modules (including EcohydroLib)](#install-rhessysworkflows-python-modules-including-ecohydrolib)\n - [Install GRASS Addons for RHESSysWorkflows](#install-grass-addons-for-rhessysworkflows-1)\n - [Setup EcohydroLib and RHESSysWorkflows configuration file](#setup-ecohydrolib-and-rhessysworkflows-configuration-file-1)\n - [OS X 10.6](#os-x-106)\n - [Download and install Python 2.7 from: http://www.python.org/download/](#download-and-install-python-27-from-httpwwwpythonorgdownload)\n - [Download setuptools from: https://pypi.python.org/pypi/setuptools/0.8](#download-setuptools-from-httpspypipythonorgpypisetuptools08)\n - [Install Xcode (OS X developer tools)](#install-xcode-os-x-developer-tools)\n - [Install PIP, a tool for installing Python modules](#install-pip-a-tool-for-installing-python-modules)\n - [Install GIS tools: GRASS & QGIS](#install-gis-tools-grass-&-qgis)\n - [Install GDAL Python modules](#install-gdal-python-modules)\n - [Install RHESSysWorkflows Python modules (including EcohydroLib)](#install-rhessysworkflows-python-modules-including-ecohydrolib-1)\n - [Install GRASS Addons for RHESSysWorkflows](#install-grass-addons-for-rhessysworkflows-2)\n - [Setup EcohydroLib and RHESSysWorkflows configuration file](#setup-ecohydrolib-and-rhessysworkflows-configuration-file-2)\n - [Install local data](#install-local-data)\n - [Setup NLCD2006 data](#setup-nlcd2006-data)\n - [Setup pre-packaged NHDPlusV2 data](#setup-pre-packaged-nhdplusv2-data)\n\n\n\n\nAuthors\n-------\nBrian Miles - brian_miles@unc.edu\n\nLawrence E. Band - lband@email.unc.edu\n\nFor questions or support contact [Brian Miles](brian_miles@unc.edu)\n\n\nFunding\n-------\nThis work was supported by the following NSF grants\n\n- Award no. 1239678 EAGER: Collaborative Research: Interoperability\n Testbed-Assessing a Layered Architecture for Integration of\n Existing Capabilities\n\n- Award no. 0940841 DataNet Federation Consortium.\n\n- Award no. 1148090 Collaborative Research: SI2-SSI: An Interactive Software\n Infrastructure for Sustaining Collaborative Innovation in the\n Hydrologic Sciences\n\n\nSource code\n-----------\nSource code can be found at: https://github.com/selimnairb/RHESSysWorkflows\n\nDocumentation can be found at: http://pythonhosted.org/rhessysworkflows\n\t\t\n\nInstallation instructions\n-------------------------\nThese instructions will lead you through installing RHESSysWorkflows\n(and EcohydroLib) as well as GRASS 6.4 and QGIS open source GIS\napplications; GRASS is required by RHESSysWorkflows, and QGIS is\nconvenient to have for visualizing GIS data acquired and produced as\nyou make RHESSys models.\n\nThese instructions are tailored to OS X and Linux users (specifically \nUbuntu 14.04, or 15.04; 15.10 is not compatible as it\nships with GRASS 7 rather than GRASS 6.4), however installation\nunder other Linux distributions is also possible. RHESSysWorkflows may in \ntheory work under Windows, but this has never been tested. Windows users \nare encouraged to run an Ubuntu under a virtual machine.\n\nRHESSysWorkflows is compatible with OS X 10.6 through 10.11, but only\nversions 10.9 through 10.11 are officially supported. For installation\ninstructions for OS X 10.6 through 10.8, see \n[Deprecated installation instructions](#deprecated-installation-instructions)\ntoward the end of this document.\n\nTo find out what version of OS X you are currently running, click on\nthe apple in the upper left corner of the screen and select *About\nthis Mac*. To find out the latest version of OS X you computer can\nrun, visit this helpful\n[page](http://www.everymac.com/systems/by_capability/maximum-macos-supported.html).\n\nIf you encounter problems during installation, please check the\n[installation\nnotes](https://github.com/selimnairb/RHESSysWorkflows/wiki/Installation-Notes)\nbefore contacting the developers for support.\n\n\n### Installing on OS X using Homebrew\nPrevious [methods](#deprecated-installation-instructions) for\ninstalling RHESSysWorkflows under OS X relied on the official GRASS\n6.4 GIS\n[packages](https://grass.osgeo.org/download/software/mac-osx/).\nUnfortunately, the official GRASS 6.4 (and the new GRASS 7 for that\nmatter) are not compatible with new security enhancements in OS X\n10.11 (El Capitan). Rather than disable this new security measure\n(called System Integrity Protection), we recommend that\nRHESSysWorkflows users use a new [Homebrew](http://brew.sh/)-based\ninstallation method, which will install GRASS without requiring that \nthe security features of your operating system be disabled.\n\nHomebrew is a third-party package management system that makes it easy\nto install open-source software under OS X. Each software package one\ncan install through Homebrew is called a formula. To search for\navailable software formula, visit\n[Braumeister](http://braumeister.org).\n\n- Install Homebrew by following the instructions [here](http://brew.sh).\n\n> During installation you may be prompted to install OS X command line\n> developer tools. Choose \"Install\".\n\n**If you already have Homebrew installed, make sure to do the following\nbefore proceeding**:\n```\nbrew update\nbrew upgrade\n```\n\n- Next, install the OSGeo4Mac tap for Homebrew by following the instructions \n[here](https://github.com/OSGeo/homebrew-osgeo4mac).\n\n> A tap allows software developers to maintain a collection of\n> software formulae; OSGeo4Mac curates a number of formula related to\n> open source GIS software.\n\nNow Homebrew is installed and we just need to install a few software\ndependencies before installing RHESSysWorkflows.\n\n#### Install dependencies for GRASS, QGIS, and RHESSysWorkflows\nFirst, install XQuartz, which is needed by GRASS, by running the\nfollowing command from the Terminal application:\n\n brew install Caskroom/cask/xquartz\n\nNext, install Python 2.7:\n\n brew install python\n\n> Note, this will install a separate copy of Python 2.7 so it will not\n> interfere with the copy of Python 2 that ships with OS X.\n\n#### Install RHESSysWorkflows and Python packages\nTo install RHESSysWorkflows and its dependencies (including EcohydroLib), \nenter the following from the terminal Terminal:\n\n pip install rhessysworkflows\n\n##### Upgrading to a new version of RHESSysWorkflows\nTo upgrade to a newer version of RHESSysWorkflows, enter the following\ninto the Terminal:\n\n pip install rhessysworkflows --upgrade --force-reinstall\n \nIf pip does not install the version you expect, it may be necessary\nto first remove RHESSysWorkflows and Ecohydrolib before installing the \nnew version (especially under Linux where some Python packages fail to\nbuild when installed via *pip*):\n\n pip uninstall rhessysworkflows\n pip uninstall ecohydrolib\n\nThen install as above:\n\n pip install rhessysworkflows\n \n#### Install GRASS and QGIS\nInstall GRASS and QGIS using Homebrew as follows from the Terminal:\n\n brew install grass-64 gdal-20 qgis-214 --without-server ffmpeg\n brew link grass-64 --force\n brew linkapps qgis-214\n \nYou will also need to install a Python library for accessing PostGIS\ngeospatial databases; This is required by QGIS:\n \n pip install psycopg2 # Do after installing QGIS, which will install PostqreSQL\n\nThis concludes the OS X Homebrew-specific portion of the installation\ninstructions.\n\n\n### Installing on Ubuntu Linux 14.04 or 15.04\nInstall RHESSysWorkflows/EcohydroLib dependencies using apt-get:\n\n sudo apt-get install build-essential git subversion p7zip-full \\\n python python-dev python-pip python-scipy \\\n libxml2-dev libxslt-dev \\\n gdal gdal-bin python-gdal \\\n grass grass-dev \\\n libbsd-dev ffmpeg vlc\n\nNote: the above works for Ubuntu 14.04. For 15.04 the packaging of \nGDAL has changed use the following to install dependencies under\nUbuntu 15.04:\n\n sudo apt-get install build-essential git subversion p7zip-full \\\n python python-dev python-pip python-scipy \\\n libxml2-dev libxslt-dev \\\n libgdal-dev libgdal-doc gdal-bin python-gdal \\\n grass grass-dev \\\n libbsd-dev ffmpeg vlc\n \n> Ubuntu 15.10 is not compatible with RHESSys or RHESSysWorkflows\n> as this version of Ubuntu uses GRASS 7, which is not yet supported\n> by RHESSys or RHESSysWorkflows. If you want to use another \n> Linux distribution, make sure that it provides similar versions\n> of the above dependencies.\n\n#### Install RHESSysWorkflows and Python packages under Linux\nTo install RHESSysWorkflows and its dependencies (including EcohydroLib), \nenter the following from your Terminal:\n\n sudo pip install rhessysworkflows\n\n##### Upgrading to a new version of RHESSysWorkflows\nTo upgrade to a newer version of RHESSysWorkflows, enter the following into the Terminal:\n\n sudo pip install rhessysworkflows --upgrade --force-reinstall\n \nIf pip does not install the version you expect, it may be necessary\nto first remove RHESSysWorkflows and Ecohydrolib before installing the \nnew version (especially under Linux where some Python packages fail to\nbuild when installed via *pip*):\n\n sudo pip uninstall rhessysworkflows\n sudo pip uninstall ecohydrolib\n\nThen install as above:\n\n sudo pip install rhessysworkflows\n\nThis concludes the Linux-specific portion of the installation instructions.\n\n### A note on RHESSysWorkflows version numbers \nEach project can only be used with compatible versions of\nRHESSysWorkflows/Ecohydrolib. Compatible versions are those that\nwrite the same version number to the metadata store for a given\nproject. This compatibility check is necessary to ensure both\nscientific reproducibility and to make sure your workflows do not\nbecome corrupted by incompatible versions. We strive to maintain\ncompatibility between releases of RHESSysWorkflows/Ecohydrolib,\nhowever sometimes enabling new workflow scenarios requires\nincompatible changes. The release notes for each release will note\nwhen a new version breaks backward compatibility. The good news is\nthat you can have multiple copies of RHESSysWorkflows/Ecohydrolib\ninstalled on your computer at the same time. To do so, you must do\nthe following:\n\n1. Install [virtualenv](https://pypi.python.org/pypi/virtualenv)\n\n2. Create a new virtual environment for each version of\nRHESSysWorkflows you would like to run\n\n3. Activate a virtual environment you would like to install a specific\nversion of RHESSysWorkflows into\n\n4. Install RHESSysWorkflows in the virtual environment, for example to\ninstall version 1.0:\n\n pip install rhessysworkflows==1.0\n \nNot that you do not need to use 'sudo' when running in a virtual\nenvironment as the files are installed in a directory owned by your\nuser account.\n\n#### Install GRASS Addons for RHESSysWorkflows\nFollow these steps to install the GRASS addons under OS X and Linux:\n\n1. Start GRASS:\n\n - OS X: In the Terminal, type:\n```\nbrew link gettext --force # Make sure GRASS's g.extension program can find gettext, which is used in internationalization.\ngrass64\n```\n\n - Linux: on a command line type: \n ```\n grass64\n ```\n \n2. Create a new location (it doesn't matter where, we'll only use it to run\nthe g.extension command to install the extensions).\n\n3. Install r.soils.texture\n\n g.extension extension=r.soils.texture\n\n4. Install r.findtheriver\n\n g.extension extension=r.findtheriver\n\n5. Exit GRASS (close all GUI windows, then type *exit* in the GRASS\ncommand line window).\n\n6. On OS X only, once you have exited GRASS do the following:\n```\nbrew unlink gettext # Re-hide the version of gettext installed by Homebrew, which may conflict of that of OS X.\n```\n\nFor more information on these addons (r.soils.texture and r.findtheriver), see:\n- [r.findtheriver](http://grasswiki.osgeo.org/wiki/AddOns/GRASS_6#r.findtheriver)\nand r.soils.texture\n- [r.soils.texture](http://grasswiki.osgeo.org/wiki/AddOns/GRASS_6#r.soils.texture).\n\n### Setup EcohydroLib and RHESSysWorkflows configuration file\n- Choose the appropriate prototype configuration file:\n\n + [OS X](https://raw.github.com/selimnairb/RHESSysWorkflows/master/docs/config/ecohydro-OSX-homebrew.cfg)\n \n + [Linux](https://raw.github.com/selimnairb/RHESSysWorkflows/master/docs/config/ecohydro-Linux.cfg)\n\n- Save into a file named '.ecohydro.cfg' stored in your home directory\nand replace all occurances of *<myusername>* with your user name\n(To find out your OS X or Linux user name, use the *whoami* command in\nTerminal).\n \n- Set ECOHYDROLIB_CFG environment variable so that RHESSysWorkflows\n can find your configuration file\n\n + Under OS X, from Terminal, do the following:\n\n\t\techo \"export ECOHYDROLIB_CFG=${HOME}/.ecohydro.cfg\" >> ~/.bash_profile\n\t\t\n\t+ If you're running Linux, do the following:\n\t\n\t\techo \"export ECOHYDROLIB_CFG=${HOME}/.ecohydro.cfg\" >> ~/.profile\n\t \n\t echo \"export LD_LIBRARY_PATH=/usr/lib/grass64/lib:${LD_LIBRARY_PATH}\" >> ~/.profile\n\n\n\t+ Re-load bash profile (or close and open a new Terminal window):\n\n\t\tsource ~/.bash_profile (~/.profile under Linux)\n\nThis concludes the configuration portion of the installation and \nconfiguration instructions.\n\n\nUsing RHESSysWorkflows - Introduction\n-------------------------------------\nAll EcohydroLib and RHESSysWorkflows tools are executed from the\ncommand line. Each tool stores the data and metadata associated\nwith a single workflow in a directory, called a *project directory*.\nMetadata are stored in a file in the project directory called\n*metadata.txt*. There can only be one metadata.txt in a project\ndirectory, so it is essential that each workflow have its own project\ndirectory.\n\nIn addition to automatically recording provenance information for data\nand the processing steps of a workflow, the metadata store allows for\nloose coupling between the tools that are used to carry out a\nparticular workflow. By design, each workflow tool performs roughly\none discrete function. This allows for flexible workflows. Each\nworkflow tool writes a series of entries to the metadata to reflect\nthe work done by the tool. Most workflow tools require certain\nentries to be present in the metadata store to perform the work they\nwill do. For example, before DEM data for the study are can be\ndownloaded from DEMExplorer, the bounding box for the study area must\nbe known. The tool that queries DEMExplorer need not know how the\nbounding box was generated, it only cares that the bounding box is\npresent in the metadata store. Lastly, the metadata store helps users\nto orchestrate workflows by requiring that only new information\nrequired at each step be entered to run a particular command, other\ninformation required can be queried from the metadata.\n\nEach workflow tool will print usage information when run on its own\nfor example running:\n\n GetNHDStreamflowGageIdentifiersAndLocation.py \n\nWill yield:\n\n usage: GetNHDStreamflowGageIdentifiersAndLocation.py [-h] [-i CONFIGFILE] -p\n PROJECTDIR -g GAGEID\n GetNHDStreamflowGageIdentifiersAndLocation.py: error: argument -p/--projectDir is required\n\nThis indicates that the -p (a.k.a. --projectDir) argument is required;\nthat is, you must specify the project directory associated with\nworkflow for which you are running the tool. For many\nEcohydroLib/RHESSyWorkflows tools, this is the only required command\nline parameter. \n\nIt's good practice when running a command to first execute the command\nwith no command line arguments. This will show you the required and\noptional parameters. To get detailed help for a given command, run\nthe command with the -h (a.k.a. --help) argument, for example:\n\n GetNHDStreamflowGageIdentifiersAndLocation.py -h\n \nNote that while this particular tool, and RHESSysWorkflows tools\nin general, have long names, they are long to be descriptive so as to\nbe easier to use. To avoid having to type these long names out, you\nare encouraged to make use of *tab* completion in Terminal. To use\ntab completion, simply type the first few characters of a command and\nthen hit the 'tab' key on your keyboard; the entire command name will\nbe 'completed' for you on the command line. If the entire name is not\n'completed' for you, hit tab again to see that list of commands that\nmatch what you've typed so far. Once you type enough characters to\nuniquely identify the command, hitting tab once more will complete the\ncommand name.\n\n\nUsing RHESSysWorkflows - Typical workflows\n------------------------------------------\nA typical workflow will consist of running data\nprocessing/registration tools from EcohydroLib. Once the required\ndatasets are in place (e.g. DEM, soils, landcover, etc.)\nRHESSysWorkflows tools can be run to create the world file and flow\ntable associated with a RHESSys model.\n\nIn the following sections two example workflows are described: (1)\nusing data from national spatial data infrastructure (USGS, NHD, NLCD,\nSSURGO, SRTM); and (2) using custom local data. The combinations of\ntools executed in these workflows represent two of the many unique\nworkflows possible.\n\n### National spatial data workflow\n\nStart by creating a directory called 'standard'. This will be your\nproject directory for this example workflow. You can create this\ndirectory anywhere on your computer where you have write access\n(e.g. in your home directory).\n\n#### Specify a USGS streamflow data to locate on the NHD network\n\nFirst, choose the USGS streamflow gage, identified by the USGS site\nnumber, you wish to build a RHESSys model for. Note that while you\ncan select gages that drain large basins, if you are planning to use\nSSRUGO soils data acquired using the RHESSysWorkflows tool\nGetSSURGOFeaturesForBoundingbox the study area must be less than\n10,000 sq. km.\n\nTo locate the USGS gage of interest on the NHD flow line network run\nthe following tool:\n\n GetNHDStreamflowGageIdentifiersAndLocation.py -p standard -g 01589312\n\nThis will create the metadata store for your project in a file named\nmetadata.txt in the project directory 'standard'. The metadata store\nwill be populated with the gage ID (the site number you specified on\nthe command line), and the NHD reachcode and reach measure associated\nwith this gage. By default, RHESSysWorkflows will use a web service\nto perform this query. (If you are using a local copy of the NHDPlusV2 \ndata add the *-s local* command line argument to the above command; \nMost users should ignore this.)\n\n> Note that USGS NWIS gage identifiers can begin with '0'. You must \n> enter this leading 0 when specifying a streamflow gage.\n\n#### Extract NHD catchments that drain through the streamflow gage\n\nThe NHD database relates stream flowlines to the catchments that drain\ninto them. RHESSysWorkflows can use these catchments, stored in a\nshapefile in your project directory, to determine the geographic\nbounding box for your study area (see below). This bounding box can\nthen beused extract spatial data for your study area from datasets\nstored locally as well as those available via web services interfaces.\n\nTo extract a shapefile of the NHD catchments that drain through your\nstreamflow gage, run the following tool:\n\n GetCatchmentShapefileForNHDStreamflowGage.py -p standard\n\n(If you are using a local copy of the NHDPlusV2 data add the *-s local* \ncommand line argument to the above command; Most users should ignore \nthis.) \n\nYou should now see the study area shapefile in your project directory.\nYou can visualize the study area, along with the streamflow gage, in\nQGIS. Note that the study area shapefile does not represent the\ndelineation of your watershed, but should instead be a superset of the\nwatershed. We will delineate your watershed using GRASS GIS.\n\n#### Get bounding box for study area\n\nNow that RHESSysWorkflows has a GIS representation of your study area,\nit can determine the extent or bounding box (also sometimes called the\n'minimum bounding rectangle') of the study area. Do so by running the\nfollowing tool:\n\n GetBoundingboxFromStudyareaShapefile.py -p standard\n\nAs with many EcohydroLib/RHESSysWorkflows commands, you won't see much\nin the way of output printed to the screen; don't fear. The commands\nare writing what's needed for future workflow steps to the metadata\nstore associated with your project directory. If you open the\nmetadata store, the file called *metadata.txt* in the project\ndirectory *standard*, you can see the bounding box coordinates stored\nin the *study_area* section; look for the attribute named\n*bbox_wgs84*.\n\n#### Acquire terrain data from U.S. Geological Survey\n\nU.S. Geological Survey (USGS) has developed a prototype web service\nfor downloading terrain data based on the National Elevation Dataset\n(NED). Now that we've defined the bounding box for our study area, \nit's very easy to download DEM data from this web service, as follows:\n\n GetUSGSDEMForBoundingbox.py -p standard\n\nBy default, this tool will download an extract terrain data for your \nstudy area from the National Elevation Dataset (NED) 30-meter (1/3 \narcsecond) USA DEM. The DEM will be stored in a UTM project (WGS84 datum)\nwith the appropriate UTM zone chosen for you. You can override both the DEM \ncoverage type and target spatial reference system by specifying the \nappropriate command line parameters; spatial reference systems must be\nrefered to by their EPSG code (see http://www.spatialreference.org/ref/epsg/ \nfor more information). Additionally, you can choose to resample the DEM\nextract to another spatial resolution. To learn how to specify these\noptions, issue the help command line argument as follows:\n\n GetUSGSDEMForBoundingbox.py -h\n\nNote that EcohydroLib/RHESSysWorkflows uses the DEM resolution,\nextent, and sptial reference the reference for all other rasters\nimported into or generated by subsequent workflow tools.\n\nLastly, you are not required to use a DEM from the USGS web service. See the\n*Custom local data workflow* example below, as well as the *Working in \nwatersheds outside the United States* section for more information.\n\n#### Extract landcover data from local NLCD 2006 or 2011 data\n\nEcohydroLib makes it easy to import custom NLCD 2006 or 2011 tiles for your\nstudy area into your project from web services hosted by [U.S. Geological Survey](http://raster.nationalmap.gov/arcgis/rest/services/LandCover/USGS_EROS_LandCover_NLCD/MapServer). For example, \nto acquire NLCD 2011 data:\n\n GetUSGSNLCDForDEMExtent.py -p standard\n\nThis command will download an NLCD 2011 data matching the extent, resolution, \nand spatial reference of your DEM and store the tile in your project \ndirectory. (If you wish to give your NLCD tile a particular name, use\nthe *outfile* command line option. To instead download NLCD 2006 data, do\nthe following:\n\n GetUSGSNLCDForDEMExtent.py -p standard -t NLCD2006\n\n#### Download soils data from SSURGO\n\nThe USDA NRCS provides the [Soil Data\nMart](http://soildatamart.nrcs.usda.gov), a sophisticated web\nservices-based interface for querying and downloading high-resolution\nSSURGO soils data. SSURGO data are structured as a complex database\nconsisting of both spatial and tabular data. For more information on\nthis database format and the soil survey data exposed through the\nSSRUGO database please see the [SSURGO\nmetadata](http://soildatamart.nrcs.usda.gov/SSURGOMetadata.aspx).\n\nEcohydroLib provides two tools that make it easy to generate soil\nhydraulic properties commonly needed for ecohydrology modeling (namely\nthe numeric properties Ksat, porosity, percent sand, percent silt, and\npercent clay). The first tool downloads spatial mapunit features\nfor your study area as well as tabular soil hydraulic property data.\nThese spatial and tabular data are joined, and written to your project\ndirectory as an ESRI Shapefile. For more information on what\nattributes are queried and how non-spatial mapunit commponents are\naggregated by the code, please see the EcohydroLib source code\n[here](https://github.com/selimnairb/EcohydroLib/blob/master/ecohydrolib/ssurgo/featurequery.py)\nand\n[here](https://github.com/selimnairb/EcohydroLib/blob/master/ecohydrolib/ssurgo/attributequery.py).\n\nTo download SSURGO features and attributes into your project, run the\nfollowing command:\n\n GetSSURGOFeaturesForBoundingbox.py -p standard\n\nNote that for server performance and network bandwidth issues, Soil\nData Mart limits SSURGO spatial queries to areas of less than roughly\n10,000 sq. km. For performance reasons, EcohydroLib (and therefore\nRHESSysWorkflows) limits the size of SSURGO queries to ~2,500 sq. km.\nIf your study area is larger than this, you must instruct \n*GetSSURGOFeaturesForBoundingbox* to tile the query into multiple\nsub queries. SSURGO query tiling is enabled using the *--tile* option:\n\n GetSSURGOFeaturesForBoundingbox.py -p MYPROJECT_DIRECTORY --tile\n \nWhat this does is to split the larger query to the Soil Data Mart into many\nsmaller queries (possibly hundreds or thousands). The results of these\nsub-queries are then automatically assembled into a single vector feature \nlayer by EcohydroLib. To reduce download times, tiled queries are by default \nperformed in parallel. The number queries to run in parallel is determined \nautomatically by the number of simultaneous threads your computer supports \n(see [here](https://docs.python.org/2/library/multiprocessing.html#multiprocessing.cpu_count)\nfor more information). Use the *--nprocesses* option to change the\nnumber of SSURGO queries to perform in parallel. For example, to \nperform 16 queries in parallel (which should be fine on an 8-thread\nmachine):\n\n GetSSURGOFeaturesForBoundingbox.py -p MYPROJECT_DIRECTORY --tile --nprocesses 16\n \nTo disable parallel queries:\n\n GetSSURGOFeaturesForBoundingbox.py -p MYPROJECT_DIRECTORY --tile --nprocesses 1\n\nYou can visualize the downloaded SSURGO features and joined tabular\ndata by opening the shapfile in QGIS. The SSURGO shapefile has a\nlong, though descriptive, name that includes the bounding box\ncoordinates for your study area. If you are unsure what shapefile in\nyour project directory to open, the *soil_features* attribute of the\n*manifest* section of your metadata store lists the filename. \n\n> While you're looking at the metadata store, scroll down to the\n> *provenance* section. While the attribute names are a bit messy,\n> you can see that for each manifest entry, there EcohydroLib has\n> recorded detailed provenance information. For the SSURGO soil\n> features, the Soil Data Mart web services URL is listed as the\n> datasource; for the DEM data downloaded from DEM Explorer,\n> EcohydroLib records the exact URL used to download your DEM.\n> Lastly, if you scroll down a bit farther, you can see that the\n> *history* section of the metadata store records the order of every\n> EcohydroLib/RHESSysWorkflow command you've run in this workflow,\n> including all of the command line parameters.\n\nEcohydroLib also provides a second tool for dealing with SSURGO soils\ndata. This tool allows you to create raster maps of SSURGO mapunit\npolygons using the following numeric soil properties as raster values:\nKsat, porosity, percent clay, percent silt, and percent sand). Use\nthe following command to generate all of these rasters in your project\ndirectory:\n\n GenerateSoilPropertyRastersFromSSURGO.py -p standard\n\nLater on in this example workflow, we'll use the percent sand and\npercent clay rasters to generate a USDA soil texture map, which we'll\nuse to define RHESSys soil parameters for our study watershed.\n\n#### Registering custom local data: LAI data \n\nEcohydroLib does not current provide direct access to vegetation leaf\narea index data from remote sensing sources. LAI data are needed by RHESSys\nto initialize vegetation carbon and nitrogen stores. RHESSysWorkflows\nrelies can use a user-supplied LAI rasters to supply these initial LAI\ndata to RHESSys. For this example workflow, you can download an LAI\nimage\n[here](https://docs.google.com/file/d/0B7aK-9pTSLS-eEJaZXctaEtkb2s/edit?usp=sharing).\nUse the following command to register this user-supplied raster into\nyour project:\n\n RegisterRaster.py -p standard -t lai -r /path/to/static_lai-01589312.tif -b \"Brian Miles \"\n\nTo make this command work, you'll have to change the path to the file\nname passed to the *-r* argument to reflect the location on your\ncomputer to which you downloaded the example LAI image. \n\n> Note that EcohydroLib/RHESSysWorkflows do not work with files or\n> directories whose names contain spaces. This will be addressed in a\n> future release.\n\nAlso, the extent of the LAI image doesn't quite match that of our DEM.\nBy default, RegisterRaster will not import a raster that does not\nmatch the extent of the DEM. Use the *--force* option to force\nRegisterRaster to import the raster:\n \n RegisterRaster.py -p standard -t lai -r /path/to/static_lai-01589312.tif -b \"Brian Miles \" --force\n\nWhen using the *force* option, it is even more important that you\ncheck the results of the command to ensure the data registered with\nthe workflow are appropriate for the modeling you plan to perform. Go\nahead and browse to your project directory, find the DEM and LAI\nrasters and open them in QGIS (you will likely have to set a color map\nfor each, otherwise all values will render in grey).\n\nNote the *-b* (a.k.a. *--publisher*) argument given to the above\ncommand. When specified, this optional parameter will be stored in\nthe provenance matadata store entry of the raster.\n\nRegisterRaster is a generic EcohydroLib tool that knows how to\nimport several types of raster into your workflow; the *-t lai*\nargument indicates that we are importing an LAI raster (see the\n*Custom local data workflow* for to learn how to import other raster\ntypes). RegisterRaster will copy the raster being imported into your\nproject directory; the raster will be resampled and reprojected to\nmatch the resolution and spatial reference of the DEM already present\nin the workflow. You can choose the resampling method to use, or turn\noff resampling, though the raster will be resampled if the spatial\nreference system does not match that of the DEM; see the help message\nfor more information.\n\nAt this point, we have enough spatial data in a generic format\n(e.g. GeoTIFF) to build RHESSys-specific datasets using RHESSysWorkflows.\n\n#### Create a new GRASS location \n\nRHESSys requires that all spatial data used to create a world file and\nflow table for a RHESSys model be stored in a GRASS GIS mapset. We'll\nstart building these data in RHESSysWorkflows by creating a new GRASS\nlocation and mapset within our project directory, and importing our\nDEM into this mapset:\n\n CreateGRASSLocationFromDEM.py -p standard -d \"RHESSys model for Dead Run 5 watershed near Catonsville, MD\"\n\nThe *-d* (a.k.a. *--description\") parameter is a textual description\nof this GRASS location; always wrap this parameter in quotes. If you\nchoose, you can specify custome names of the following GRASS\nparameters:\n\n1. dbase, the directory within the project directory where your GRASS\nlocation will be stored (defaults to 'GRASSData') \n2. location (defaults to 'default')\n3. mapset (defaults to 'PERMANENT')\n\n> Use the *--overwrite* option to CreateGRASSLocationfromDEM to\n> overwrite the GRASS location created by a previous invocation of\n> CreateGRASSLocationFromDEM. Note that most RHESSysWorkflows\n> commands provide the same option. The ability to overwrite GRASS\n> datasets accomodates the often exploratory nature of ecohydrology\n> data preparation workflows. While the data will be overwritten, the\n> command history stored in the metadata store will retain a listing\n> of the order in which you ran all workflow steps. This can help you\n> to retrace the steps you took to arrive at the current workflow\n> state.\n\nGo ahead and open GRASS, pointing it to the dbase named *GRASSData* in \nyour project directory, and then opening the mapset *PERMANENT* in \nthe location *default*. You should be able to load the DEM raster \ninto the map view. We'll use GRASS to visualize the results of the \nnext few workflow steps, so keep GRASS open in the background.\n\n#### Import RHESSys source code into your project\n\nTo create worldfiles and flow tables RHESSysWorkflows needs a copy of\nRHESSys source code. RHESSysWorkflows also uses the new RHESSys\n[ParamDB](https://github.com/RHESSys/ParamDB) database and Python\nlibraries to generate vegetation, soil, land use and other parameters\nneeded by RHESSys. RHESSysWorkflows is only compatible with the\npre-release version of RHESSys 5.16 and later versions of the code.\nAt present, and for first-time users, the most reliable way to import\nParamDB and RHESSys source code into your project is to download the\ncode from GitHub using the ImportRHESSysSource tool. However, this\ntool is also capable of importing RHESSys source code stored on your\ncomputer. This allows you to import the code from a previous\nRHESSysWorkflows project; ParamDB is always downloaded from GitHub,\neven when RHESSys source code is imported from a local source.\n\nTo download ParamDB and the RHESSys source code and store them in your\nproject directory issue the following command:\n\n ImportRHESSysSource.py -p standard\n\nIf you want to checkout an alternate branch, use the *-b* option to \nspecify the Git branch of RHESSys to use (e.g. 'develop'). By default, \nImportRHESSysSource will use the *master* branch, which is the appropriate \nbranch to use with RHESSys 5.18.\n\t\nOnce ImportRHESSysSource finishes importing RHESSys source code into\nthe project directory, it will compile all the tools necessary to\ncreate world files and flow tables, while also compiling the RHESSys\nbinary. Once the command finishes, open the *rhessys* directory in\nyour project directory. Here you can see the familiar RHESSys\ndirectory structure for storing model parameters, templates,\nworldfiles, flow tables, temporal event files, and model output; the\nRHESSys tools compiled by ImportRHESSysSource will be copied into the\n*bin* directory of the *rhessys* directory. Also note that all the\nsource code for RHESSys is stored in the *src* directory.\n\n#### Import RHESSys climate data \n\nBecause of the greater variability of climate data formats, and the\ncomplexity of time-series workflows, we have chosen to focus\ndevelopment effort on RHESSysWorkflows toward making it easier to\nacquire and manipulate geospatial data required for building RHESSys\nwork files and flow tables. This means that the modeler is\nresponsible for building the climate data necessary for building\nRHESSys world files and performing model runs. \n\nRHESSysWorkflows provides the ImportClimateData tool to import\nRHESSys climate data into your project. To run this example workflow,\ndownload example climate data\n[here](https://docs.google.com/file/d/0B7aK-9pTSLS-Q1NQbUJzVXZKeUE/edit?usp=sharing).\nUnzip the file to a location on your computer (e.g. in your home\ndirectory), this will result in a directory named *clim* in the\nlocation. Issue the following command to import these data:\n\n ImportClimateData.py -p standard -s /path/to/clim\n\nYou will have to replace */path/to/clim* with the path of the clim\nfolder unpacked from the zip file downloaded above. \n\nFor your own climate data to work with ImportClimateData the data must\nbe stored in their own directory, with each base station having file\nname that ends in *.base*. See the help for ImportClimateData for\nmore information.\n\n#### Create climate stations map\n\nIf your study watershed has multiple climate stations that you would\nlike to use, you must use a climate stations map to associate each\nzone in your world file with a particular climate station. RHESSysWorkflows\nprovides the GenerateBaseStationMap tool to create a raster map\nof your climate stations using Thiessen polygons derived from climate\nstation points, these points must be specified in a text file in a format\nsupported by GRASS's \n[v.in.acsii](http://grass.osgeo.org/grass64/manuals/v.in.ascii.html) tool. \nFor this tutorial, we'll use a dummy point to associated with the *bwi* \nclimate station imported above. You can download this point\n[here](https://docs.google.com/file/d/0B7aK-9pTSLS-cmVWdmNxNThRc1U/edit?usp=sharing).\nOnce downloaded, unzip the file to reveal the text file containing the point,\nwhich should look like this:\n\n 1|349093.638022|4350309.809951|bwi\n\nIn a real-world case, there would be additional lines in this file,\none for each climate station. The first column is the base station ID\nand must match the base_station_ID field of the ${STATION}.base file\nassociated with each climate station. \n\n> When we create the world file template later on in this tutorial,\n> the tool that we use to do so, GenerateWorldTemplate, will make sure\n> that there is a climate base station file for each unique raster value\n> in your base station map; the world file template will not be generated\n> if this is not the case.\n\nThe second and third columns represent the X and Y coordinates (or easting \nand northing) of the point feature we will use to represent the location \nof the climate station. The final column is the name of the climate station \nand should match ${STATION} in ${STATION}.base (i.e. if your base station \nfile name is 'bwi.base', the final field should be 'bwi').\n\nNow we're ready to use GenerateBaseStationMap to: import the climate station\npoints; make Thiessen polygons based on the points, and rasterize the polygons:\n\n GenerateBaseStationMap.py -p standard -b /path/to/dummy_stations1.txt\n\n> The GRASS tool \n> [v.voronoi](http://grass.osgeo.org/grass64/manuals/v.voronoi.html)\n> is used to generate the Thiessen polygons. Note that some versions of\n> this tool can fail if you have only two points. Hopefully this will be\n> fixed when GRASS 6.4.3 is released later in 2013.\n\n#### Delineate watershed and generate derived data products\n\nRHESSysWorkflows automates the process of delineating your study\nwatershed based on the location of the streamflow gage registered in\nthe workflow. As part of this process, many datasets needed by\nRHESSys will be derived from the DEM. To delineate the watershed:\n\n DelineateWatershed.py -p standard -t 500 -a 1.5\n\nHere the *-t* (a.k.a. *--threshold*) parameter specifies the minimum\nsize (in DEM cells) for subwatersheds generated by the GRASS command\n[r.watershed](http://grass.osgeo.org/grass64/manuals/r.watershed.html).\n\nThe *-a* (a.k.a. *--areaEstimate*) parameter allows you to provide a\nguess of the area (in sq. km) of the delineated watershed.\nDelineateWatershed will report whether the watershed is within 20% of\nthe area. You can view the delineated watershed in GRASS by displaying\nthe raster map named *basin*. If the area or the shape of the\ndelineated watershed differs greatly from what you expect, you may\nneed to vary how DelineateWatershed snaps your streamflow gage onto\nthe stream network. This is accomplished by either changing the *-s*\n(a.k.a. *--streamThreshold*) or stream threshold parameter and/or the\n*-w* (a.k.a. *--streamWindow*) parameter passed to\n[r.findtheriver](https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.findtheriver/description.html).\n\nTo debug watershed delineation problems, it is also helpful to view\nthe original streamflow gage and the snapped streamflow gage overlaid\non the upslope accumulated area map (UAA). DelineateWatershed will\ncreate vector layers for each of the streamflow gage coordinants\n(named *gage* and *gage_snapped*) as well as a UAA raster map (named\n*uaa*).\n\n> Though we do not recommend that you make changes to the metadata\n> store by hand, as a last resort, you can snap the gage location by\n> hand using GRASS and update the *gage_easting_raw* and\n> *gage_northing_raw* attributes in the *rhessys* section of the\n> metadata store. Then re-run DelineateWatershed as before with the\n> addition of the *--overwrite* option.\n\nFor a listing of the derived datasets generated by DelineateWatershed,\nuse the GRASS command *g.list rast* or check the DelineateWatershed\n[source\ncode](https://github.com/selimnairb/RHESSysWorkflows/blob/master/bin/DelineateWatershed.py).\n\n#### Generating a patch map\n\nRHESSysWorkflows provides GeneratePatchMap, an automated tool for\ncreating gridded and clumped patch maps. Gridded patch maps consist\nof a regular grid of the same resolution and extent as the DEM;\nclumped maps can be created using elevation or topographic wetness\nindex rasters. Modelers can also use custom patch maps registered via\nEcohydroLib's RegisterRaster tool and imported into GRASS using\nImportRasterMapIntoGRASS (see below for a general description of this\ncommand).\n\nTo create a gridded patch map, enter the following into your Terminal:\n\n GeneratePatchMap.py -p standard -t grid\n\nTo create an elevation clumped patch map:\n\n GeneratePatchMap.py -p standard -t clump -c elevation\n\n... and a topographic wetness index clumped map:\n\n GeneratePatchMap.py -p standard -t clump -c wetness_index\n\nClumped patch maps are generated by calling GRASS's r.clump command\nwith the appropriate source raster as import.\n\n> By default GeneratePatchMap will set the zone map to be that of the\n> patch map, but only if a custom zone map has not been registered\n> with the workflow (e.g. via a combination of RegisterRaster and\n> ImportRasterMapIntoGRASS; see custom data tutorial below). If you\n> wish to overwrite your custom zone map with the patch map, use the \n> *--forceZone* option to GeneratePatchMap.\n\n#### Generating soil texture map\n\nSince we used EcohydroLib's SSURGO tools to generate percent sand\nand percent clay raster maps for our watershed, we can use the GRASS\nadd-on r.soils.texture to generate USDA soil texture classes, for which\nRHESSys's ParamDB contains parameters. It is also possible to use\ncustom soil maps, which we'll explore in the *custom local data\nworkflow* section below.\n\nTo generate our soil texture map in GRASS, as well as the\ncorresponding RHESSys soil definition files, use the\nGenerateSoilTextureMap tool as follows:\n\n GenerateSoilTextureMap.py -p standard\n\nThis command will print information about what soil texture classes\nwere encountered in the soil texture map, and what RHESSys soil\ndefault IDs these classes map onto. You can view the resulting soil\ntexture map (named *soil_texture*) in GRASS. The soil definition\nfiles will be stored in the *defs* directory of the *rhessys* directory\nstored in your project directory.\n\n#### Import LAI map into GRASS\n\nWe'll use the general command ImportRasterMapIntoGRASS to import our\nLAI map from the project directory into GRASS, where RHESSys will be\nable to make use of it (you can also derive an LAI map from your landcover\nmap; see below):\n\n ImportRasterMapIntoGRASS.py -p standard -t lai -m nearest\n\nThe *-m* (a.k.a. *--method*) paramer specifies how GRASS should\nresample the raster being imported. Value resampling methods are\nthose supported by GRASS's\n[r.resamp.interp](http://grass.osgeo.org/grass64/manuals/r.resamp.interp.html)\ncommand, as well as *none*, which will cause ImportRasterMapIntoGRASS\nto skip the resampling step.\n\n#### Generate landcover maps in GRASS\n\nRHESSysWorkflows uses a single landcover map to generate the following maps\nused by RHESSys:\n\n- Vegetation type (stratum)\n- Land use\n- Roads\n- Impervious surfaces\n- Leaf area index (LAI; optional)\n\nThe first step in generating these maps is to import the landcover\nraster from your project directory into GRASS using\nImportRasterMapIntoGRASS:\n\n ImportRasterMapIntoGRASS.py -p standard -t landcover -m nearest\n\nIn our case, the landcover map in our project directory came the \nNLCD 2011 data hosted by USGS. However, RHESSysWorkflows supports the use of\ncustom landcover maps regsitered via RegisterRaster. In either case,\nwe need to provide raster reclassification rules so that\nRHESSysWorkflows will know how to generate vegetation, land use,\nroads, impervious, and optionally LAI maps from the landcover map. \nTo do this, we use the RegisterLandcoverReclassRules tool:\n\n RegisterLandcoverReclassRules.py -p standard -k\n\nNLCD2011 is a known landcover type in RHESysWorkflows (in addition to NLCD2006),\nso all we need do is use the *-k* (a.k.a. *--generateKnownRules*)\noption. For a custom landcover map, we could instead use the *-b*\n(a.k.a. *--buildPrototypeRules*) option to generate prototype rules\nthat we can edit as needed. It is also possible to specify that\nexisting reclass rules should be imported from another directory on\nyour computer using the *-r* (a.k.a. *--ruleDir*) parameter. To \ninclude LAI reclass rules when registering prototype or existing \nrules, you must use the *-l* (a.k.a. *--includeLaiRules*) parameter\n\n> The known rules for NLCD2006 and NLCD2011 that ship with RHESSysWorkflows include\n> an LAI reclass rules file with values for grassland, and evergreen\n> needle leaf and deciduous broadleaf forests (both temperate) drawn \n> from the International Satellite Land Surface Climatology Project II\n> (ISLSCP II) project. These data can be downloaded [here](http://daac.ornl.gov/cgi-bin/dsviewer.pl?ds_id=971).\n\nWhether using known rules, building prototype rules, or importing\nexisting rules, RegisterLandcoverReclassRules will result in the\nfollowing four rules files being created in the *rules* directory of\nyour project directory:\n\n- stratum.rule\n- landuse.rule\n- impervious.rule\n- road.rule\n- lai-recode.rule (if the *--includeLaiRules* option was selected)\n\nThere is no need to edit these rules for this NLCD2011 example, but\nyou should take a moment to look at how these rules work.\nRHESSysWorkflows uses GRASS's\n[r.reclass](http://grass.osgeo.org/grass64/manuals/r.reclass.html)\ncommand ([r.recode](http://grass.osgeo.org/grass64/manuals/r.recode.html)\nfor creating LAI maps), and so the rules files follow this format. \nIt's important to note that the landcover reclass rules for stratum and \nlanduse must result in raster maps whose values labels match class \nnames present in the RHESSys ParamDB database. Thus, be very careful \nin editing the righthand side of the expressions in your stratum and \nlanduse reclass rules.\n\nNote that to keep track of edits you make to your project's reclass\nrules in your project metadata, you should use the RunCmd workflow\ncommand (see the section on custom workflows to learn how to use this\ntool). \n\n> You can find information on NLCD classes [here](http://www.mrlc.gov/nlcd2011.php)\n\nOnce the landcover reclass rules are in place, it is very easy to\ngenerate the raster maps derived from the landcover data as well as\nthe vegetation and land use definition files needed by RHESSys; this\nis done using the following command:\n\n GenerateLandcoverMaps.py -p standard\n\n> If you would like an LAI map to be generate, you must use the *-l*\n> (a.k.a. *--makeLaiMap*) parameter on the above command line. This\n> will only work if you are using known landcover reclass rules, or\n> if you requested that RegisterLandcoverReclassRules include LAI \n> reclass rules when creating prototype rules or using existing rules. \n\nLike with the soil texture map and definition generation step,\nGenerateLandcoverMaps will provide descriptive output of the\nvegetation and land use definition types encountered in the raster\ndata.\n\n#### Creating the worldfile for a watershed\n\nNow we are almost ready to create the worldfile for our watershed. \nFirst we must create the template from which the world file will be\ncreated. To do this, we'll use the GenerateWorldTemplate tool. \nFortunately this is very easy because the metadata store contains \nnearly all the information needed to create the template. If you are \nusing multiple climate stations, and therefore have a base station\nmap that you created using GenerateBaseStationMap, all you need do\nis:\n\n GenerateWorldTemplate.py -p standard\n \nIf you are using a single climate station and did not create a climate\nstation map, you must specify the climate station as follows:\n\n GenerateWorldTemplate.py -p standard -c bwi\n\nHere we're using the climate station named *bwi*.\n\nIn either case, if your workflow is missing any information necessary\nfor making the world template, GenerateWorldTemplate will exit with\na corresponding error.\n\n> If you want to see the template file generate, as well as other\n> information, use the *-v* (a.k.a. *--verbose*) option\n\nNow use the CreateWorldfile tool to create a world file using this \ntemplate:\n\n CreateWorldfile.py -p standard -v\n\nWe've specified the the *-v* (a.k.a. *--verbose*) command line option.\nThis will print details about what CreateWorldfile, and the programs\nit runs on your behalf, is doing. This is recommended as these\nprograms can fail in complex ways that CreateWorldfile may not be able\nto detect, so you'll likely want to know what's going on under the\nhood.\n\nWhen CreateWorldfile finishes, it will create an initial worldfile\nnamed *worldfile_init* in the *worldfiles* directory in the *rhessys*\ndirectory in your project directory.\n\n#### Creating the flow table\n\nAs with worldfile creation, at this point in the workflow,\nRHESSysWorkflows's metadata store contains nearly all the information\nneeded to create a flow table using the createflowpaths (CF) RHESSys\nprogram. The two choices you have are whether CF should create a flow\ntable that includes roads and/or includes a surface flow table to\nmodeling non-topographic routing of rooftops. We'll route roads in\nthis example, leaving rooftops for the *custom local data* workflow\ndiscussed below.\n\nRun CreateFlowtable as follows:\n\n CreateFlowtable.py -p standard --routeRoads\n\nThis will result in the creation of a flow table called *world.flow*\nin the *flow* directory of your *rhessys* directory. Now we have\nalmost everything we need to run RHESSys simulations.\n\n#### Initializing vegetation carbon stores\n\nRHESSys provides a program called LAIread to initialize vegetation\ncarbon stores in your worldfile. \n\n> Note, LAIread should only be used for RHESSys simulations with \n> static vegetation (i.e. not dynamic vegetation mode enable via \n> the *-g* command line option to RHESSys).\n\nInitializing carbon stores is a multi-step process that involves \nrunning LAI read to generate a redefine worldfile, running a 3-day \nRHESSys simulation to incorporate the redefine worldfile, writing \nout a new worldfile with initialized vegetation carbon stores. \nRHESSysWorkflows automates all of these processes for you, it can \neven figure out what date to start the 3-day RHESSys simulation on \nbased on your climate data.\n\n> In the current version of RHESSysWorkflows, RunLAIRead is only able\n> to read simulation start dates from point time-series climate data.\n> Users of ASCII or NetCDF gridded climate data must run LAI read by\n> hand. The next release of RHESSysWorkflows will add support for\n> gridded climate data to RunLAIRead.\n\nYou can run RunLAIRead as follows:\n\n RunLAIRead.py -p standard -v\n\nNote that we use the verbose command line option here as well. The\nnew GRASS-based version of LAIread is relatively new and not as well\ntested, so we advise you to keep a close watch on what it is doing.\n\nLAIread relies on allometric relationships to initialize vegetation\ncarbon stores. These allometric parameters have not yet been added to\nRHESSys ParamDB. A default version of the parameters for RHESSys base\nvegetation classes is stored in the RHESSys ParamDB source code\n[repository](https://github.com/RHESSys/ParamDB/blob/develop/allometry/allometric.txt).\nRHESSysWorkflows stores this file under the name *allometric.txt* in\nthe *allometry* folder of the *ParamDB* of your *rhessys/db* folder. \nYou can edit this file to suit your needs before running RunLAIRead. \nConsult the\n[RHESSys wiki](https://github.com/RHESSys/RHESSys/wiki) \nfor more information on allometric relationships used by LAIread.\n\nWhen finished, a final worldfile named *world* will be created in the\n*worldfiles* directory of your *rhessys* directory. With this\nworldfile, you are ready to perform subsequent model workflow steps\nincluding: spin-up, calibration, scenario runs, and analysis and\nvisualization.\n\nThis concludes this tutorial using RHESSysWorkflows to create a\nRHESSys world file and flow table using standard spatial data\ninfrastructure.\n\n#### Running RHESSys models\nWe need one more thing before we can run our model, a *TEC file*.\nTEC stands for \"temporal event controller\". We use a *TEC file*\nto tell RHESSys to do things on at certain times during a simulation. \nFor example, to redefine the worldfile to simulate timber harvest or \nforest fire. We also use tec files to tell RHESSys what model outputs \nshould be produced when. To create a TEC file that tells RHESSys to \nprint daily model outputs starting on 10/1/2008, do the following:\n\n RunCmd.py -p standard echo \"2008 10 1 1 print_daily_on\" > standard/rhessys/tecfiles/tec_daily.txt\n\nFor more information on tec file format, see the [RHESSys wiki](https://github.com/RHESSys/RHESSys/wiki/Temporal-Event-Control-File-(TEC-file)). \n\nOnce you have built a RHESSys model using RHESSysWorkflows, you can run\nyour model manually. However this will not capture information about\nmodel runs in your project metadata. If you would like to record your\nruns in your project metadata, use the RunModel command:\n\n RunModel.py -v -p standard -d \"Test model run\" --basin -pre test -st 2008 1 1 1 -ed 2010 10 1 1 -w world -t tec_daily.txt -r world.flow -- -s 0.07041256017 133.552915269 1.81282283058 -sv 4.12459677088 78.3440566535 -gw 0.00736592779294 0.340346799457\n \nNotice the '--' in the command line. All of the command line options before\nthe '--' are options required by RunModel.py; some of these are also common\nRHESSys options. All of the options after the '--' will be passed to \nRHESSys. Because the project metadata knows where RHESSys is installed in your\nproject directory, you don't have to specify the full path of any of the RHESSys input\nfiles (e.g. world files, flow tables, tec files, etc), just specify the filenames.\nRunModel will echo RHESSys console outlet to the screen (if the *-v* or verbose\noption is specified as above), and will always save the same output into\na file named 'rhessys.out' stored in the output folder for each model run. The output\nfolder will be named based on the value you provide for the '-pre' or output prefix\noption. \n\n### Working in watersheds outside the United States\n\nThe above standard U.S. spatial data acquisition workflow steps do not\nprovide access to data outside the U.S. (by definition). However, it is\nstill possible to use RHESSysWorkflows to develop RHESSys models for watersheds\noutside the U.S. One option is to use custom local data, which is described\n[here](#custom-local-data-workflow). If you are working in Australia, EcohydroLib \n(and by extension RHESSysWorkflows) provides access to 1-second (~30-meter) resolution \nDEM data (derived from SRTM data) using web services interfaces provided by \n[Geoscience Australia](http://www.ga.gov.au/data-pubs/web-services/ga-web-services).\nThese data can be accessed using the *GetGADEMForBoundingBox* command. A typical\nworkflow would begin as follows. First, define your study area using the\n*RegisterStudyAreaShapefile* command:\n\n RegisterStudyAreaShapefile.py -p PROJECT_DIR -s /path/to/my/study/area/shapfile.shp\n \n(Replace PROJECT_DIR with the name of your EcohydroLib project).\n\nnext, extract the bounding box coordinates for your study area:\n\n GetBoundingboxFromStudyareaShapefile.py -p PROJECT_DIR\n \nthen, download Geoscience Australia DEM data:\n\n GetGADEMForBoundingBox.py -p PROJECT_DIR\n \nCurrently, there are three types of DEM data available:\n* 1 second SRTM Digital Elevation Model of Australia\n* 1 second SRTM Digital Elevation Model - Hydrologically Enforced\n* 1 second SRTM Digital Elevation Model - Smoothed\n\nTo acquire the *1 second SRTM Digital Elevation Model of Australia* data,\nrun *GetGADEMForBoundingBox* as follows:\n\n GetGADEMForBoundingBox.py -p PROJECT_DIR -d dem_1s\n\nto acquire the *1 second SRTM Digital Elevation Model - Hydrologically Enforced* data:\n\n\tGetGADEMForBoundingBox.py -p PROJECT_DIR -d dem_h_1s\n\t\nand to acquire the *1 second SRTM Digital Elevation Model - Smoothed* data:\n\n GetGADEMForBoundingBox.py -p PROJECT_DIR -d dem_s_1s\n \nConsult the [Geoscience Australia metadata catalog](http://www.ga.gov.au/metadata-gateway/metadata/record/gcat_72759)\nfor more information about these data sets. \n\nThe remainder of your workflow would proceed with importing streamflow gage coordinates\nand subsequent steps described [here](#import-streamflow-gage-coordinates). \n\nIn addition to Australia DEM, EcohydroLib provides access to gridded \nsoils data provided by CSIRO and availble as part of the \n[Soil and Landscape Grid of Australia](http://www.clw.csiro.au/aclep/soilandlandscapegrid/)\ndataset. To download these data into your project use the\n*GetSoilGridAustralia* command:\n\n GetSoilGridAustralia.py -p PROJECT_DIR\n \nThis will download a subset of the available gridded Australia\nSoils Data from the Australia-wide 3D Soil Attributes dataset; currently\n*GetSoilGridAustralia* will download the percent sand, percent silt, \nand percent clay layers. Data for the first 1-m of the soil profile is\ndownloaded, and a depth-weighted average value for each pixel is\ngenerated using these layers. Once these data have been downloaded,\nyou can use the *GenerateSoilTextureMap* command to generate RHESSys\nsoil texture map and parameters for USDA soil classes:\n\n GenerateSoilTextureMap.py -p PROJECT_DIR\n \nSee [above](#generating-soil-texture-map) for more details.\n\n\n### Custom local data workflow\n\nThe following sections outline how one might use RHESSysWorkflows to\nbuild RHESSys input files using custom data already available on your\ncomputer. Unlike the above standard spatial data tutorial, we won't\nprovide data for the workflow steps below. Instead, we'll describe\nhow your data should be formatted to work with each workflow tool.\nTo avoid duplication, only those concepts specific to using local data\nin RHESSysWorkflows will be discussed. You are encouraged to read the\nstandard spatial data tutorial above as well. The workflow sequence\ncovered below is not the only possible workflow involving local data.\nAlso, it is possible to combine steps from this example workflow with\nsteps from the standard spatial data tutorial.\n\n#### Import a DEM into your project\n\nWhen working in watersheds outside the coverage of the NHD (such as\nwhen working outside of the U.S.) the first workflow step is to import\na digital elevation model data using the RegisterDEM tool. The DEM\nto be imported must be in a format readable by\n[GDAL](http://www.gdal.org/formats_list.html). \n\nRun RegisterDEM as follows:\n\n RegisterDEM.py -p PROJECT_DIR -d /path/to/my/DEM.tif -b \"City of Springfield, Custom LIDAR\"\n\nTo run this command, replace *PROJECT_DIR* with the absolute or\nrelative path of an empty directory where you would like the data and\nmetadata for your project to be stored (i.e. your project directory).\nIt is also possible to reproject or resample the DEM on import. See\nRegisterDEM's help for more information (i.e. run with the *-h*\noption).\n\nRegisterDEM will result in the DEM being copied to your project\ndirectory, also the DEM extent will be used to determine the bounding\nbox for the study area; a polygon of the DEM extent will be generated\nand saved as a shapefile in your project directory.\n\n#### Use a DEM with streams and storm drains burned into it\n\nIf you are working with an urbanized catchment, it is often necessary\nto \"burn\" streams or storm drains into your DEM so that you can properly\ndelineate the \"sewershed.\" RHESSysWorkflows allows you do use both a\n\"stream burned\" and a standard \"non-burned\" DEM in the same workflow. \nThe burned DEM will only be used for operations that require it (e.g.\nwatershed delineation, flow table creations); the standard DEM will be \nused for determining elevation, slope, aspect, etc. To use a stream\nburned DEM, do the following:\n\n RegisterRaster.py -p PROJECT_DIR -t stream_burned_dem -r /path/to/my/burnedDEM.tif -b \"City of Springfield, Custom LIDAR, storm drain burned with Whitebox GAT 3.1.2\"\n\nOnce the stream burned raster has been registered with the workflow the\n*DelineateWatershed* and *CreateFlowtable* tools will know to use this raster\ninstead of the standard DEM; all other tools that use the DEM will continue\nto use the standard DEM. If you want to override this behavior (e.g. to\ntest the effect that the burned DEM has on watershed delineation), you can\npass the *--ignoreBurnedDEM* option to *DelineateWatershed* or *CreateFlowtable*, \nwhich will cause them to use the standard DEM instead.\n\n> We recommend the excellent open-source [Whitebox GAT](http://www.uoguelph.ca/~hydrogeo/Whitebox/)\n> for burning streams into DEM datasets.\n\n#### Import streamflow gage coordinates \n\nThe coordinates of the streamflow gage associated with your watershed\nare registered with the workflow using the RegisterGage tool. The\ntool takes as input a point shapefile containing one or more points;\nthe WGS84 lat-lon coordinates for the desired gage will be extracted\nfrom the shapefile. These coordinates will be written to the metadata\nstore, and a new point shapefile containing a point only for the\nselected gage will be created in the project directory.\n\nA typical way to run RegisterGage is:\n\n RegisterGage.py -p PROJECT_DIR -g /path/to/gage/shapefile.shp -l DATASET_NAME -a GAGE_ID_ATTRIBUTE -d GAGE_ID\n\nTo run this comment, replace *PROJECT_DIR* as above, specify the input\nshapefile you'd like to use, the name of the dataset within the\nshapefile, the name of the ID gage attribute in the dataset, and the\nID of the desired gage. The name of the dataset is usually the same\nas the filename of the shapefile (minus the .shp). If you are unsure,\nyou can use the command line tool\n[ogrinfo](http://www.gdal.org/ogrinfo.html), which ships with GDAL.\n\n#### Importing data into GRASS for use with RHESSys\n\nThe following workflow steps are identical whether using standard\nspatial data or custom local data and will not be covered here:\n\n- Create a new GRASS location\n- Import RHESSys source code into your project\n- Import RHESSys climate data\n- Delineate watershed and generate derived data products\n- Generate landcover maps in GRASS\n\nSee the above standard spatial data tutorial for detailed information\non these steps.\n\n#### Importing other raster layers\n\nFor a list of all of the current raster map types supported by\nEcohydroLib, run the RegisterRaster tool as follows:\n\n RegisterRaster.py -h\n\nThis will also show all of the resampling and other import options\navailable.\n\nWhat follows is a series of examples showing how to input some of\nthese raster types. All rasters must be stored in a file format\nreadable by GDAL (see above).\n\n##### Landcover data\n\n RegisterRaster.py -p PROJECT_DIR -t landcover -r /path/to/my/landcover_map.tif --noresample -b \"Baltimore Ecosystem Study LTER\" --force\n\nHere we are importing a landcover raster map obtained from the\nBaltimore Ecosystem Study LTER where we've asked RegisterRaster not to\nresample the raster (unless its spatial reference system differs from\nthe DEM; i.e. the resolution of the raster cells won't be changed).\nWe're also telling RegisterRaster to ignore the fact that the extent\nof the landcover raster does not exactly match the extent of the\nDEM/study area. After import, you are strongly encouraged to\nvisualize the landcover map overlaid on the DEM using QGIS to ensure\nthat the landcover will cover an adequate portion of your study area.\n\n> For landcover maps, we recommend that you do not resample when\n> registering the raster using RegisterRaster, but instead let GRASS\n> handle the resampling.\n\nTo make the landcover map in the project directory available to\nRHESSys, it must be imported into GRASS as follows:\n\n ImportRasterMapIntoGRASS.py -p PROJECT_DIR -t landcover -m nearest\n\nThis will import the landcover raster into GRASS, and then resample\nthe raster using the nearest neighbor method. For a list of valid\nresampling methods, run ImportRasterMapIntoGRASS with the *-h* option;\nyou may also specify *none* as the resampling method and the raster\nwill not be resampled.\n\n##### Rooftop connectivity\n\nStarting with RHESSys 5.16, the createflowpaths (CF) utility is able\nto create surface flow tables that can incorporate non-topographic\nrouting of flow from rooftops to nearby impervious and pervious areas.\nRHESSys 5.16 can use separate surface and subsurface flow tables to\nsimulate the effect of such non-topographic routing on the landscape.\nYou can find more information on using surface flowtable routing in RHESSys\n[here](https://github.com/RHESSys/RHESSys/wiki/Surface-Flowtable-Routing).\n\nTo import a rooftop connectivity raster, use RegisterRaster as follows:\n\n RegisterRaster.py -p PROJECT_DIR -t roof_connectivity -r /path/to/my/roof_map.tif --noresample --force\n\n> As with landcover maps, we recommend do not let RegisterRaster\n> resample roof connectivity rasters, instead letting GRASS handle the\n> resampling. RegisterRaster uses GDAL to resample rasters. GDAL\n> ignore null/nodata pixels when resampling, whereas GRASS's\n> r.resamp.interp does not. Thus, when a landcover and a roof top\n> connectivity raster, which contains nodata values for all non-roof\n> pixels, are resampled in RegisterRaster, they can become\n> mis-registered, which will result in an invalid surface routing\n> table.\n\nThen make your rooftop connectivity raster available for RHESSys by\nimporting it into GRASS:\n\n ImportRasterMapIntoGRASS.py -p PROJECT_DIR -t roof_connectivity -m nearest\n\n##### Vegetation LAI\n\nAs described in the standard spatial data tutorial above,\nEcohydroLib/RHESSysWorkflows requires that the user provide their own\nLAI data, which can be imported into a project using RegisterRaster:\n\n RegisterRaster.py -p PROJECT_DIR -t lai -r /path/to/my/lai_map.tif --force\n\nNow make your LAI raster available for RHESSys by importing it into\nGRASS:\n\n ImportRasterMapIntoGRASS.py -p PROJECT_DIR -t lai -m none\n\n##### Custom patch map\n\nA custom patch map can be imported into a project as follows:\n\n RegisterRaster.py -p PROJECT_DIR -t patch -r /path/to/my/patch_map.tif --noresample\n\nThen make your patch raster available for RHESSys by importing it into\nGRASS:\n\n ImportRasterMapIntoGRASS.py -p PROJECT_DIR -t patch -m none\n\n##### Custom soils data\n\nA custom soils map can be imported into a project as follows:\n\n RegisterRaster.py -p PROJECT_DIR -t soil -r /path/to/my/soils_map.tif -b \"Brian Miles , based on field observations\"\n\nThen make your soil raster available for RHESSys by importing it into\nGRASS:\n\n ImportRasterMapIntoGRASS.py -p PROJECT_DIR -t soils -m none\n\n##### Climate station zone map\n\nThe GeneratePatchMap tool will use the patch map as the zone\nmap. If you wish to use another map for the zone map, do the\nfollowing after running DelineateWatershed:\n\n RegisterRaster.py -p PROJECT_DIR -t zone -r /path/to/my/zone_map.tif -b \"Brian Miles , climate station zones based on lapse rate\"\n\nThen make your zone raster available for RHESSys by importing it into\nGRASS:\n\n ImportRasterMapIntoGRASS.py -p PROJECT_DIR -t zone -m none\n\n##### Isohyet map\n\nBy default no isohyet map will be used when creating the world file for\na watershed. If you wish to use an isohyet map, do the following before\nrunning GenerateWorldTemplate:\n\n RegisterRaster.py -p PROJECT_DIR -t isohyet -r /path/to/my/isohyet_map.tif -b \"Brian Miles , isohyet map\"\n\nThen make your isohyet raster available for RHESSys by importing it into\nGRASS:\n\n ImportRasterMapIntoGRASS.py -p PROJECT_DIR -t isohyet -m none --integer\n\n> Note that we tell ImportRasterMapIntoGRASS to transform the isohyet\n> raster values to integers on import. This is necessary due to limitations\n> in the current version of the RHESSys tool grass2world. When doing the,\n> integer conversion, ImportRasterMapIntoGRASS wil multiply the raster\n> values by 1000, giving three significant digits. To use another value,\n> specify the *--multiplier* option.\n\n#### Generating RHESSys definitions for custom soil data\n\nWhen using custom soil data with RHESSysWorkflows you need to create\nsoil definition files before you can create a worldfile. To create\nsoil definitions, you must first create raster reclass rules that map\nbetween your soil type and a soil type known to RHESSys ParamDB. At\npresent, ParamDB contains definitions drawn from the literature for\nUSDA soil textures. However you may load custom soil parameters into\nyour own local copy of ParamDB. For more information, see the ParamDB\n[README](https://github.com/RHESSys/ParamDB).\n\nTo create prototype soil reclass rules for a project, do the following:\n\n RegisterCustomSoilReclassRules.py -p PROJECT_DIR -b\n\nHere we're using the *-b* (a.k.a. *--buildPrototypeRules*) command\nline option. This will result in the creation of a file called\n*soils.rule* in the *rules* directory of your project directory. You\nwill need to edit this file as necessary to map your custom soil types\nto ParamDB soil types. \n\n> Make sure that the soil class names on the righthand side of each\n> reclass rule correspond to soil class names in ParamDB\n\nYou can also import existing soil reclass rules as follows:\n\n RegisterCustomSoilReclassRules.py -p PROJECT_DIR -r /path/to/my/existing/reclass_rules/\n\nThe *-r* (a.k.a. *--ruleDir*) parameter must point to a directory that\ncontains a file named soils.rule. This will will be copied into the\n*rules* directory of your project directory.\n\nOnce you have valid soil reclass rules in place, you can generate\nRHESSys soil parameter definition files for your custom soils using\nthe following command:\n\n GenerateCustomSoilDefinitions.py -p PROJECT_DIR \n\nThis tool will print information to the screen about each soil type\nencountered and the RHESSys ParamDB soil parameter classes they map\nto. If you see no such print out, check your soil reclass rule file\nto make sure it is correct. The resulting soil definition files will\nbe written to the *defs* directory in the *rhessys* directory of your\nproject directory.\n\n> Remember most RHESSysWorkflows commands support the *--overwrite*\n> command line option for overwriting existing data stored in the\n> project directory or in GRASS.\n\n#### Creating a world file template in areas with low slope\n\nDue to limitations in the current version of RHESSys's *grass2world*\ntool, slope values less than 1.0 will be truncated to 0.0. This causes\nvalues of NaN (i.e. not a number) to result for the spherical average \nof aspect calculation. To work around this, you can use the \n*--aspectMinSlopeOne* command line option to instruct\n*GenerateWorldTemplate* to use a slope map whose minimum value is 1.0\nwhen calculating the spherical average of aspect:\n\n GenerateWorldTemplate.py -p PROJECT_DIR --aspectMinSlopeOne -c MY_CLIMATE_STATION1\n\n#### Creating a surface flow table using a roof connectivity map\n\nIf you are using a roof connectivity map in your workflow, you need to\nexplicitly tell CreateFlowtable to use the roof connectivity map to\ngenerate a surface flow table. Do so as follows:\n\n CreateFlowtable.py -p PROJECT_DIR --routeRoofs --routeRoads\n\nHere we're using both the *--routeRoofs* and *--routeRoads* options.\nYou are not required to use both together, but usually when modeling\nrooftop connectivity you will be working in a watershed that also has\nroads whose effects on routing you will also want to consider.\n\n#### Creating the worldfile and initializing vegetation carbon stores\n\nThe following workflow steps are identical whether using standard\nspatial data or custom local data and will not be covered here:\n\n- Creating the worldfile for a watershed\n- Initializing vegetation carbon stores\n\nSee the above standard spatial data tutorial for detailed information\non these steps.\n\n#### Running custom commands\n\nRHESSysWorkflows provides many tools for preparing RHESSys models, \nhowever there are many possible other tools and workflow steps\nthat can be used to build a model. To allow arbitrary commands\nto be carried out on data stored in a project directory, \nRHESSysWorkflows provides the RunCmd command, for example you\nmay which to edit your worldfile template and then re-run *grass2world*\nby hand:\n\n RunCmd.py -p PROJECT_DIR cp PROJECT_DIR/rhessys/templates/template PROJECT_DIR/rhessys/templates/template.orig\n RunCmd.py -p PROJECT_DIR emacs PROJECT_DIR/rhessys/templates/template\n export PATH=PROJECT_DIR/rhessys/bin:${PATH}\n RunCmd.py -p PROJECT_DIR PROJECT_DIR/rhessys/bin/g2w ...\n \n(it is necessary to manually add your project directory's copy of the\nRHESSys binaries to your path because grass2world runs a helper program\ncalled *rat* that must be in your path)\n \nAlthough RHESSysWorkflows will not be able to capture full metadata\nabout the input and output files used and produced by commands run\nthrough RunCmd, it will write an entry to the processing history\nof your project metadata. This way, you at least have a record of the\ncustom workflow steps you applied to the data in your project directory.\n\n#### Creating multiple worldfiles based on subbasins\n\nFor large model domains, it may be desirable to break up your watershed\ninto multiple worldfiles. RHESSysWorkflows allows you to do this using\nthe *CreateWorldfileMultiple* command:\n\n CreateWorldfileMultiple.py -p PROJECT_DIR\n\nThis will create one worldfile for each subbasin delineated for your\nwatershed.\n\nOnce you've created multiple worldfiles, you can create corresponding\nflow tables using the *CreateFlowtableMultiple* command:\n\n CreateFlowtableMultiple.py -p PROJECT_DIR\n \n*CreateFlowtableMultiple* supports the same command line options as\nits counterpart *CreateFlowtable*.\n\nFinally, you can initialize vegetation carbon and nitrogen stores\nfor multiple worldfiles using *RunLAIReadMultiple*:\n\n RunLAIReadMultiple.py -p PROJECT_DIR\n\n\nAppendix\n--------\n\n### Visualizing RHESSys output\n\nRHESSysWorkflows includes tools to visualize RHESSys model output.\n\n> Note that these tools are still in development, but beta versions\n> are provided for your convenience; functionality and options may\n> change without notice.\n\nThe first tool, *RHESSysPlot*, will produce plots for basin-scale\nvariables such as streamflow. This tool is very flexible, and includes\nthe ability to plot observed data vs. modeled data, and to plot data\nfor multiple simulations. A prototypical usage to plot observed and\nsimulated hydrographs with rainfall plotted on a second y-axis is as \nfollows:\n\n\tRHESSysPlot.py --plottype standard -o PATH_TO_OBSERVED -d PATH_TO_SIMULATION/rhessys_basin.daily -c streamflow --secondaryData PATH_TO_SIMULATION/rhessys_basin.daily --secondaryColumn precip --secondaryLabel \"Rainfall (mm/day)\" -t \"DR5 streamflow\" -l \"Test simulation\" -f test_plot --figureX 8 --figureY 3 -y \"Streamflow (mm/day)\" --color magenta\n\n> Go [here](https://drive.google.com/file/d/0B7aK-9pTSLS-Q0JDeE4wQmN2VVU/edit?usp=sharing) \n> to download example observed streamflow for the DR5 study catchment \n> used in the first part of this tutorial\n\nThe *--figureX* and *--figureY* options control the size of the plot (in\ninches). RHESSysPlot also allows you to make standard time series, semi-log \nscale timeseries, and cumulative distribution function plots. For a full \ndescription of options, use the *--help* option:\n\n RHESSysPlot.py --help\n \nIn addition to making static plots of basin-scale output variables, \nRHESSysWorkflows provides a tool, *PatchToMovie*, for making animations \nof patch-scale output variables. To use this tool, you first need to \nhave RHESSys simulations for which patch-scale output was created \n(e.g. using the *-p* output option). The following example will create\na 30-frames-per-second animation for infiltration:\n\n PatchToMovie.py -p PROJECT_DIR -d PATH_TO_SIMULATION_WITH_PATCH_OUTPUT/rhessys_patch.daily -o OUTPUT_DIRECTORY -f OUTPUT_FILENAME -v \"recharge * 1000.0\" --mask GRASS_RASTER_LAYER --overlay GRASS_RASTER_LAYER_1 [GRASS_RASTER_LAYER_N] --fps 30 -t \"infiltration\"\n\nNote that the variable can be an aribitrary mathematical expression\n(using '+', '-', '*', and '/') combining patch-level RHESSys variable \nnames as well as numerical constants (as in the example). When using\nsuch expressions, you'll want to specify a title for each frame in your\nanimation using the *-t* (a.k.a. *--mapTitle*) option (otherwise the expression\nwill be used as the title, which likely won't fit on the frame). \n\nWhen specifying simulation output (e.g. *-r*) and the GRASS mapset (e.g. *-g*),\nit is important to use the same GRASS mapset that was used to create the\nworldfile used to run the simulation.\n\nFor a full description of options, use the *--help* option:\n\n PatchToMovie.py --help \n \n*PatchToMovie* uses a command line program called *ffmpeg* to encode\nindividual maps into a movie file. To install *ffmpeg* do the following:\n\n#### OS X\n- Install [Homebrew](http://brew.sh)\n- Install *ffmpeg*:\n\n brew install ffmpeg\n\n#### Linux (Debian/Ubuntu-based systems)\n- Install *ffmpeg* (and *vlc* for viewing animations):\n\n sudo apt-get install ffmpeg vlc\n \nLastly, you must add an entry to your EcohydroLib configuration file. For\nOS X:\n\n [RHESSYS]\n PATH_OF_FFMPEG = /usr/local/bin/ffmpeg\n \nFor Linux:\n\n [RHESSYS]\n PATH_OF_FFMPEG = /usr/bin/ffmpeg\n\nSee [Setup EcohydroLib and RHESSysWorkflows configuration file](#setup-ecohydrolib-and-rhessysworkflows-configuration-file)\nfor more details on setting up your configuration file.\n\n### Deprecated installation instructions\n\n#### OS X 10.7 through 10.10 using Kyngchaos GIS packages\n\n##### Install Xcode (OS X developer tools):\n- Install Xcode via the App Store\n\n- Launch Xcode\n\n- Make sure that Xcode command line tools are installed by running the\n following from the command line (e.g. using the Terminal app):\n\n```\nxcode-select --install\n```\n\n- Agree to the Xcode license by running the following command (we only\n run this command to force Xcode show us the license): sudo cc\n \n##### Install GIS tools: GRASS & QGIS\nNote, GRASS version 6.4 is required for RHESSysWorkflows (GRASS 7.0 is not\nsupported at this time). GRASS is used internally to carry out workflow \nsteps (leading to the creation of RHESSys world files and flow tables). \nYou will also find it useful to use GRASS to visualize the results from \nsome workflow steps.\n\n> Before installing GRASS, etc. under OS X 10.8, 10.9 or 10.10, you\n> will need to enable applications from any source to be installed.\n> To do so open *System Preferences > Security & Privacy > General*\n> and choose \"Allow apps downloaded from: Anywhere\". Doing so exposes\n> your computer to more security risks from downloaded software. We\n> recommend that you revert this setting once you are finished with\n> installation.\n\nTo install GRASS on OS X, visit http://www.kyngchaos.com/software/grass\n\nHere you will need to download and install the following:\n\n1. GDAL Complete framework\n2. FreeType framework\n3. cairo framework\n4. PIL (Python imaging library)\n5. GRASS.app\n\nWhile you are there, we recommend you also install QGIS (Quantum GIS)\n\nIn addition to GRASS and components installed above, install:\n\n1. NumPy from http://www.kyngchaos.com/software/python\n2. SciPy from http://www.kyngchaos.com/software/python\n2. Matplotlib Python module from http://www.kyngchaos.com/software/python\n3. QGIS from from http://www.kyngchaos.com/software/qgis\n\nQGIS is useful for visualizing output for earlier workflow steps that precede the importing data into GRASS. \n\n##### Install RHESSysWorkflows Python modules (including EcohydroLib) \nBefore installing RHESSysWorkflows, we need to install some\ndependencies by hand (this is annoying, but unavoidable):\n\n sudo pip install pandas patsy\n\nThis is necessary because another depdendency (statsmodels) requires\nthat we install its dependencies first. If you are running XCode 5.1 or later, \nyou may encounter this error:\n\n clang: warning: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]\n clang: note: this will be a hard error (cannot be downgraded to a warning) in the future\n clang: warning: argument unused during compilation: '-mno-fused-madd'\n \nIf you don't see the above error, skip the next step. To work around\nthe error, install statsmodels' dependencies this way (you'll probably\nwant to copy and paste this rather than typing it):\n\n sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install pandas patsy\n \nThis too is annoying, but is unaviodable (for now).\n\nTo install RHESSysWorkflows and its dependencies (including EcohydroLib), \nenter the following from your Terminal if you are running XCode 5.0 or earlier:\n\n sudo pip install rhessysworkflows\n\nIf you are running Xcode 5.1 (but not Xcode 6.1 or later), we need to\nset the ARCHFLAGS variable as above:\n\n\tsudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install rhessysworkflows\n\nAgain, only do the above step if youa re running Xcode 5.1, not Xcode 6.1.\n\nThis may take a while as several of the modules rely on non-Python\ncode that has to be compiled.\n \n> Why are GDAL Python libraries not included as a dependency of\n> RHESSysWorkflows? This is to make life easier for users of OS X 10.7\n> and 10.8. For these OSes, the GDAL complete installer that\n> accompanies GRASS will install GDAL Python modules in the copy of\n> Python 2.7 that ships with the OS, and the GDAL Python module does\n> not successfully build by itself under OS X, which would make the\n> rhessysworkflows install fail. Linux users will have to make sure\n> they install GDAL Python modules in addition to GDAL itself\n> (e.g. via a companion package, or by 'sudo pip install GDAL').\n\n##### Install GRASS Addons for RHESSysWorkflows\nFollow these steps to install the GRASS addons needed by RHESSysWorkflows:\n\n1. First start GRASS\n - Double-click on the *GRASS-6.4* icon in your Applications folder\n\n2. Create a new location (it doesn't matter where, we'll only use it to run\nthe g.extension command to install the extensions)\n3. Install r.soils.texture\n\n g.extension extension=r.soils.texture\n\n4. Install r.findtheriver\n\n g.extension extension=r.findtheriver\n\n5. Exit GRASS\n\nFor more information on these addons (r.soils.texture and r.findtheriver), see:\n- [r.findtheriver](http://grasswiki.osgeo.org/wiki/AddOns/GRASS_6#r.findtheriver)\nand r.soils.texture\n- [r.soils.texture](http://grasswiki.osgeo.org/wiki/AddOns/GRASS_6#r.soils.texture).\n\n##### Setup EcohydroLib and RHESSysWorkflows configuration file\n- Download a [prototype configuration](https://raw.github.com/selimnairb/RHESSysWorkflows/master/docs/config/ecohydro-OSX.cfg) file.\n\n- Save into a file named '.ecohydro.cfg' stored in your home directory\nand replace all occurances of *<myusername>* with your user name\n(To find out your OS X user name, use the *whoami* command in\nTerminal).\n \n- Set ECOHYDROLIB_CFG environment variable so that RHESSysWorkflows\n can find your configuration file\n\n + From Terminal, do the following:\n\n\t\techo \"export ECOHYDROLIB_CFG=${HOME}/.ecohydro.cfg\" >> ~/.bash_profile\n\n + Re-load bash profile (or close and open a new Terminal window):\n\n\t\tsource ~/.bash_profile\n\nThis concludes installation and configuration instructions for OS X\n10.7 through 10.10 using Kyngchaos GIS packages.\n\n#### OS X 10.6\nApple, and thus many third-party software developers, no longer\nsupports OS X 10.6. If you are still running OS X 10.6, you may want\nto explore [upgrade\noptions](http://arstechnica.com/apple/2014/03/snow-leopard-updates-are-probably-done-here-are-your-os-x-upgrade-options/)\nas many older Macs can run newer operating systems, upto and including\nthe latest version. If your Mac still has some life in it, it is\nimportant to upgrade from OS X 10.6 this version is no longer\nreceiving security updates from Apple, and because newer versions have\nmore security features by design.\n\nIf you wish to install RHESSysWorkflows on OS X 10.6, follow the\ninstructions below (though we no longer have a OS X 10.6 machine to\ntest on, so we won't be able to help if you run into problems).\n\nDue to its age, there are a few more installation steps needed under\nOS X 10.6. Also, once Apple stops support this version of the OS,\nsupport for OS X 10.6 will also be dropped from subsequent releases of\nRHESSysWorkflows. If you were thinking of upgrading from OS X 10.6 to\n10.9 for other reasons, this may add another.\n\n> You will need to use the *sudo* command line tool to install many of\n> the components needed for EcohydroLib/RHESSysWorkflows. The sudo\n> command allows you to run other commands as a super user. Under OS\n> X, by default, only users who are 'admins' have permission to run\n> sudo. To check if your user account is an administrator, or to make\n> your user an administrator open *System Preferences > Users &\n> Groups*. Note that to use sudo, your account will also have to have\n> a non-blank password. See this Apple support\n> [article](http://support.apple.com/kb/HT4103?viewlocale=en_US&locale=en_US)\n> for more information.\n\n##### Download and install Python 2.7 from: http://www.python.org/download/\n\nOnce installation has completed, make sure that Python 2.7 is the\ndefault Python version by doing the following from the Terminal:\n\n python\n \nThis will load the Python interpreter. The first line of output will\ndisplay the Python version number. Type *exit()* to exit the\ninterpreter.\n\n##### Download setuptools from: https://pypi.python.org/pypi/setuptools/0.8\nInstall setuptools as follows:\n1. Unpack the archive by double-clicking on it in Finder\n2. From Terminal:\n\n cd setuptools-0.8\n sudo python ez_setup.py\n\n##### Install Xcode (OS X developer tools)\n1. Download and install Xcode 3.2.6 and iOS SDK 4.3 for Snow Leopard\n[here](https://developer.apple.com/downloads/index.action) (This\nrequires you to register for a free developer account)\n\n2. Download and install Git from http://git-scm.com/download/mac\n\nRHESSysWorkflows uses Git to download RHESSys source code so you don't have to.\n\n##### Install PIP, a tool for installing Python modules\nPip is the recommended way to install Python modules (i.e. rather than\nusing easy_install). For example, Pip allows you to easily uninstall\nmodules. To install pip, enter the following in a Terminal window:\n\n sudo easy_install pip\n\n##### Install GIS tools: GRASS & QGIS\nNote, GRASS version 6.4 is required for RHESSysWorkflows (GRASS 7.0 is not\nsupported at this time). GRASS is used internally to carry out workflow \nsteps (leading to the creation of RHESSys world files and flow tables). \nYou will also find it useful to use GRASS to visualize the results from \nsome workflow steps.\n\nTo install GRASS on OS X, visit http://www.kyngchaos.com/software/grass\n\nHere you will need to download and install the following:\n\n1. GDAL Complete framework\n2. FreeType framework\n3. cairo framework\n4. PIL (Python imaging library)\n5. GRASS.app\n\nWhile you are there, we recommend you also install QGIS (Quantum GIS)\n\nIn addition to GRASS and components installed above, install:\n\n1. NumPy from http://www.kyngchaos.com/software/python\n2. SciPy from http://www.kyngchaos.com/software/python\n2. Matplotlib Python module from http://www.kyngchaos.com/software/python\n3. QGIS from from http://www.kyngchaos.com/software/qgis\n\nQGIS is useful for visualizing output for earlier workflow steps that precede the importing data into GRASS. \n\n##### Install GDAL Python modules\nEven though we installed the GDAL complete framework above, we still\nneed to install the GDAL Python modules for the copy of Python 2.7 we\ninstalled above; the GDAL framework only installs the Python modules\nfor Python 2.6, which RHESSysWorkflows is not compatible with. These\ninstallation steps are a little ugly, but bear with me (or upgrade\nfrom OS X 10.6). From a Terminal window type the following:\n\n export PATH=${PATH}:/Library/Frameworks/GDAL.framework/unix/bin\n sudo pip install --no-install GDAL\n cd /tmp/pip-build-root/GDAL\n sudo python setup.py build_ext --include-dirs=/Library/Frameworks/GDAL.framework/Headers --library-dirs=/Library/Frameworks/GDAL.framework/Versions/Current/unix/lib\n sudo pip install --no-download GDAL\n\n##### Install RHESSysWorkflows Python modules (including EcohydroLib) \nBefore installing RHESSysWorkflows, we need to install some\ndependencies by hand (this is annoying, but unavoidable):\n\n sudo pip install pandas patsy\n\nThis is necessary because another depdendency (statsmodels) requires\nthat we install its dependencies first. \n\nTo install RHESSysWorkflows and its dependencies (including EcohydroLib), \nenter the following from your Terminal if you are running XCode 5.0 or earlier:\n\n sudo pip install rhessysworkflows\n\n##### Install GRASS Addons for RHESSysWorkflows\nFollow these steps to install the GRASS addons needed by RHESSysWorkflows:\n\n1. First start GRASS\n - Double-click on the *GRASS-6.4* icon in your Applications folder\n\n2. Create a new location (it doesn't matter where, we'll only use it to run\nthe g.extension command to install the extensions)\n\n3. Install r.soils.texture\n\n g.extension extension=r.soils.texture\n\n4. Install r.findtheriver\n\n g.extension extension=r.findtheriver\n\n5. Exit GRASS\n\nFor more information on these addons (r.soils.texture and r.findtheriver), see:\n- [r.findtheriver](http://grasswiki.osgeo.org/wiki/AddOns/GRASS_6#r.findtheriver)\nand r.soils.texture\n- [r.soils.texture](http://grasswiki.osgeo.org/wiki/AddOns/GRASS_6#r.soils.texture).\n\n##### Setup EcohydroLib and RHESSysWorkflows configuration file\n- Download a [prototype configuration](https://raw.github.com/selimnairb/RHESSysWorkflows/master/docs/config/ecohydro-OSX_10.6.cfg) file.\n\n- Save into a file named '.ecohydro.cfg' stored in your home directory\n\tReplace all occurances of *<myusername>* with your user name (To find\n\tout your OS X user name, use the *whoami* command in Terminal).\n \n- Set ECOHYDROLIB_CFG environment variable so that RHESSysWorkflows\n can find your configuration file\n\n + From Terminal, do the following:\n\n\t\techo \"export ECOHYDROLIB_CFG=${HOME}/.ecohydro.cfg\" >> ~/.bash_profile\n\n\t+ Re-load bash profile (or close and open a new Terminal window):\n\n\t\tsource ~/.bash_profile\n\nThis concludes installation and configuration instructions for OS X 10.6.\n\n### Install local data\nRHESSysWorkflows allows you to use local copies of the National\nHydrography Dataset Plus (NHD Plus) to locate USGS streamflow gages,\nand the National Landcover Dataset (NLCD 2006). If you will be building\nmany models across the U.S. or are running RHESSysWorkflows in a \nserver environment and would like to minimize calls to external web\nservices, you may wish to install these datasets locally to improve\nperformance. *This is entirely optional. Most users can ignore this\nas querying webservices for these data is preferable to downloading\nand installing these relatively large datasets.*\n \n#### Setup NLCD2006 data\nTo setup a local copy of NLCD2006 land cover data, do the following:\n- Download NLCD2006 data [here](https://docs.google.com/file/d/0B7aK-9pTSLS-MHRrRTVVRV9zdVk/edit?usp=sharing)\n\n It is important that you download this version of the dataset, and\n not the official data from http://www.mrlc.gov/nlcd06_data.php.\n The offical data are packaged using a version of PkZip that is not\n compatible with OS X's GUI or commandline unzip utilities.\n\n- Copy NLCD2006 archive to the parent folder where you would like to store it\n\n For example, under OS X, create a folder called 'data' in your\n home directory\n\n- Unpack NLCD2006 data (this will take a while...time for a coffee break):\n \n + OS X 10.6: From the command line:\n \n tar xvjf nlcd2006_landcover_4-20-11_se5.tar.bz2\n \n + OS X 10.7/10.8: double-click on the archive in Finder\n\n#### Setup pre-packaged NHDPlusV2 data\nIf you want to setup a local copy of NHDPlusV2 data you can obtain\nthese data by downloading all or a subset of the NHDPlusV2 data and\nbuilding the database as described in the [EcohydroLib\ndocumentation](https://github.com/selimnairb/EcohydroLib).\nAlternatively, you can download a pre-built copy of the NHDPlusV2\ndatabase needed by RHESSysWorkflows\n[here](https://docs.google.com/file/d/0B7aK-9pTSLS-dGVzWGRCd1NwNzQ/edit?usp=sharing).\nTo download and unpack the pre-built data, do the following:\n\n- Download pre-packaged NHDPlusV2 database [here](https://docs.google.com/file/d/0B7aK-9pTSLS-dGVzWGRCd1NwNzQ/edit?usp=sharing)\n\n Note, the compressed data are nearly 7 GB, nearly 11 GB\n uncompressed, the download may take a while\n\n- Copy the pre-packaged NHDPlusV2 database archive to the parent\n folder where you would like to store it\n \n For example, under OS X, create a folder called 'data' in your\n home directory\n\n- Unpack NHDPlusV2 database archive (this will take a while...have a\n cup of tea) \n\n + OS X 10.6: From the command line:\n \n tar xvjf NHDPlusV2.tar.bz2\n \n + OS X 10.7/10.8: double-click on the archive in Finder\n \n ### Setup EcohydroLib and RHESSysWorkflows configuration file for local data\n \n- Choose the appropriate prototype configuration file:\n\n + [OS X 10.6](https://raw.github.com/selimnairb/RHESSysWorkflows/master/docs/config/ecohydro-OSX_10.6-local.cfg)\n\n + [OS X 10.7/10.8](https://raw.github.com/selimnairb/RHESSysWorkflows/master/docs/config/ecohydro-OSX-local.cfg)\n \n + [Linux](https://raw.github.com/selimnairb/RHESSysWorkflows/master/docs/config/ecohydro-Linux-local.cfg)\n\n- Save into a file named '.ecohydro.cfg' stored in your home directory\n\tReplace all occurances of '' with your user name (To find\n out your OS X or Linux user name, use the *whoami* command in Terminal).\n\n- Modify the example configuration to point to your NHDPlusV2 and\n NLCD2006 local data [if you are using these data]:\n\n If you are using OS X, and if you placed the data in a directory\n called 'data' in your home directory, the only changes you need to\n make is to substitute '' with your user name. \n \n If you chose to store local NLCD or NHDPlusV2 somewhere else, simply\n use the absolute path of each file. \n \n- Set ECOHYDROLIB_CFG environment variable so that RHESSysWorkflows\n can find your configuration file\n\n For example, under OS X, from Terminal, do the following:\n\n\t+ Open your bash profile in an editor:\n\n\t\tnano ~/.bash_profile\n\n\t+ Add the following at the end of the file:\n\n\t\texport ECOHYDROLIB_CFG=${HOME}/.ecohydro.cfg\n\n\t+ Save the file\n\n\t+ Re-load bash profile (or close and open a new Terminal window):\n\n\t\tsource ~/.bash_profile", "description_content_type": null, "docs_url": "https://pythonhosted.org/rhessysworkflows/", "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/selimnairb/RHESSysWorkflows", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "rhessysworkflows", "package_url": "https://pypi.org/project/rhessysworkflows/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/rhessysworkflows/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/selimnairb/RHESSysWorkflows" }, "release_url": "https://pypi.org/project/rhessysworkflows/1.34/", "requires_dist": null, "requires_python": null, "summary": "Libraries and command-line scripts for performing RHESSys data preparation workflows.", "version": "1.34" }, "last_serial": 2215665, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "15ceecc014ea8286a0308b4c6db8db1b", "sha256": "7523ea4bd671c7c9d3548252393e48e0e70d82693e5e673971fd673a41dcb12f" }, "downloads": -1, "filename": "rhessysworkflows-1.0.tar.gz", "has_sig": false, "md5_digest": "15ceecc014ea8286a0308b4c6db8db1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85615, "upload_time": "2013-07-12T15:06:17", "url": "https://files.pythonhosted.org/packages/73/51/bcdc8133d5253980c08bc6e7e5d6abac7e53693f1ff7fd2dce5a095cf4cc/rhessysworkflows-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "4dad2e94b37d1ee01e547061c92546c7", "sha256": "389b438a98b846aab938471b3ebc4ba229bb4f372fe8641242c144955031ecb8" }, "downloads": -1, "filename": "rhessysworkflows-1.1.tar.gz", "has_sig": false, "md5_digest": "4dad2e94b37d1ee01e547061c92546c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 93834, "upload_time": "2013-07-31T01:22:34", "url": "https://files.pythonhosted.org/packages/52/d5/0f4a7ed1b1dcb8fe91b5a01f00b32ff20644deff1e8ccba28e103c422119/rhessysworkflows-1.1.tar.gz" } ], "1.11": [ { "comment_text": "", "digests": { "md5": "da2028904476ac75abe59f120325a837", "sha256": "7a7431d0e52d2f1bd1a1e8966fbbecc7a9f1a2fd1efaa552192832c13f2f76de" }, "downloads": -1, "filename": "rhessysworkflows-1.11.tar.gz", "has_sig": false, "md5_digest": "da2028904476ac75abe59f120325a837", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 94728, "upload_time": "2013-08-27T01:32:40", "url": "https://files.pythonhosted.org/packages/f4/a6/16c17c37ef1d60942395c1f2f8142640c33a52f1f42314baf0cf122f7a2d/rhessysworkflows-1.11.tar.gz" } ], "1.12": [ { "comment_text": "", "digests": { "md5": "b252b96725492f05c7dc53d1be726876", "sha256": "6b3280081944275c371ba319e41dc7221def7d7c9223974596d689ac3f166aef" }, "downloads": -1, "filename": "rhessysworkflows-1.12.tar.gz", "has_sig": false, "md5_digest": "b252b96725492f05c7dc53d1be726876", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 96978, "upload_time": "2013-09-25T20:56:28", "url": "https://files.pythonhosted.org/packages/b2/bc/cb483424f90db673859fe8d7c98b9675310491bd53986eda84c1496c261f/rhessysworkflows-1.12.tar.gz" } ], "1.13": [ { "comment_text": "", "digests": { "md5": "195c11f3219d13a4322b4d7fdb7e17f3", "sha256": "392bd4aa9c73a87bbcefbbe4a4773e80b51b7dbcdf9c42381f11609acb687e29" }, "downloads": -1, "filename": "rhessysworkflows-1.13.tar.gz", "has_sig": false, "md5_digest": "195c11f3219d13a4322b4d7fdb7e17f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 99941, "upload_time": "2013-10-23T21:15:47", "url": "https://files.pythonhosted.org/packages/b7/78/7deb5c1535e2408da5cc65f589daeb6d088a05cd24f6e497dfaf27a5df82/rhessysworkflows-1.13.tar.gz" } ], "1.14": [ { "comment_text": "", "digests": { "md5": "fb00e80aee447a1853bab4e466c30e5d", "sha256": "802f0f4fad8d856533e0c897ffecdbf7b8bce955b0baad9f480ac6df0c2e281a" }, "downloads": -1, "filename": "rhessysworkflows-1.14.tar.gz", "has_sig": false, "md5_digest": "fb00e80aee447a1853bab4e466c30e5d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 101721, "upload_time": "2013-11-07T02:11:13", "url": "https://files.pythonhosted.org/packages/5c/1e/83dadbaa0ab423daca51bd21d74679039f8a346090ef8007d4ff17f56bcd/rhessysworkflows-1.14.tar.gz" } ], "1.15": [ { "comment_text": "", "digests": { "md5": "237690d66969cabe647d2d8039f7037c", "sha256": "930a4e4fbdbaa24182f6b1e6b5d53050c860611c1cb33e7fbbe861d9018dc2e1" }, "downloads": -1, "filename": "rhessysworkflows-1.15.tar.gz", "has_sig": false, "md5_digest": "237690d66969cabe647d2d8039f7037c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 101827, "upload_time": "2013-11-12T22:26:55", "url": "https://files.pythonhosted.org/packages/00/6e/ef748495c0890e52089bfe3ef250c3a12ed2ef8c52901923b3a131b3e09d/rhessysworkflows-1.15.tar.gz" } ], "1.16": [ { "comment_text": "", "digests": { "md5": "1260900076649382222e16bf3c396648", "sha256": "c309bcb08637c8287f8da7385607ab34aad297abf95fd6e381d96a13d58dcd38" }, "downloads": -1, "filename": "rhessysworkflows-1.16.tar.gz", "has_sig": false, "md5_digest": "1260900076649382222e16bf3c396648", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 102680, "upload_time": "2014-01-18T14:54:02", "url": "https://files.pythonhosted.org/packages/0f/96/8b9b588dd1ba0cafbb2e8c77dad847f5ee74f0526767cdefb24595ef4bb2/rhessysworkflows-1.16.tar.gz" } ], "1.17": [ { "comment_text": "", "digests": { "md5": "3472d5220a4936550d1e7c676872eb3b", "sha256": "5ae1bfcd0a3e807f082718c45d16cdab0eb42a2607263b72143d8a4bed8ad546" }, "downloads": -1, "filename": "rhessysworkflows-1.17.tar.gz", "has_sig": false, "md5_digest": "3472d5220a4936550d1e7c676872eb3b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 105775, "upload_time": "2014-02-13T20:58:46", "url": "https://files.pythonhosted.org/packages/35/7f/e09568da48e30eb5c6481eafa2281e0904fe6011920319e6d30d806ec19a/rhessysworkflows-1.17.tar.gz" } ], "1.18": [ { "comment_text": "", "digests": { "md5": "5d9fd012065c8d10825c5cff2888c331", "sha256": "91195602febc3151b597c23a4a8278e7a96972b615bbf604707b7699093688eb" }, "downloads": -1, "filename": "rhessysworkflows-1.18.tar.gz", "has_sig": false, "md5_digest": "5d9fd012065c8d10825c5cff2888c331", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 106649, "upload_time": "2014-02-17T20:22:26", "url": "https://files.pythonhosted.org/packages/71/33/47f6e39165223707034144347dc020c39cc06596c74a297fc76d951a4af3/rhessysworkflows-1.18.tar.gz" } ], "1.19": [ { "comment_text": "", "digests": { "md5": "eb5dce2d0ac6e1726e4bbe8fbc80a352", "sha256": "16ca0228a9412fe1a97c54975e346c6de95b2063f1b66788dbfa96b71a8a9bdc" }, "downloads": -1, "filename": "rhessysworkflows-1.19.tar.gz", "has_sig": false, "md5_digest": "eb5dce2d0ac6e1726e4bbe8fbc80a352", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 106711, "upload_time": "2014-02-25T01:20:13", "url": "https://files.pythonhosted.org/packages/24/bb/17524a758f9069409ef7dd65d09f6e600397b50c4b6552b63cb2014e1474/rhessysworkflows-1.19.tar.gz" } ], "1.20": [ { "comment_text": "", "digests": { "md5": "b961757a2bedab58b50a97d6dfac7a79", "sha256": "8a3c6742291bd89ec503ff1fb56dfd5de2361b25382721d857b895d6b3a5e51e" }, "downloads": -1, "filename": "rhessysworkflows-1.20.tar.gz", "has_sig": false, "md5_digest": "b961757a2bedab58b50a97d6dfac7a79", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 106624, "upload_time": "2014-02-28T20:57:55", "url": "https://files.pythonhosted.org/packages/ad/79/f0bdb233bb6e291ab62057e1ca734911a6da3b4582d4c88b5da52ef89659/rhessysworkflows-1.20.tar.gz" } ], "1.21": [ { "comment_text": "", "digests": { "md5": "e5d556312b29ed38843a4b53f9f0398e", "sha256": "86b585d6705edc639d429d9240b1172be0ccef433f1ffc999793823b08af6dab" }, "downloads": -1, "filename": "rhessysworkflows-1.21.tar.gz", "has_sig": false, "md5_digest": "e5d556312b29ed38843a4b53f9f0398e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 119078, "upload_time": "2014-03-31T17:20:47", "url": "https://files.pythonhosted.org/packages/29/6c/18785ff3ef34a35c7c305f46cc6c75af8dbfd06f09cb57941a9e657f414b/rhessysworkflows-1.21.tar.gz" } ], "1.22": [ { "comment_text": "", "digests": { "md5": "33fb6d381df4091c0d9804c83311da4e", "sha256": "d2aaa904ea7e3ec27837b7d36011d1cb8544f12672e119a1215fcd02d0673797" }, "downloads": -1, "filename": "rhessysworkflows-1.22.tar.gz", "has_sig": false, "md5_digest": "33fb6d381df4091c0d9804c83311da4e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 119776, "upload_time": "2014-04-01T20:06:40", "url": "https://files.pythonhosted.org/packages/4a/e0/becb0ffa75f80c979fd3ada3323d5df7fa8f10328154f911e03e895ba495/rhessysworkflows-1.22.tar.gz" } ], "1.23": [ { "comment_text": "", "digests": { "md5": "f5991f122e89b9f6bcd96401bdc59a88", "sha256": "0476111b9b88724d13b5edd4c9089d3187c5740f56204d8332df0156abd11c2a" }, "downloads": -1, "filename": "rhessysworkflows-1.23.tar.gz", "has_sig": false, "md5_digest": "f5991f122e89b9f6bcd96401bdc59a88", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 137029, "upload_time": "2015-01-17T15:47:53", "url": "https://files.pythonhosted.org/packages/eb/f6/f064575dd2379790b1d075895c6a7db1b030aab5daca193d520eeb3f073b/rhessysworkflows-1.23.tar.gz" } ], "1.24": [ { "comment_text": "", "digests": { "md5": "9c2be00ba1d6f8fd6f441b42a8b6ff7d", "sha256": "9e1c6c3eebea4df647137a2d246ba7f1fa3580ef5b36625c3bc6918db2eac214" }, "downloads": -1, "filename": "rhessysworkflows-1.24.tar.gz", "has_sig": false, "md5_digest": "9c2be00ba1d6f8fd6f441b42a8b6ff7d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 137339, "upload_time": "2015-01-20T01:51:12", "url": "https://files.pythonhosted.org/packages/d3/05/0d88cf269595222bb1aa50fdf9a8ac1b8badc733c5bdc558e0910fe9b3a7/rhessysworkflows-1.24.tar.gz" } ], "1.25": [ { "comment_text": "", "digests": { "md5": "a5a91dd2807add65a43e97cd31d26afd", "sha256": "aaeadeb572dda83e1aff62eda9c6b43c632563bcb4afd0e08b999473c596d4c7" }, "downloads": -1, "filename": "rhessysworkflows-1.25.tar.gz", "has_sig": false, "md5_digest": "a5a91dd2807add65a43e97cd31d26afd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 137342, "upload_time": "2015-02-10T20:06:32", "url": "https://files.pythonhosted.org/packages/15/65/3f3051cbfc39c157d98758b2611510f3f471e0b5e3d58e5c8ddaa456384c/rhessysworkflows-1.25.tar.gz" } ], "1.26": [ { "comment_text": "", "digests": { "md5": "d1bae001a1e401c5d8a8bc2d06e00e7a", "sha256": "e76581040b2a0a4d6a4abd69c6dabc1fcc92bc9a74850d0c69785a4f8b95f069" }, "downloads": -1, "filename": "rhessysworkflows-1.26.tar.gz", "has_sig": false, "md5_digest": "d1bae001a1e401c5d8a8bc2d06e00e7a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 136034, "upload_time": "2015-02-25T22:04:39", "url": "https://files.pythonhosted.org/packages/76/44/cba34f5c3c57765fde1459376fa708cafa65290cd318c145a8dae280677a/rhessysworkflows-1.26.tar.gz" } ], "1.27": [ { "comment_text": "", "digests": { "md5": "843e39d61b52abc292face9d17294646", "sha256": "07a856c6b15bbd0c66aedfd2795737ce4ea38222d134f2e87ee5b0c420615af2" }, "downloads": -1, "filename": "rhessysworkflows-1.27.tar.gz", "has_sig": false, "md5_digest": "843e39d61b52abc292face9d17294646", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 144791, "upload_time": "2015-03-06T22:48:49", "url": "https://files.pythonhosted.org/packages/b3/b0/6bc03e37e43453cfab71ea9281aa246f59b405643255f1c681f700b9b0cb/rhessysworkflows-1.27.tar.gz" } ], "1.28": [ { "comment_text": "", "digests": { "md5": "3ad23f035e003a561de6b2525816cf96", "sha256": "7b3d2131ac7f20a5883e8b77323bc49d291567a43ca95ad0dfc80b338c67ba2c" }, "downloads": -1, "filename": "rhessysworkflows-1.28.tar.gz", "has_sig": false, "md5_digest": "3ad23f035e003a561de6b2525816cf96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 148286, "upload_time": "2015-03-19T01:19:56", "url": "https://files.pythonhosted.org/packages/3b/50/4c087e4a42d4b0a37d3243d3648b035962cb08af255c4b01d33a1032dc00/rhessysworkflows-1.28.tar.gz" } ], "1.29": [ { "comment_text": "", "digests": { "md5": "fea3b1566fe8adda4a45031f7c1b5986", "sha256": "9db137255cd09d7ea0cd9f3c994c81e8562667c40a623a6dcc976c4c93b09c03" }, "downloads": -1, "filename": "rhessysworkflows-1.29.tar.gz", "has_sig": false, "md5_digest": "fea3b1566fe8adda4a45031f7c1b5986", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 148379, "upload_time": "2015-03-25T10:26:08", "url": "https://files.pythonhosted.org/packages/4a/3c/3bd1f56c96564a055c76f6e433222efe487b640f7b59ba52ed55976e0818/rhessysworkflows-1.29.tar.gz" } ], "1.30": [ { "comment_text": "", "digests": { "md5": "e1382e9c5a92040c7bf841549cae5cdd", "sha256": "87bb0d03e57c13382d6b43a37295889a0ee7613e24a3eda6f522198398082a2a" }, "downloads": -1, "filename": "rhessysworkflows-1.30.tar.gz", "has_sig": false, "md5_digest": "e1382e9c5a92040c7bf841549cae5cdd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 148480, "upload_time": "2015-04-20T19:11:11", "url": "https://files.pythonhosted.org/packages/a2/99/22da886f2f4d5fba0e3e26968d0a15108b6eb56fd4903a0ac616ebe9ba28/rhessysworkflows-1.30.tar.gz" } ], "1.31": [ { "comment_text": "", "digests": { "md5": "82bd38bb00a8a5467e765d07980382f3", "sha256": "8ad74327568a8c56d7bdbcfc4fc49ee73680b2174ca96d5e8b835900797c44c5" }, "downloads": -1, "filename": "rhessysworkflows-1.31.tar.gz", "has_sig": false, "md5_digest": "82bd38bb00a8a5467e765d07980382f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 147671, "upload_time": "2015-06-16T01:37:43", "url": "https://files.pythonhosted.org/packages/e3/9d/e2b2eec03e11066ab6a3e2317dd63a9ead13e170a3b5b6e637e4341ad38f/rhessysworkflows-1.31.tar.gz" } ], "1.32": [ { "comment_text": "", "digests": { "md5": "702286fadb2f83020a36232059b48125", "sha256": "a3bfbc41301cbb538335576e0c7c033d6e4a0e6f1aee72cc309a24bbf4576c4a" }, "downloads": -1, "filename": "rhessysworkflows-1.32.tar.gz", "has_sig": false, "md5_digest": "702286fadb2f83020a36232059b48125", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 147916, "upload_time": "2015-06-22T22:15:22", "url": "https://files.pythonhosted.org/packages/e1/d9/691174c9978ec24f3ff4904a657e563c6939fdad0bc43643bbf4af81c1af/rhessysworkflows-1.32.tar.gz" } ], "1.33": [ { "comment_text": "", "digests": { "md5": "707f81afedaf95253e40f88c0256c1d3", "sha256": "96f203afbecffae863b6a800497a6c7b5be111032904d081f13a207aa0127c80" }, "downloads": -1, "filename": "rhessysworkflows-1.33.tar.gz", "has_sig": false, "md5_digest": "707f81afedaf95253e40f88c0256c1d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 147965, "upload_time": "2015-07-06T18:06:49", "url": "https://files.pythonhosted.org/packages/93/42/c489a82d954fc5b01f53fce4b83ead94a43cf60fa736a059f66d44fd1c1b/rhessysworkflows-1.33.tar.gz" } ], "1.34": [ { "comment_text": "", "digests": { "md5": "2464b4d2bdca5356099f10e96f731521", "sha256": "3bb3af8d7740e905d39a48b74d05857a1e52709ab1bfbdfb3a00ea74e89feab8" }, "downloads": -1, "filename": "rhessysworkflows-1.34.tar.gz", "has_sig": false, "md5_digest": "2464b4d2bdca5356099f10e96f731521", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 165111, "upload_time": "2016-07-12T01:09:27", "url": "https://files.pythonhosted.org/packages/56/14/0fb6fc3131ffa2854a6291026e32217bab8c5956a2c76ece4b115d304726/rhessysworkflows-1.34.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2464b4d2bdca5356099f10e96f731521", "sha256": "3bb3af8d7740e905d39a48b74d05857a1e52709ab1bfbdfb3a00ea74e89feab8" }, "downloads": -1, "filename": "rhessysworkflows-1.34.tar.gz", "has_sig": false, "md5_digest": "2464b4d2bdca5356099f10e96f731521", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 165111, "upload_time": "2016-07-12T01:09:27", "url": "https://files.pythonhosted.org/packages/56/14/0fb6fc3131ffa2854a6291026e32217bab8c5956a2c76ece4b115d304726/rhessysworkflows-1.34.tar.gz" } ] }