URI
<dataset_uri>/features[.<format>]
支持的(de)方法
父資源
子(zǐ)資源
介紹
features 資源表示一(yī / yì /yí)個(gè)數據集中所有要(yào / yāo)素(feature)的(de)集合。通過對 features 資源執行 GET 請求可以(yǐ)獲取數據集中的(de)要(yào / yāo)素列表,當數據集爲(wéi / wèi)點、線、面數據集、文本數據集、複合數據集或純屬性表數據集時(shí),對 features 資源執行 POST 請求可以(yǐ)完成對數據集中的(de)要(yào / yāo)素進行添加、删除或修改。
關于(yú)本資源的(de)使用方法,可參考開發指南:要(yào / yāo)素的(de)添加。
支持的(de)方法:
- GET:獲取要(yào / yāo)素(feature)信息集合。
- POST:添加、删除、修改要(yào / yāo)素集中的(de)要(yào / yāo)素。
- HEAD:檢查 features 資源是(shì)否存在(zài),或權限是(shì)否可以(yǐ)訪問 features 資源。
支持的(de)表述格式:RJSON、JSON、HTML、XML、KML、GeoRSS、GeoJSON。
注:當要(yào / yāo)素類型爲(wéi / wèi)點、線、面時(shí),GeoJSON表述可用。
資源層次
HTTP 請求方法
對如下 URI 執行 HTTP 請求,以(yǐ) rjson 輸出(chū)格式爲(wéi / wèi)例加以(yǐ)說(shuō)明,其中,supermapiserver 是(shì)服務器名。
http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries/features.rjson
GET 請求
獲取要(yào / yāo)素(feature)信息集合。包括數據集中要(yào / yāo)素的(de)個(gè)數、要(yào / yāo)素對應的(de)幾何對象的(de)類型、各個(gè)要(yào / yāo)素的(de) URI 等信息。
請求參數
對 features 資源執行 GET 請求,獲取數據集中的(de)要(yào / yāo)素信息集合,可以(yǐ)在(zài) URI 中包含如下參數:
名稱 | 類型 | 含義 |
fromIndex | int | 要(yào / yāo)素信息集合的(de)起始索引号,默認值是(shì)0 |
toIndex | int | 要(yào / yāo)素信息集合的(de)終止索引号,默認值是(shì)19 |
當然,也(yě)可以(yǐ)不(bù)傳任何參數,默認地(dì / de),對 features 資源執行 GET 請求,将返回索引号範圍爲(wéi / wèi) 0-19 的(de)要(yào / yāo)素信息集合。
響應結構
對 features 資源執行 GET 請求,返回的(de)資源表述的(de)結構如下(資源表述在(zài)響應消息的(de)實體主體裏):
字段 | 類型 | 說(shuō)明 |
featureCount | int | 數據集中要(yào / yāo)素的(de)總數量。 |
geometryType | GeometryType | 要(yào / yāo)素的(de)類型。 |
childUriList | List<String> | 要(yào / yāo)素(feature 資源)的(de) URI 列表。 |
startIndex | int | 要(yào / yāo)素集合中要(yào / yāo)素的(de)起始位置,其值與請求時(shí)設置的(de) fromIndex 相等。 |
示例
對示例 features 資源:http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries/features.rjson 執行 GET 請求,在(zài) URI 中傳入 fromIndex 和(hé / huò) toIndex 參數如下:
http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries/features.rjson?fromIndex=50&toIndex=55
則返回 rjson 格式的(de)資源表述如下:
{
"childUriList": [
"http://supermapiserver:8090/iserver/services/data-world/rest/data/feature/0-13-50",
"http://supermapiserver:8090/iserver/services/data-world/rest/data/feature/0-13-51",
"http://supermapiserver:8090/iserver/services/data-world/rest/data/feature/0-13-52",
"http://supermapiserver:8090/iserver/services/data-world/rest/data/feature/0-13-53",
"http://supermapiserver:8090/iserver/services/data-world/rest/data/feature/0-13-54",
"http://supermapiserver:8090/iserver/services/data-world/rest/data/feature/0-13-55"
],
"featureCount": 247,
"geometryType": "REGION"
}
對示例 features 資源:http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Capitals/features.kml 執行 GET 請求,返回 kml 格式表述。在(zài) GoogleEarth 中訪問此 kml 服務,默認顯示效果如下圖:
POST 請求
對要(yào / yāo)素集中的(de)要(yào / yāo)素進行添加、删除(_method=DELETE)、修改(_method=PUT)操作(當所在(zài)數據集爲(wéi / wèi)點/線/面數據集、文本數據集、複合數據集或純屬性表數據集時(shí))。iServer支持采用異步提交的(de)方式處理要(yào / yāo)素編輯操作,可不(bù)用阻塞當前線程來(lái)等待操作完成,而(ér)是(shì)允許後續操作。可在(zài)服務配置文件中設置異步提交。
此外,iServer 還支持創建 GeoJSON 格式的(de)幾何對象,請求示例參見:創建 GeoJSON 格式的(de)幾何對象
請求參數
features 資源表示的(de)是(shì)數據集中的(de)要(yào / yāo)素集合。默認地(dì / de),對 features 資源執行 POST 請求,是(shì)在(zài)創建新的(de)要(yào / yāo)素。但可以(yǐ)在(zài) features 資源的(de) URI 中包含如下參數來(lái)控制 POST 請求的(de)預期是(shì)删除要(yào / yāo)素還是(shì)修改要(yào / yāo)素。
注:三維模型數據集不(bù)支持創建要(yào / yāo)素。
URI 中的(de)參數如下:
名稱 | 類型 | 含義 |
isUseBatch | boolean | 【可選參數】 是(shì)否使用批量添加要(yào / yāo)素功能,要(yào / yāo)素添加時(shí)有效。 批量添加能夠提高要(yào / yāo)素編輯效率。 true 表示批量添加;false 表示不(bù)使用批量添加。默認不(bù)傳時(shí)爲(wéi / wèi) false。 |
returnContent | boolean | 【可選參數】 要(yào / yāo)素添加時(shí),isUseBatch 不(bù)傳或傳爲(wéi / wèi) false 的(de)情況下有效。 true 表示直接返回新創建的(de)要(yào / yāo)素的(de) ID 數組;false 表示返回創建的(de) featureResult 資源的(de) URI。默認不(bù)傳時(shí)爲(wéi / wèi) false。 |
_method | String | POST 請求應實現的(de)功能。 可能的(de)值有:GET、PUT、POST、DELETE、HEAD,分别表示實現對應 HTTP 請求的(de)功能。 這(zhè)裏,_method 可取 DELETE 或 PUT,分别表示删除要(yào / yāo)素或修改要(yào / yāo)素。 |
對 features 資源執行 POST 請求,對要(yào / yāo)素進行添加(無 _method 參數)或修改(_method=PUT)時(shí),需要(yào / yāo)在(zài)請求體中包含添加/修改的(de)要(yào / yāo)素信息集合,其中單個(gè)要(yào / yāo)素信息的(de)結構如下:
名稱 | 類型 | 含義 |
fieldNames | String[] | 要(yào / yāo)素的(de)屬性字段名集合。其中,系統字段是(shì)創建數據集和(hé / huò)要(yào / yāo)素時(shí)系統默認生成的(de)字段,用戶不(bù)能進行編輯,字段内容除了(le/liǎo) SMUSERID 外都是(shì)不(bù)能修改的(de),關于(yú)不(bù)同數據集系統字段的(de)介紹,請參考fields資源。 |
fieldValues | String[] | 要(yào / yāo)素的(de)屬性字段值集合。 |
geometry | Geometry | 要(yào / yāo)素對應的(de)幾何對象。 暫不(bù)支持Elasticsearch數據源中既有Geo_Point類型,又有Geo_Shape類型的(de)數據。 |
對要(yào / yāo)素進行删除時(shí)(_method=DELETE),需要(yào / yāo)在(zài)請求體中包含欲删除要(yào / yāo)素的(de) ID 數組或SQL查詢條件,這(zhè)時(shí),請求體結構如下:
名稱 | 類型 | 含義 |
IDs | int[] | 以(yǐ)ID 數組方式删除要(yào / yāo)素時(shí),需傳入要(yào / yāo)素的(de) ID 數組。 對于(yú)字符串和(hé / huò)數值類型的(de)數據,是(shì)否加引号均可。 |
attributeFilter | String | 以(yǐ)SQL條件方式删除要(yào / yāo)素時(shí),需傳入 SQL查詢條件。 對于(yú)Elasticsearch數據,當字段值包含大(dà)寫時(shí),查詢條件不(bù)加引号。例如:MAPTN = G12 對于(yú)Elasticsearch數據,查詢條件暫不(bù)支持區分大(dà)小寫。 |
響應結構
對 features 資源執行 POST 請求,對要(yào / yāo)素集中的(de)要(yào / yāo)素進行添加、修改或删除,返回操作結果的(de)表述結構如下:
字段 | 類型 | 說(shuō)明 |
succeed | boolean | 操作是(shì)否成功。 |
newResourceID | String | 創建的(de) featureResult 資源的(de) ID。 |
newResourceLocation | String | 創建的(de) featureResult 資源的(de) URI。 isUseBatch 爲(wéi / wèi) true 時(shí)無效。 |
error | HttpError | 出(chū)錯信息,如果操作成功,則沒有本字段。 |
示例
對示例 features 資源,即 World 數據源的(de) Countries 數據集中的(de)要(yào / yāo)素集合,執行 POST 請求。
- 創建新的(de)要(yào / yāo)素
對 URI:http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries/features.rjson?isUseBatch=true 執行 POST 請求,在(zài)請求體中包含如下參數:
[
{
"fieldNames": [
"SMID",
"SMSDRIW",
"SMSDRIN",
"SMSDRIE",
"SMSDRIS",
"SMUSERID",
"SMAREA",
"SMPERIMETER",
"SMGEOMETRYSIZE",
"SQKM",
"SQMI",
"COLOR_MAP",
"CAPITAL",
"COUNTRY",
"POP_1994",
"CONTINENT"
],
"fieldValues": [
"22",
"-7.433472633361816",
"62.35749816894531",
"-6.38972282409668",
"61.388328552246094",
"6",
"0.25430895154659083",
"5.743731026651685",
"4500",
"1474.69",
"569.38",
"5",
"示例首都 a",
"示例國(guó)家 a",
"47067.0",
"亞洲"
],
"geometry": {
"id": 22,
"parts": [
3
],
"points": [
{
"x": -40,
"y": 60
},
{
"x": -45,
"y": 62
},
{
"x": -40,
"y": 55
},
{
"x": -40,
"y": 60
}
],
"style": null,
"type": "REGION"
}
}
],
[
{
"fieldNames": [
"SMID",
"SMSDRIW",
"SMSDRIN",
"SMSDRIE",
"SMSDRIS",
"SMUSERID",
"SMAREA",
"SMPERIMETER",
"SMGEOMETRYSIZE",
"SQKM",
"SQMI",
"COLOR_MAP",
"CAPITAL",
"COUNTRY",
"POP_1994",
"CONTINENT"
],
"fieldValues": [
"23",
"-7.433472633361816",
"62.35749816894531",
"-6.38972282409668",
"61.388328552246094",
"6",
"0.25430895154659083",
"5.743731026651685",
"4500",
"1474.69",
"569.38",
"5",
"示例首都 b",
"示例國(guó)家 b",
"47067.0",
"亞洲"
],
"geometry": {
"id": 23,
"parts": [
3
],
"points": [
{
"x": -40,
"y": 60
},
{
"x": -45,
"y": 62
},
{
"x": -40,
"y": 55
},
{
"x": -40,
"y": 60
}
],
"style":
{
"fillGradientOffsetRatioX":0,
"markerSize":2.4,
"fillForeColor":
{
"red":224,
"green":207,
"blue":226,
"alpha":255
},
"fillGradientOffsetRatioY":0,
"markerWidth":0,
"markerAngle":0,
"fillSymbolID":1,
"lineColor":
{
"red":167,
"green":170,
"blue":164,
"alpha":255
},
"markerSymbolID":0,
"lineWidth":0.1,
"markerHeight":0,
"fillOpaqueRate":100,
"fillBackOpaque":true,
"fillBackColor":
{
"red":255,
"green":255,
"blue":255,
"alpha":255
},
"fillGradientMode":"NONE",
"lineSymbolID":0,
"fillGradientAngle":0
},
"type": "REGION",
"prjCoordSys":null
}
}
]
創建成功的(de)情況下,得到(dào) rjson 格式的(de)操作結果表述如下:
{
"newResourceLocation": "null.rjson",
"postResultType": "CreateChild",
"succeed": true
}
對 URI:http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries/features.rjson 執行 POST 請求,在(zài)請求體中包含如下參數:
[
{
"fieldNames": [
"SMID",
"SMSDRIW",
"SMSDRIN",
"SMSDRIE",
"SMSDRIS",
"SMUSERID",
"SMAREA",
"SMPERIMETER",
"SMGEOMETRYSIZE",
"SQKM",
"SQMI",
"COLOR_MAP",
"CAPITAL",
"COUNTRY",
"POP_1994",
"CONTINENT"
],
"fieldValues": [
"22",
"-7.433472633361816",
"62.35749816894531",
"-6.38972282409668",
"61.388328552246094",
"6",
"0.25430895154659083",
"5.743731026651685",
"4500",
"1474.69",
"569.38",
"5",
"示例首都",
"示例國(guó)家",
"47067.0",
"亞洲"
],
"geometry": {
"id": 22,
"parts": [
3
],
"points": [
{
"x": -40,
"y": 60
},
{
"x": -45,
"y": 62
},
{
"x": -40,
"y": 55
},
{
"x": -40,
"y": 60
}
],
"style": null,
"type": "REGION",
"prjCoordSys":null
}
}
]
創建成功的(de)情況下,得到(dào) rjson 格式的(de)操作結果表述如下:
{
"newResourceID": "1",
"newResourceLocation": "http://supermapiserver:8090/iserver/services/data-world/rest/data/featureResults/1.rjson",
"succeed": true
}
當創建 GeoJSON 格式的(de)幾何對象時(shí),請求體中參數書寫與創建 JSON 格式的(de)幾何對象有所不(bù)同,需要(yào / yāo)添加請求頭 X-RequestEntity-ContentType:application/geojson,相關信息請參考:GeoJSON 請求體參數,下面給出(chū)具體示例。對示例 features 資源執行 POST 請求:http://supermapiserver:8090/iserver/services/data-World/rest/data/datasources/name/World/datasets/name/Countries/features.rjson。在(zài)請求體中包含如下參數:
[
{
"geometry": {
"coordinates": [
[
[
[
10.781665802002,
79.6502685546875
],
[
10.7558326721191,
79.6597137451172
],
[
10.7383308410645,
79.6794281005859
],
[
10.7122192382813,
79.7136077880859
],
[
10.7263870239258,
79.7177581787109
],
[
10.760555267334,
79.7188720703125
],
[
10.8866653442383,
79.7222137451172
],
[
10.9177761077881,
79.7210998535156
],
[
10.945276260376,
79.7191467285156
],
[
10.9819412231445,
79.7119293212891
],
[
11.0349979400635,
79.7008209228516
],
[
11.0716648101807,
79.6727600097656
],
[
11.0761089324951,
79.6627655029297
],
[
10.9527759552002,
79.6527709960938
],
[
10.9227752685547,
79.6510925292969
],
[
10.781665802002,
79.6502685546875
]
]
]
],
"type": "MultiPolygon"
},
"properties": {
"SQKM": "61909.1",
"SMSDRIW": "10.487914",
"SMSDRIS": "74.34305",
"POP_1994": "3148.0",
"SMSDRIN": "80.76416",
"SMID": "1",
"COUNTRY": "",
"CONTINENT": "歐洲1",
"SMAREA": "6.243427603572511E10",
"SMGEOPOSITION": "290488320",
"COLORID": "1",
"SMPERIMETER": "5196430.901327391",
"SQMI": "23903.1",
"SMGEOMETRYSIZE": "35816",
"CAPITAL": "",
"COLOR_MAP": "1",
"SMSDRIE": "33.637497",
"SMUSERID": "0"
},
"type": "Feature"
}
]
創建成功的(de)情況下,得到(dào) rjson 格式的(de)操作結果表述如下:
{
"newResourceID"=669c50d3b25f4ea4a04bbd7a65ec8395_02d0affdd55547dfb5fa2cd5e43cf33e,
"newResourceLocation"=http://localhost:8090/iserver/services/data-World/rest/data/featureResults/669c50d3b25f4ea4a04bbd7a65ec8395_02d0affdd55547dfb5fa2cd5e43cf33e.rjson,
"postResultType=CreateChild,
"succeed": true
}
當數據集爲(wéi / wèi)EPS類型,對features要(yào / yāo)素執行POST請求時(shí),需要(yào / yāo)爲(wéi / wèi)每個(gè)點添加屬性信息,包括"name"和(hé / huò)“type”。例如:對示例 features 資源執行 POST 請求:http://supermapiserver:8090/iserver/services/data-China400/rest/data/datasources/EPS_all/datasets/PointEPS/features.rjson。在(zài)請求體中包含如下參數:
[
{
"ID": 1,
"fieldNames": [
"SMID",
"SMSDRIW",
"SMSDRIN",
"SMSDRIE",
"SMSDRIS",
"SMUSERID",
"SMGEOMETRYSIZE",
"SMGEOPOSITION"
],
"fieldValues": [
"1",
"525.26154",
"460.002",
"525.26154",
"460.002",
"0",
"0",
"0"
],
"geometry": {
"center": null,
"id": 1,
"parts": [1],
"points": [{
"name": "point1",
"type": "None",
"x": 525.261530541407,
"y": 460.00202477444,
"z": 0
}],
"prjCoordSys": null,
"style": null,
"type": "POINTEPS"
}
}
]
注:當創建點要(yào / yāo)素時(shí),可不(bù)填入“type"的(de)值。當創建線要(yào / yāo)素和(hé / huò)面要(yào / yāo)素時(shí),則需要(yào / yāo)填入每個(gè)點的(de)“type”值。詳細請參考:PointEPSType
創建成功的(de)情況下,得到(dào) rjson 格式的(de)操作結果表述如下:
{
"newResourceID": "1",
"newResourceLocation": "http://supermapiserver:8090/iserver/services/data-China400/rest/data/featureResults/1.rjson",
"succeed": true
}
- 修改要(yào / yāo)素
對 URI:http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name//datasets/name/Countries/features.rjson?_method=PUT 執行POST 請求,修改幾何對象,在(zài)請求體中包含如下參數:
[
{
"fieldNames": [
"SMID",
"SMSDRIW",
"SMSDRIN",
"SMSDRIE",
"SMSDRIS",
"SMUSERID",
"SMAREA",
"SMPERIMETER",
"SMGEOMETRYSIZE",
"SQKM",
"SQMI",
"COLOR_MAP",
"CAPITAL",
"COUNTRY",
"POP_1994",
"CONTINENT"
],
"fieldValues": [
"22",
"-7.433472633361816",
"62.35749816894531",
"-6.38972282409668",
"61.388328552246094",
"6",
"0.25430895154659083",
"5.743731026651685",
"4500",
"1474.69",
"569.38",
"5",
"示例首都",
"示例國(guó)家",
"47067.0",
"歐洲"
],
"geometry": {
"id": 22,
"parts": [
3
],
"points": [
{
"x": -40,
"y": 60
},
{
"x": -45,
"y": 70
},
{
"x": -40,
"y": 55
},
{
"x": -40,
"y": 60
}
],
"style": null,
"type": "REGION",
"prjCoordSys":null
}
}
]
修改成功的(de)情況下,得到(dào) rjson 格式的(de)操作結果表述如下:
{"succeed": true}
對于(yú)EPS類型的(de)數據集,也(yě)可通過PUT請求修改幾何對象。對URI:http://supermapiserver:8090/iserver/services/data-China400/rest/data/datasources/EPS_all/datasets/PointEPS/features.rjson?_method=PUT。在(zài)請求體中包含如下參數:
[
{
"ID": 1,
"fieldNames": [
"SMID",
"SMSDRIW",
"SMSDRIN",
"SMSDRIE",
"SMSDRIS",
"SMUSERID",
"SMGEOMETRYSIZE",
"SMGEOPOSITION"
],
"fieldValues": [
"1",
"525.26154",
"460.002",
"525.26154",
"460.002",
"0",
"0",
"0"
],
"geometry": {
"center": null,
"id": 1,
"parts": [1],
"points": [{
"name": "point1",
"type": "None",
"x": 515.261530541407,
"y": 436.00202477444,
"z": 0
}],
"prjCoordSys": null,
"style": null,
"type": "POINTEPS"
}
}
]
修改成功的(de)情況下,得到(dào) rjson 格式的(de)操作結果表述如下:
{"succeed": true}
- 通過ID數組删除要(yào / yāo)素
對 URI:http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries/features.rjson?_method=DELETE &deleteMode=IDS執行 POST 請求,在(zài)請求體中包含如下參數,删除 ID 爲(wéi / wèi)51、52的(de)參數:
[51,52]
删除成功,返回 rjson 格式的(de)操作結果表述如下:
{"succeed": true}
此時(shí),對 ID 爲(wéi / wèi)51或52的(de) feature 資源執行 GET 請求(參見 feature 資源),可以(yǐ)發現 ID 爲(wéi / wèi)51和(hé / huò)52的(de) feature 資源都已經不(bù)存在(zài)。
- 通過 SQL 查詢條件删除要(yào / yāo)素
對 URI:http://supermapiserver:8090/iserver/services/data-world/rest/data/datasources/name/World/datasets/name/Countries/features.rjson?_method=DELETE &deleteMode=SQL執行 POST 請求,在(zài)請求體中包含如下參數,删除 SmID<10 的(de)參數:
{"attributeFilter":"SmID %26lt; 10"}
删除成功,得到(dào) rjson 格式的(de)操作結果表述如下:
{"succeed": true}
- 通過 SQL 查詢條件删除Elasticsearch數據要(yào / yāo)素
對 URI:http://supermapiserver:8090/iserver/services/data-es/rest/data/datasources/name/location/datasets/supermap/features.json?_method=DELETE&deleteMode=SQL執行 POST 請求,在(zài)請求體中包含如下參數,删除 MAPTN = G4805200620 的(de)參數:
{"attributeFilter":"MAPTN = G4805200620"}
删除成功,得到(dào) rjson 格式的(de)操作結果表述如下:
{"succeed": true}
HEAD 請求
返回跟 GET 請求一(yī / yì /yí)樣的(de) HTTP 響應頭,但是(shì)沒有響應實體。可以(yǐ)在(zài)不(bù)必傳輸整個(gè)響應内容的(de)情況下,獲取包含在(zài)響應消息頭中的(de)元數據信息。元數據信息包括媒體類型,字符編碼,壓縮編碼,實體内容長度等。
HEAD 請求可以(yǐ)用來(lái)判斷 features 資源是(shì)否存在(zài),或者客戶端是(shì)否有權限訪問 features 資源。通過對加.<format>的(de) URI 執行 HEAD 請求,還可以(yǐ)快速判斷 features 資源是(shì)否支持<format>格式的(de)表述。