Riverscapes Analysis Visualization Explorer

Business logic XML

The purpose of the business logic XML is to translate Riverscpaes projects and determine how they should be displayed in the RAVE project explorer. In other words, the Riverscapes project file defines what layers exist within a project, while the business logic file defines how these layers should be organized within the project explorer tree.

Typically there is one business logic XML file for each type of Riverscapes project (e.g. BRAT, VBET, GCD etc). But it’s also possible to have several business logic XML files for a single project type. This allows users to have different views of a single project type. Perhaps there’s one during development and another for reviewing projects with clients etc. If you need this ability see the custom business logic and search folders sections below.

business logic

Where does RAVE Look for Business Logic XML Files?

When RAVE attempts to load a Riverscapes project it looks in three locations to find an appropraite business logic XML file. RAVE uses the first business logic file that it finds that contains the same project type specified at the top of the business logic file. See the symbology page for how to locate your APPDATA folder.

Search Folder Example
Adjacent to the parent riverscapes project file. D:\MyProjects\dem.lyr
<software_installation_folder>\XML Hidden folder

Altering Business Logic & Refreshing the Project Explorer

You can change the business logic XML file while ArcMap and RAVE are in use, providing that the business logic file in question is either adjacent to the Riverscapes project file or in the APPDATA folder.

  1. Locate the business logic file being used and open it in any text editor.
  2. Make the desired changes to the business logic XML.
  3. Save the business logic XML file.
  4. Right click on the project node in the RAVE project explorer and choose “Refresh”.


Custom Business Logic

You can apply a business logic file stored in a location on your computer other than the search folders described above by choosing the “Customize Project Hierarchy” option after right clicking on the project in the RAVE project explorer.


Business logic Definition

Here is an example of a business logic file for VBET projects:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  <Node xpathlabel="Name">
      <Repeater label="Realizations" xpath="Realizations/VBET">
        <!--This is a template for how each realization should render-->
        <Node xpathlabel="Name">
          <Children collapsed="false">
            <Node label="Inputs" xpath="Inputs">
                <Node label="Topography" xpath="Topography">
                    <Node xpathlabel="Name" xpath="DEM" type="raster" symbology="DEM"/>
                    <Node xpathlabel="Name" xpath="Flow" type="raster" symbology="Flow"/>
                    <Node xpathlabel="Name" xpath="Slope" type="raster" symbology="SlopePer"/>
                <Repeater label="Network Buffers" xpath="DrainageNetworks/Network/Buffers/Buffer">
                  <Node xpathlabel="Name" type="vector" symbology="DEMO_singlefill"/>
            <Node label="Analyses"/>

By layering the various building blocks together you should be able to accomplish a wide variety of tree structures.



Repeaters can contain <Node> types. The <Node> inside a will be applied to each repeated element found inside that repeater’s xpath results.

Repeaters have one attribute: xpath that you can use to specify the object that is repeated in the project xml.


Children can contain <Node> and <Repeater> types. They can only be used inside other <Node> tags.

They have one optional attribute: collapsed="true/false" which determines if this group is collapsed by default upon load.



  • <TileService>: (optional) If your node is a tile service (type="tile") then put its url here
  • <Children>: This node can have sub-nodes


Choose one of:

  • label: The literal string you want to assign to this node as a label
  • xpathlabel: if you don’t use label and you want to look up your node label from the xml file you can do it this way

The following are optional:

  • type: If you want your node to be added to the map you need to specify what its type is. See the “Node Data Types” section below for allowed values.
  • symbology: If this is a map layer you can specify what symbology to use. This must match the NAME variable from the python symbology plugin in RiverscapesToolbar/symbology/plugins/myplygin.py
  • xpath: Not to be confused with xpathlabel. This xpath sets the context for this node. Children nodes will inherit it.

Node Data Types

Nodes can have different data types which affect how (if) the node loads into the map.

  • raster: tif files
  • vector: shp files
  • tile: A url
  • file: catch-all for any other kind of file. Right now this will just open up finder/explorer to this location.