User:Mkennard/HydroGeoSphere Data Model/Temp: Difference between revisions
No edit summary |
m (Mkennard moved page User:Unjedai/HydroGeoSphere Data Model/Temp to User:Mkennard/HydroGeoSphere Data Model/Temp) |
(One intermediate revision by one other user not shown) | |
(No difference)
|
Latest revision as of 17:25, 7 October 2016
This contains information currently under development. The content may change often. |
The HydroGeosphere Data Model documents a relational database method of storing data used by the numerical model HydroGeoSphere. The data model is being developed to be compatible with the Arc Hydro Groundwater Data Model.
The wiki tables below document the tables in the relational database. The table name and the field (column) names and types are given along with descriptions.
OBJECTID fields with type OID are integer fields that are automatically numbered by the database system and serve as the primary key in the table. The primary key field is marked by the key icon.
A sample database can be found here. This database is in SQLite format. There are a number of free SQLite readers you can use to examine the database. SQLiteSpy is one and can be found via a Google search.
A version of HydroGeoSphere that reads and writes the database can be found here.
Node, face and edge sets
A node set is a list of node ids, an edge set is a list of edges (node id pairs), and a face set is a list of element face ids. A node/edge/face set represents a location at which a boundary condition can be defined.
The NodeSet, FaceSet and EdgeSet tables are used to track the nodes, faces and edges in the sets. Although a particular instance of a SetID and NodeID should be unique and not repeated in the NodeID table and could therefore serve as a primary key, an OBJECTID column is used instead for convenience. The same applies to the FaceSet and EdgeSet tables.
NodeSet | ||
---|---|---|
Field | Type | Description |
OBJECTID | OID | Unique numerical identifier. |
SetID | Integer | Unique numerical identifier for the set. |
NodeID | Integer | ID of a node in the set. |
FaceSet | ||
---|---|---|
Field | Type | Description |
OBJECTID | OID | Unique numerical identifier. |
SetID | Integer | Unique numerical identifier for the set. |
ElementID | Integer | ID of the element associated with the face in the set. |
FaceID | Integer | Element based ID of the face in the set. Refer to Element types. |
The SetDefinition table stores the node, face or edge set name and its type.
SetDefinition | ||
---|---|---|
Field | Type | Description |
OBJECTID | OID | Unique numerical identifier. This is not needed due to SetID and will be removed in the future. |
SetID | Integer | Unique numerical identifier for the node, edge or face set. |
SetType | Integer | The type of set (node, edge or face). Uses SetType coded value domain. |
SetName | Text | The name of the set. |
Boundary conditions
Boundary conditions are stored in the BC table. The TsID is used to associate a time series with a BC. A boundary condition is associated with a node set, face set or edge set via the BcHasSet table.
BC | ||
---|---|---|
Field | Type | Description |
BcID | Integer | Unique numerical identifier for the BC. |
BcType | Integer | The type of the BC. BcType coded value domain. |
BcDomain | Integer | The domain. DomainType coded value domain. |
BcInterpolate | Logical
|
Interpolate flag. Interpolate between time-series values if TRUE. This field would be an INTEGER in SQLite. |
BcInputType | Integer | Type of input for the BC. InputType coded value domain. |
BcNPanelTime | Integer | Number of time panels. |
TsID | Integer | ID of the time series (stored in the TimeSeries table) associated with this BC. |
The BcHasSet table associates BCs with sets. The table is necessary for a many-to-many relationship between BCs and sets. That is, a BC could be used on more than one set, and a set could use more than one BC.
If it is decided that a BC can be associated with only one set, then an alternative is to eliminate the BcHasSet table and put a SetID field in the BC table. Then there would be a one-to-many relationship between sets and BCs, meaning one set could be used by many BCs.
If it is decided that a set can be associated with only one BC, then an alternative is to elminate the BcHasSet table and put a BcID field in the SetDefinition table. Then there would be a one-to-many relationship between BCs and sets, meaning one BC could be used by many sets.
Another alternative is to have a one-to-one relationship between BCs and sets, in which case the BcHasSet table can be eliminated and the BC and SetDefinition tables could be merged into one table. However, if it is desirable to create one without the other - for example to create the sets first and the BCs later - then we don't want to use this approach and they should be kept separate.
Time
Time is patterned after the AHGW data model which is currently in draft version. Some draft documentation on it is available here.
TimeSeries | ||
---|---|---|
Field | Type | Description |
OBJECTID | OID | Unique numerical identifier. |
TsID | Integer | Unique numerical identifier for the Time Series in the BC table. This is called "VarID" in Arc Hydro Groundwater. |
TsTime | Double | The time stamp specifying the date and time associated with the time series value. |
UTCOffset | Double | The number of hours the time coordinate system used to define TsTime is displaced from UTC. |
TsValue | Double | The numerical value itself. |
TsValueS | Text | Similar to TsValue but a string. To accommodate rasters. |
The VariableDefinition table is taken from AHGW but we only need a couple of the standard columns. This table stores the names of time series. The BC, TimeSeries and VariableDefinition tables can all be linked via TsID.
Coded Value Domains
Coded value domains are like enumerations in C++. They define a set of values a variable can have.
BcType | |
---|---|
Field type: Integer
| |
Code | Name |
0 | undefined |
1 | head |
2 | flux |
InputType | |
---|---|
Field type: Integer
| |
Code | Name |
0 | undefined |
1 | value |
2 | rasterxy |
3 | rasterxz |
4 | rasteryz |
5 | eq_elev |
6 | eq_init |
SetType | |
---|---|
Field type: Integer
| |
Code | Name |
0 | Node |
1 | Edge |
2 | Face |
DomainType | |
---|---|
Field type: Integer
| |
Code | Name |
1 | Porous_media |
2 | Fracture_media |
3 | Dual_media |
4 | Overland_media |
5 | Channel_media |
6 | Et_media |