Multiple Inputs and Outputs

While most processing components that can be included into a processing pipeline only accept one input component or only produce one output component, a few components either accept more than one input and/or produce more than one output:

Linking Multiple Input Images to a Component

Components that accept more than one input, refer to different input images using the input compnents’ UserIDs. Components that expect inputs of a specific type or content, e.g. SummarizeZones or RAMFlowAcc, expect different inputs to be indicated by specific names (UserID), e.g. ZoneImage or DEM. Please refer to the individual component’s reference for more information.

Linking Multiple SQLite Databases to a SQLProcessor

When multiple SQLite databases are linked as input to a SQLProcessor component, the first input becomes the main database. All subsequent databases linked to that component are attached to the main database. For example, in the pipeline depicted below, ImageReader116 provides the main database as it is listed as the first input component to SQLProcessor89. The database provided by ImageReader118 is then attached to the database of ImageReader116. Thereby its UserID (blackhole) is registered as the schema name for its database. This way all database tables from all attached databases can be accessed by the SQLProcessor via schema-name.table-name.

MultipleInputsToSqlProcessor
Multiple SQLProcessor inputs

Assigning Names to Multiple Outputs

Since each component only has a single UserID, components that produce more than one output image provide other means of specifying individual output names. For example, the MapAlgebra component provides the property OutputNames (s. image Image Access by Index or Name) for users to specify a name for each individual output image produced. Whether or not a BMIModel provides multiple outputs and how they’re named, can be determined using the model’s API or consulting the model’s documentation.

Linking Specific Outputs as Input to Another Component

To link a specific output image of a processing component that produces more than one ouput, e.g. MapAlgebra, as input to another component, the user needs to append the name of the output image to the component’s name using a colon : (s. ‘access by name’ in image below). Alternatively, the output image can also be referred to by its output index (s. ‘access by index’).

AccessByIndexVSName
Image access by index or name