This is supported from 10.1 onwards.
This document 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 is a table, feature class, or raster that resides in a registered workspace (either a folder or geodatabase). In case of a geodatabase, if versioned use version
to switch to an alternate geodatabase version. If version
is empty or missing, then the registered geodatabase version will be used.
{ "type": "table", "workspaceId": "<registered workspace id>", "dataSourceName": "<table name>", "gdbVersion": "<version name>" }
{ "type": "table", "workspaceId": "MAP", "dataSourceName": "MAP.user1.Taxlots", "gdbVersion": "MAP.Version1" }
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.
Note:
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 would map
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 nonunique 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.{ "type": "queryTable", "workspaceId": "<registered workspace id>", "query": "<SQL query>", "oidFields": "<field1>,<field2>,<field3>", "geometryType": "<esriGeometryPoint | esriGeometryMultipoint | esriGeometryPolyline | esriGeometryPolygon>", "spatialReference": {<spatial reference>} }
{ "type": "queryTable", "workspaceId": "SqlMAP", "query": "SELECT * FROM TaxLots", "oidFields": "taxlotid", "geometryType": "esriGeometryPolygon", "spatialReference": {"wkid": 4326} }
Raster data source is a file-based raster that resides in a registered raster workspace.
{ "type": "raster", "workspaceId": "<registered workspace id>", "dataSourceName": "<raster name>" }
{ "type": "raster", "workspaceId": "rasterWS", "dataSourceName": "NewOrleans.tif" }
joinTable
data source is the result of a join operation. Nested joins are supported. To use nested joins set either of leftTableSource
or rightTableSource
to be a joinTable.
Note:
leftTableSource
. If the leftTableSource
is a table then the resulting joinTable
is a table. If the leftTableSource
is a layer then the resulting joinTable
is a layer. leftTableSource
and rightTableSource
to point to data source from the same workspace and, leftTableKey
/rightTableKey
indexed.{ "type": "joinTable", "leftTableSource": <layerSource
>, "rightTableSource": <layerSource
>, "leftTableKey": "<field name from left table>", "rightTableKey": "<field name from right table>", "joinType": "<esriLeftOuterJoin | esriLeftInnerJoin>" }
{ "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" }