features、fields、domain 、gridValues、gridValue、imageValues、imageValue、tileFeature
dataset 资源表示一个数据集,通过对 dataset 资源执行 GET 请求可以获得该数据集({datasetName}或{datasetIndex})的描述信息,通过 PUT 和 DELETE 请求还可以修改或删除该数据集,当 dataset 资源不存在时,PUT 请求是创建一个数据集。
注意:1:dataset 资源支持以上4种 URI 表示方式,URI1、URI3 用数据集名称标识资源,URI2、URI4 用数据集索引标识资源;2:当<datasets_uri>中的<datasource_uri>使用 URI1或 URI2时,dataset 只能使用 URI1或 URI2;当<datasets_uri>中的<datasource_uri>使用 URI3或 URI4时,dataset 只能使用 URI3或 URI4。
支持的方法:
支持的表述格式:RJSON、JSON、HTML、XML、KML、OpenLayers3(with MVT)。
对如下 URI 执行 HTTP 请求,以 rjson 输出格式为例加以说明,其中,supermapiserver 是服务器名,World 是服务器上的一个数据源,Countries 是 World 数据源中的一个矢量数据集。
http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries.rjson
获取数据集的详细信息。
无。
对 dataset 资源执行 GET 请求,返回的资源表述的结构如下(资源表述在响应消息的实体主体里):
字段 | 类型 | 说明 |
datasetInfo | DatasetInfo | 数据集详细信息。 |
childUriList | List<String> | 子资源列表。 |
supportAttachments | boolean | 附件功能是否可用 |
supportFeatureMetadatas | boolean | 是否支持元信息功能 |
其中数据集详细信息,即 DatasetInfo 的结构如下:
字段 | 类型 | 说明 |
name | String | 数据集名称,数据集的唯一标识。 该标识不区分大小写。 |
description | String | 数据集的描述信息。 |
type | DatasetType | 数据集类型。
目前版本支持的数据集类型包括纯属性表数据集、点数据集、EPS点数据集、线数据集、EPS线数据集、面数据集、EPS面数据集、文本数据集、EPS文本数据集、复合数据集(CAD 数据集)等矢量数据集(DatasetVector),格网数据集(DatasetGrid),影像数据集(DatasetImage),以及网络数据集(DatasetNetwork)。 |
bounds | Rectangle2D | 数据集范围。
对于矢量数据集来说,bounds 为数据集中所有对象的最小外接矩形;对于栅格,bounds 为当前格网或影像的地理范围。 |
dataSourceName | String | 该数据集对象所属的数据源名称。 |
encodeType | EncodeType | 数据集存储时的压缩编码方式。 |
isReadOnly | boolean | 数据集是否为只读。 |
prjCoordSys | PrjCoordSys | 数据集的投影信息。 |
tableName | String | 表名。
对数据库型数据源,指此数据集在数据库中所对应的数据表名称;对文件型数据源,指此数据集存储属性的表名称(文件型数据源文件用.udb 文件存储空间数据,.udd 文件存储属性数据)。 |
charset | Charset | 矢量数据集的字符集。仅当 dataset 资源标识的是矢量数据集时存在。 |
isFileCache | boolean | 是否使用文件形式的缓存。仅对数据库型数据源中的矢量数据集有效。 |
recordCount | int | 矢量数据集中的记录数。 仅当 dataset 资源标识的是矢量数据集时存在。 |
blockSize | int | 按像素分块存储,每一块的大小。 仅当 dataset 资源标识的是影像数据集或 Grid 数据集时存在。 |
height | int | 数据的高度。 仅当 dataset 资源标识的是影像数据集或 Grid 数据集时存在。 |
width | int | 数据的宽度。 仅当 dataset 资源标识的是影像数据集或 Grid 数据集时存在。 |
pixelFormat | PixelFormat | 数据存储的像素格式。仅当 dataset 资源标识的是影像数据集或 Grid 数据集时存在。 |
isMultiBand | boolean | 影像数据集是否是多波段影像数据集。 仅当 dataset 资源标识的是影像数据集时存在。 |
palette | List<java.awt.Color> | 影像数据的颜色调色板。 仅当 dataset 资源标识的是影像数据集时存在。 |
对示例 dataset 资源:http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries.rjson 执行 GET 请求,返回 Countries 数据集的表述如下(Countries 数据集是矢量数据集):
{
"childUriList": [
"http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries/fields",
"http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries/features"
],
"datasetInfo": {
"bounds": {
"bottom": -90,
"left": -180,
"leftBottom": {
"x": -180,
"y": -90
},
"right": 180,
"rightTop": {
"x": 180,
"y": 83.62359619140626
},
"top": 83.62359619140626
},
"charset": "GB18030",
"dataSourceName": "World",
"description": "",
"encodeType": "NONE",
"isFileCache": false,
"isReadOnly": false,
"name": "Countries",
"prjCoordSys": {
"coordSystem": {
"datum": {
"name": "D_WGS_1984",
"spheroid": {
"axis": 6378137,
"flatten": 0.0033528107,
"name": "WGS_1984",
"type": "SPHEROID_WGS_1984"
},
"type": "DATUM_WGS_1984"
},
"name": "GCS_WGS_1984",
"primeMeridian": {
"longitudeValue": 0,
"name": "Greenwich",
"type": "PRIMEMERIDIAN_GREENWICH"
},
"spatialRefType": "SPATIALREF_EARTH_LONGITUDE_LATITUDE",
"type": "GCS_WGS_1984",
"unit": "DEGREE"
},
"coordUnit": "DEGREE",
"distanceUnit": "METER",
"epsgCode": 1,
"name": "Longitude / Latitude Coordinate System---GCS_WGS_1984",
"projection": null,
"projectionParam": null,
"type": "PCS_EARTH_LONGITUDE_LATITUDE"
},
"recordCount": 247,
"tableName": "Countries",
"type": "REGION"
}
}
对示例 dataset 资源:http://localhost:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Capitals.kml 执行 GET 请求,返回 kml 格式表述(目前支持点、线、面数据集的 kml 表述)如下:
<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<kml>
<Document>
<NetworkLink>
<Link>
<href>http://localhost:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Capitals/features.kml</href>
</Link>
</NetworkLink>
</Document>
</kml>
在 GoogleEarth 中访问 http://localhost:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Capitals.kml,显示如下图所示:
上图是默认显示效果,关于 kml 的默认显示风格,可以参考 %SuperMap iServer Java_HOME%\WEB-INF\lib\service-model-{version}.jar\config\kml\styles\default.xml 文件。
用户可以自定义 dataset 的 kml 数据的显示风格,具体操作请参考“配置管理 > KML 风格配置”。
当资源标识为第一种方式的 URI 时,表示创建数据集或修改数据集信息,目前只支持矢量数据集。当 dataset 资源不存在时为创建,存在时为修改。
当 dataset 资源不存在时,对一个新的 URI 发 PUT 请求,表示创建数据集时,需要在请求体中包含以下参数:
名称 | 类型 | 含义 |
datasetName | String | 数据集名。
注意要跟 URI 中的{datasetName}保持一致。 |
datasetType | DatasetType | 数据集类型。
目前支持创建的出聚集类型有:点、线、面、文本、复合(CAD)和属性数据集。 |
isFileCache | boolean | 是否使用文件形式的缓存。仅对数据库型数据源中的矢量数据集有效。 |
当 dataset 资源存在时,对 dataset 资源执行 PUT 请求,对数据集信息进行修改,需要在请求体中包含以下参数:
名称 | 类型 | 含义 |
description | String | 数据集描述信息。 |
prjCoordSys | PrjCoordSys | 投影坐标系。 |
charset | enum | 矢量数据集的字符集。
【可选参数】当数据集类型为矢量数据集时,可以传递此参数。如果用户传递空值,则编码方式保持不变。 |
palette | java.util.List<Color> | 影像数据的颜色调色板。
【可选参数】当数据集类型为影像数据集时,可以传递此参数。 |
noValue | double | 栅格数据集中没有数据的像元的栅格值。
【可选参数】当数据集类型为栅格数据集时,可以传递此参数。 |
对 dataset 资源执行 PUT 请求,返回的操作结果表述的结构如下(表述在响应消息的实体主体里):
字段 | 类型 | 说明 |
succeed | boolean | 操作是否成功。 |
newResourceLoaction | String | 新创建的数据集资源的 URI。如果 PUT 请求执行的是修改操作,则没有本字段。 |
error | HttpError | 出错信息,如果创建成功,则没有本字段。 |
对 dataset 资源执行 PUT 请求,当 URI 所标识的资源不存在时,例如 URI 为 http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/World1.rjson,而 World 数据源中并没有 World1 数据集,此时对该 URI 执行 PUT 请求表示创建。
对 URI:http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/World1.rjson 执行 PUT 请求,请求体如下:
{"datasetType":"POINT","datasetName":"World1"}
则返回 rjson 格式的操作结果的表述如下:
{
"newResourceLocation": "http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/World1",
"succeed": true
}
对示例 dataset 资源:http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/World1.rjson 执行 PUT 请求,在资源存在的情况下(World 数据源里数据集 World1 存在)表示修改。对该 URI 执行 PUT 请求,在请求体中传入以下参数,对数据集 World1 进行修改:
{
"isFileCache": "true",
"description": "123",
"prjCoordSys": {
"coordUnit": "MILE",
"name": "Tokyo UTM 51",
"epsgCode": 3902,
"projection": null,
"coordSystem": null,
"type": "PCS_USER_DEFINED",
"distanceUnit": null,
"projectionParam": null
},
"charset": "GB18030"
}
则返回 rjson 格式的操作结果的表述如下:
{"succeed": true}
删除数据集。对示例 dataset 资源,即 URI 而言,就是删除 World 数据源中的 Countries 数据集。
无。
对 dataset 资源执行 DELETE 请求,删除该数据集,返回的操作结果的表述如下:
字段 | 类型 | 说明 |
succeed | boolean | 删除数据集是否成功 |
error | HttpError | 出错信息,如果操作成功,则没有本字段。 |
对示例 dataset 资源:http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries.rjson 执行 DELETE 请求,删除 Countries 数据集,在操作成功的情况下,返回 rjson 格式的表述如下:
{"succeed": true}
返回跟 GET 请求一样的 HTTP 响应头,但是没有响应实体。可以在不必传输整个响应内容的情况下,获取包含在响应消息头中的元数据信息。元数据信息包括媒体类型,字符编码,压缩编码,实体内容长度等。
HEAD 请求可以用来判断 dataset 资源是否存在,或者客户端是否有权限访问 dataset 资源。通过对加.<format>的 URI 执行 HEAD 请求,还可以快速判断 dataset 资源是否支持<format>格式的表述。