Common Data Types

Data Source object

Description

This topic discusses the JSON representation of a dataSource object. A dataSource is a table, feature class, or raster that resides in a registered workspace (either a folder or geodatabase).

The following dataSource objects are discussed here:

Table data source

Table data source is a table, feature class, or raster that resides in a registered workspace (either a folder or geodatabase). In the case of a geodatabase, if versioned, use versionto switch to an alternate geodatabase version. If version is empty or missing, the registered geodatabase version will be used.

JSON Response syntax

{
   "type": "table",
   "workspaceId": "<registered workspace id>",
   "dataSourceName": "<table name>",
   "gdbVersion": "<version name>"
}

JSON Response example

{
   "type": "table",
   "workspaceId": "MAP",
   "dataSourceName": "MAP.user1.Taxlots",
   "gdbVersion": "MAP.Version1"
}

Query table data source

A queryTable is a layer/table that is defined by a SQL query. Query layers allow both spatial and nonspatial information stored in a DBMS to be easily integrated into map service operations. Since queryTable uses SQL to directly query database tables and views, spatial information used by a queryTable is not required to be in a geodatabase.

  • When querying a table that stores geometry in the database native format, the result is returned as a layer that can be used in any operation supported by dynamic layer. For example, use this layer in an export operation by specifying a renderer.

  • When a query layer is added as a dynamic layer to a map service, the extent defaults to the full extent of the spatial reference provided in the request (new beginning at version 10.3).

  • When querying a table that stores geometry in a non-native format, the result is returned as a table that can be used in query operations.

  • When querying a table that does not have a geometry column, do not include geometryType and spatialReference.

  • oidFields: There are only certain field types that can be used as a unique identifier. These field types include integer, string, GUID, and date. If a single integer field is specified, map server uses the values in that field directly to uniquely identify all features and rows returned from a queryTable. However, if a single string field or a group of fields is used as the unique identifier, map server maps those unique values to an integer.

    Since the value in the unique identifier field uniquely identifies a row or feature object, values in that field must always be unique and not null. Map server operations will behave unpredictably when non-unique or null values are encountered. It is your responsibility to guarantee that values in this field meet this requirement. Map server does not enforce the uniqueness of values in the unique identifier field of a queryTable. If multiple fields are chosen, the values in these fields will be used as a key to generate a unique integer value. This resultant field is always called ESRI_OID unless a field of that name already exists. The value of ESRI_OID field might possibly change for each request.

JSON Response syntax

{
   "type": "queryTable",
   "workspaceId": "<registered workspace id>",
   "query": "<SQL query>",
   "oidFields": "<field1>,<field2>,<field3>",
   "geometryType": "<esriGeometryPoint | esriGeometryMultipoint | esriGeometryPolyline | esriGeometryPolygon>",
   "spatialReference": {<spatial reference>}
 }

JSON Response example

{
   "type": "queryTable",
   "workspaceId": "SqlMAP",
   "query": "SELECT * FROM TaxLots",
   "oidFields": "taxlotid",
   "geometryType": "esriGeometryPolygon",
   "spatialReference": {"wkid": 4326}
 }

Raster data source

Raster data source is a file-based raster that resides in a registered raster workspace.

JSON Response syntax

{
   "type": "raster",
   "workspaceId": "<registered workspace id>",
   "dataSourceName": "<raster name>"
}

JSON Response example

{
   "type": "raster",
   "workspaceId": "rasterWS",
   "dataSourceName": "NewOrleans.tif"
}

Join Table data source

joinTable data source is the result of a join operation. Nested joins are supported. To use nested joins, set either leftTableSource or rightTableSource to be a joinTable.

Note:

  • The layer type is determined by the leftTableSource. If the leftTableSource is a table, the resulting joinTable is a table. If the leftTableSource is a layer, the resulting joinTable is a layer.
  • For performance reasons. it is ideal to have leftTableSource and rightTableSource point to a data source from the same workspace and, leftTableKey/rightTableKey indexed.

JSON Response syntax

{
   "type": "joinTable",
   "leftTableSource": <layerSource>,
   "rightTableSource": <layerSource>,
   "leftTableKey": "<field name from left table>",
   "rightTableKey": "<field name from right table>",
   "joinType": "<esriLeftOuterJoin | esriLeftInnerJoin>"
}

JSON Response example

{
   "type": "joinTable",
   "leftTableSource": 
   {
      "type": "mapLayer",
      "mapLayerId": 0
   },
   "rightTableSource":
   {
      "type": "dataLayer",
      "dataSource":
      {
         "type": "table",
         "workspaceId": "MAP",
         "dataSourceName": "MAP.user1.TaxLots",
         "gdbVersion": "MAP.Version1"
      }
   },
   "leftTableKey": "STATE_FIPS",
   "rightTableKey": "FIPS",
   "joinType": "esriLeftOuterJoin"
}

Workspace Layer data source

workspaceLayer data source is a Layer File (.lyrx), created from ArcGIS Pro, that resides in a registered a folder. It allows you to dynamically use a pre-author a layer, with advanced renderer and cartographically enriched symbols that are not supported by map service's REST API specifications, to a map service operation on per request basis.

Note:

  • There must be only one layer in a Layer File. For example, you cannot have a group layer or any other composite layer.
  • The source of a layer inside a Layer File cannot be a service such as map service, feature service, WMS service etc.

JSON Response syntax

{
   "type": "workspaceLayer",
   "workspaceId": "<registered workspace id>",
   "layerId": "<lyrx file name with extension>"
}

JSON Response example

{
   "type": "workspaceLayer",
   "workspaceId": "lyrx_folder",
   "dataSourceName": "WorldCities.lyrx"
}