Catalogs that can be defined within the Studio Desktop are based on single geodatabase table. For any catalog table defined in the Class Configuration, a corresponding schema is stored as well. At runtime, the schema for a catalog is used to assemble the content for the dedicated catalog.
Catalog Tables allow for creating domains and multi-stage (contingent) catalogs. Catalog tables are typically part of the schema of the underlying geodatabase, or at minimum, part of the map where the current layer or standalone table is defined.
All catalog schemas are managed in the configuration using unique names. Within the Catalog Schema Repository, catalog schemas can be registered, modified, or removed.
There are two types of catalogs, that can be registered at the repository:
•Catalogs based on Lookup-Tables
•Catalogs based on Contingent-Tables
Domain or Lookup Tables are used for the definition of Domain Values. The simpliest lookup table consists just out of a single column, that contains all the domain values.
A lookup table supports the following features:
•Coded Values
•Visibility
•Sort Order
•Favorites
A Lookup Table that supports Coded Values defines two columns, where one columns defines the code (usually a numerical value) and the other columns refers to the corresponding label or title (usually a text value).
Usually, all rows from a Lookup Table are assembled into the corresponding domain catalog. If specific entries shall be part of the domain catalog, but not explicitly selectable from the UI, the visibility for those entries can be defined using an additional column, that contains the values 1 or 0 (or null referring to default).
Domain entries from a Lookup Table can be set in a specific order using an additional column used for sorting. A Sort Order column usually defines numerical values.
Specific Domain entries can be marked as Favorites. A domain entry marked as Favorite will appear in the Favorite List. Favorites are defined using an additional column, that contains the values 1 or 0 (or null referring to default).
Contingent Tables are used for the definition of Multistage Catalogs. Multistage or Multilevel Catalogs are used to combine values for a set of attributes, whose values define predefined tuples.
The schema for a Contingent Table consists out of a set of key domains and an optional set of additional domains. The columns for every key and additional domain are part of the schema of the Contingent Table.
All Catalog Schemas are made persistent with the application configuration file (default.vgappconf). This is a JSON file that contains the schemas section.
The schemas section in the default.vgappconf is defined as a dictionary of schema names and schema definitions:
"schemas": {
"<Catalog Name>": {
"$type": "<Catalog Type>",
"table": "<Catalog Table>",
...
}
The following JSON catalog types are currently supported:
•lookupTable - Use this $type for the definition of a domain or lookup table.
•contingentTable - Use this $type in order for the definition of contingent- or multistage tables.
Table CAT_LIFECYCLE_STATUS
STAT_ID |
DISPLAY_NAME |
IS_VISIBLE |
SORT_ORDER |
FAV_MARKER |
|---|---|---|---|---|
0 |
'Undefined' |
null |
0 |
null |
1 |
'Planned' |
null |
1 |
1 |
2 |
'Under Construction' |
null |
2 |
null |
3 |
'In Operation' |
null |
3 |
1 |
4 |
'Out of Operation' |
null |
4 |
1 |
5 |
'Disused' |
null |
5 |
null |
6 |
'Abandoned' |
null |
6 |
null |
7 |
'Legacy' |
0 |
null |
0 |
8 |
'Legacy (Custom)' |
0 |
null |
0 |
9 |
'Removed' |
null |
100 |
0 |
The Table Schema for this sample catalog is as following:
Column |
Remark |
|---|---|
STAT_ID |
Column with catalog value, that refers to the Domain Code |
DISPLAY_NAME |
Column with title, that refers to the display name for the corresponding code. |
IS_VISIBLE |
Column with numerical indicator value, that refers to the visibility for the corresponding code. |
SORT_ORDER |
Column with numerical indicator value, that is used to sort the domain entries. |
FAV_MARKER |
Column with numerical indicator value, that is used to identify the domain entries, that can be selected from a list favorites at the UI. |
The configuration entry at default.vgappconf is as following:
"Lifecycle_Stats": {
"$type": "lookupTable",
"table": "CAT_LIFECYCLE_STATUS",
"column": "STAT_ID",
"labelColumn": "DISPLAY_NAME",
"visibilityColumn": "IS_VISIBLE",
"sortColumn": "SORT_ORDER",
"favoriteColumn": "FAV_MARKER"
}
Sample 1 "Pipeline Types"
Table CAT_PIPE_TYPES
LT_CODE |
LT_NAME |
LT_SORT |
MAT_CODE |
MAT_NAME |
PROF_DIM |
SAP_TP_NO |
|---|---|---|---|---|---|---|
0 |
Unknown |
0 |
0 |
Unknown |
null |
null |
0 |
Unknown |
0 |
1 |
Copper |
0.067 |
01-A-S-EXT-A01-P1234 |
0 |
Unknown |
0 |
1 |
Copper |
0.0685 |
01-A-S-EXT-A01-P2345 |
0 |
Unknown |
0 |
2 |
PE/HDPE |
0.067 |
... |
1 |
ASTM A106 |
1 |
0 |
Unknown |
null |
|
1 |
ASTM A106 |
1 |
1 |
Aluminium |
0.067 |
|
1 |
ASTM A106 |
1 |
1 |
Aluminium |
0.085 |
|
1 |
ASTM A106 |
1 |
1 |
Aluminium |
0.106 |
|
1 |
ASTM A106 |
1 |
1 |
Aluminium |
0.133 |
|
1 |
ASTM A106 |
1 |
2 |
Copper |
... |
|
1 |
ASTM A106 |
1 |
3 |
Ductile Iron |
... |
|
2 |
A335 |
1 |
0 |
Unknown |
... |
|
2 |
A335 |
1 |
1 |
Aluminium |
... |
|
2 |
A335 |
1 |
2 |
Copper |
... |
|
3 |
S 235 |
... |
The Table Schema for this sample catalog is as following:
Column |
Remark |
|---|---|
LT_CODE |
This is the column, that contains the code for the pipe type. The pipe type refers to the key domain for the first attribute at the catalog (Position in multilevel catalog will be 0) |
LT_NAME |
This is the column, that contains the title for the corresponding pipe_type code. |
LT_SORT |
This column contains the sort order criterium, that is used to bring all pipe type nodes at the catalog tree in a specific order. |
MAT_CODE |
This is the column, that contains the code for the pipe material. The pipe material refers to the key domain for the second attribute at the catalog (Position in multilevel catalog will be 1) |
MAT_NAME |
This is the column, that contains the title for the corresponding pipe_material code. |
PROF_DIM |
This is the column, that contains the value for the pipe profile dimension. The pipe profile dimension refers to the key domain for the third attribute at the catalog (Position in multilevel catalog will be 2) |
SAP_TP_NO |
This is the column refers to the technical place from SAP and will be used as an additional value, that depends at the correspondig value tuple pipe type > pipe material > pipe profile dimension |
The configuration entry at default.vgappconf is as following:
"PipeTypes": {
"$type": "contingentTable",
"table": "CAT_PIPE_TYPES",
"domains": {
"$type": "contingentProperties",
"$values": [
{
"column": "LT_CODE",
"labelColumn": "LT_NAME",
"sortColumn": "LT_SORT"
},
{
"column": "MAT_CODE",
"labelColumn": "MAT_NAME"
},
{
"column": "PROF_DIM"
}
]
},
"additions": {
"$type": "contingentProperties",
"$values": [
{
"column": "SAP_TP_NO"
}
]
}
}
This sample defines that schema for a contingent catalog table structured as following:
<pre> Pipeline +- Type [LT_CODE] | +- Material [MAT_CODE] | +- Profile Diameter [PROF_DIM] => SAP Technical Place [SAP_TP_NO] </pre>
The hierachical catalog is defined using the LT_CODE column, for root items, entries from MAT_CODE column are used as children at level 1 and entries from the PROF_DIM column are used as leafs at level 2
The nodes defined by the LT_CODE and MAT_CODE columns are defined as coded values where the LT_CODE and MAT_CODE columns refer to the data (or code) and the LT_NAME and MAT_NAME columns contain the titles (or labels) for this nodes.
The column SAP_TP_NO is defined, when a proper PROF_DIM leaf is selected.
Sample 2 "Address Navigation"
Table by_adressen
distr |
dstr_id |
cty |
str |
strcode |
str_hist |
hnr |
hnr_sort |
|---|---|---|---|---|---|---|---|
Oberpfalz |
1023 |
Amberg |
Bahnhofstrasse |
12659 |
null |
1 |
0 |
Oberpfalz |
1023 |
Amberg |
Bahnhofstrasse |
12659 |
null |
1a |
1 |
Oberpfalz |
1023 |
Amberg |
Bahnhofstrasse |
12659 |
null |
1bf |
2 |
Oberpfalz |
1023 |
Amberg |
Othmayrstrasse |
12662 |
null |
1 |
0 |
Oberpfalz |
1023 |
Amberg |
Othmayrstrasse |
12662 |
null |
123 |
10 |
Oberpfalz |
1023 |
Amberg |
Othmayrstrasse |
12662 |
null |
196 |
101 |
Oberbayern |
2053 |
München |
Hilblestraße |
18062 |
1 |
1 |
null |
Oberbayern |
2053 |
München |
Hilblestraße |
18062 |
1 |
2 |
null |
Oberbayern |
2053 |
München |
Hilblestraße |
18062 |
1 |
4 |
null |
Oberbayern |
2053 |
München |
Hilblestraße |
18062 |
1 |
16a |
null |
Oberbayern |
2053 |
München |
Kleiststraße |
18062 |
1 |
1 |
null |
Oberbayern |
2053 |
München |
Kleiststraße |
18062 |
1 |
2 |
null |
Oberbayern |
2053 |
München |
Kleiststraße |
18062 |
1 |
4 |
null |
Oberbayern |
2053 |
München |
Kleiststraße |
18062 |
1 |
16a |
null |
The configuration entry in default.vgappconf is as follows:
"PipeTypes": {
"$type": "contingentTable",
"table": "by_adressen",
"domains": {
"$type": "contingentProperties",
"$values": [
{
"column": "dstr_id",
"labelColumn": "distr"
},
{
"column": "cty"
},
{
"column": "strcode",
"labelColumn": "str",
"visibilityColumn": "str_hist"
},
{
"column": "hnr",
"sortColumn": "hnr_sort"
}
]
}
}
This sample defines that schema for a contingent catalog table structured as follows:
<pre> +- District [dstr_id] +- City [cty] +- Street [strcode] +- House No [hnr] </pre>
With no further information, catalog tables are resolved from the current map by default. In which, the given catalog table name is either the name of the layer or standalone table from the TOC, or the given name is equal to the table name behind the resolved map member.
The catalog tables from the configuration can be resolved using relative and absolute item URLs to local databases that are part of the current project.
Catalog tables that refer to feature layers URLs can also be used.
Catalog Name |
Remarks |
|---|---|
CUS_C_MY_CATALOG |
This name is used to resolve the target catalog table from the map. There can either be a map member with name CUS_C_MY_CATALOG, or a feature layer or standalone table with a table named CUS_C_MY_CATALOG |
C:\temp\MyFileGeodatabase.gdb\CUS_C_MY_CATALOG |
This is a sample for an absolute item URL that refers to a table from a file geodatabase. Please note, that this file geodatabase has to be located on the current machine under the given folder path. |
MyProject.geodatabase\CUS_C_MY_CATALOG |
This is a sample item URL that refers to a table from a mobile geodatabase located relative to the current project root. |
https://[host]/[service]/FeatureServer/[layerid] |
This is a sample feature layer URL. This feature layer must be accessible from the current application. Ensure that ArcGIS Pro contains the proper credentials for this feature server. |
Any catalog that is defined using the schema from the application configuration is defined as a Queryable Catalog by default. This means the table is located and queried (the first time) when items are fetched. This is in contrast to domains and contingent values that are popuplated when a feature or object class is loaded. This means that domains and contingents can be queried only when the feature or row is opened within the Attribute Form.