通过REST API对数据服务进行要素的增、删、改

作者:kxj

前言

    SuperMap iServer使用工作空间发布数据服务之后,可以通过对 features 资源执行 GET 请求获取数据集中的要素列表,当数据集为点、线、面数据集、文本数据集、复合数据集或纯属性表数据集时,对 features 资源执行 POST 请求可以完成对数据集中的要素进行添加、删除或修改。接下来具体介绍一下如何对数据服务进行要素的添加、删除和修改。(本文以SuperMap iServer 11i(2023) SP1为例)

一、设置数据服务可编辑

1.在iServer服务管理页面找到对应数据服务,点击进入
在这里插入图片描述

  1. 在基本信息页面开启【是否启用编辑】
    在这里插入图片描述

二、接口介绍

2.1 请求参数

    features 资源表示的是数据集中的要素集合。对 features 资源执行 POST 请求默认是在创建新的要素。但可以在 features 资源的 URI 中包含如下参数来控制 POST 请求的预期是删除要素还是修改要素。
注:三维模型数据集不支持创建要素。
URI 中的参数如下:

名称类型含义
isUseBatchboolean【可选参数】 是否使用批量添加要素功能,要素添加时有效。 批量添加能够提高要素编辑效率。true 表示批量添加;false 表示不使用批量添加。默认不传时为 false。
returnContentboolean【可选参数】 要素添加时,isUseBatch 不传或传为 false 的情况下有效。 true 表示直接返回新创建的要素的 ID 数组;false 表示返回创建的 featureResult 资源的 URI。默认不传时为 false。
_methodStringPOST 请求应实现的功能。 可能的值有:GET、PUT、POST、DELETE、HEAD,分别表示实现对应 HTTP 请求的功能。这里,_method 可取 DELETE 或 PUT,分别表示删除要素或修改要素。

对 features 资源执行 POST 请求,对要素进行添加(无 _method 参数)或修改(_method=PUT)时,需要在请求体中包含添加/修改的要素信息集合,其中单个要素信息的结构如下:

名称类型含义
fieldNamesString[]要素的属性字段名集合。其中,系统字段是创建数据集和要素时系统默认生成的字段,用户不能进行编辑,字段内容除了 SMUSERID 外都是不能修改的。
fieldValuesString[]要素的属性字段值集合。
geometryGeometry要素对应的几何对象。暂不支持Elasticsearch数据源中既有Geo_Point类型,又有Geo_Shape类型的数据。

对要素进行删除时(_method=DELETE),需要在请求体中包含欲删除要素的 ID 数组或SQL查询条件,这时,请求体结构如下:

名称类型含义
IDsint[]以ID 数组方式删除要素时,需传入要素的 ID 数组。 对于字符串和数值类型的数据,是否加引号均可。
attributeFilterString以SQL条件方式删除要素时,需传入 SQL查询条件。对于Elasticsearch数据,当字段值包含大写时,查询条件不加引号。例如:MAPTN = G12 ;对于Elasticsearch数据,查询条件暂不支持区分大小写。

2.2 响应结构

对 features 资源执行 POST 请求,对要素集中的要素进行添加、修改或删除,返回操作结果的表述结构如下:

字段类型说明
succeedboolean操作是否成功。
newResourceIDString创建的 featureResult 资源的 ID。
newResourceLocationString创建的 featureResult 资源的 URI。isUseBatch为 true 时无效。
errorHttpError出错信息,如果操作成功,则没有本字段。

三、请求示例

请求示例均以示例服务World的Countries数据集为例

3.1删除要素

3.1.1 通过ID数组删除要素

对 URI:http://ip:端口号/iserver/services/data-World/rest/data/datasources/World/datasets/Countries/features.rjson?_method=DELETE&deleteMode=IDS执行 POST 请求,在请求体中包含如下参数,删除 ID 为1、2的参数:

[1,2]

删除成功,返回 rjson 格式的操作结果表述如下:

{"succeed": true}

在这里插入图片描述

3.1.2通过 SQL 查询条件删除要素

对 URI:http://ip:端口号/iserver/services/data-World/rest/data/datasources/World/datasets/Countries/features.rjson?_method=DELETE&deleteMode=SQL执行 POST 请求,在请求体中包含如下参数,删除 SmID<10 的参数:

{"attributeFilter":"SmID < 10"}

删除成功,得到 rjson 格式的操作结果表述如下:

{"succeed": true}

在这里插入图片描述

3.2添加要素

3.2.1添加JSON格式的几何对象

对 URI:http://ip:端口号/iserver/services/data-World/rest/data/datasources/World/datasets/Countries/features.rjson 执行 POST 请求,在请求体中包含如下参数:

[

    {

        "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",

            "示例首都",

            "示例国家",

            "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

        }

    }

]

创建成功的情况下,得到 rjson 格式的操作结果表述如下:

{
    "postResultType": "CreateChild",
    "newResourceID": "9df3b263e93140a4ad55483e1f8f796e_2cf958dc059843a89225e499dcf150cf",
    "succeed": true,
    "newResourceLocation": "http://localhost:8091/iserver/services/data-World/rest/data/featureResults/9df3b263e93140a4ad55483e1f8f796e_2cf958dc059843a89225e499dcf150cf.rjson"
}

在这里插入图片描述

3.2.2添加GeoJSON格式的几何对象

对示例 features 资源执行 POST 请求:http://ip:端口号/iserver/services/data-World/rest/data/datasources/World/datasets/Countries/features.rjson。需要添加请求头:X-RequestEntity-ContentType 为 application/geojson,在请求体中包含如下参数:

[

        {

            "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"

        }

    ]

创建成功的情况下,得到 rjson 格式的操作结果表述如下:

{
    "postResultType": "CreateChild",
    "newResourceID": "9df3b263e93140a4ad55483e1f8f796e_62c9f50b14864e479436a519ffa14d98",
    "succeed": true,
    "newResourceLocation": "http://localhost:8091/iserver/services/data-World/rest/data/featureResults/9df3b263e93140a4ad55483e1f8f796e_62c9f50b14864e479436a519ffa14d98.rjson"
}

在这里插入图片描述

3.3修改要素

对 URI:http://ip:端口号/iserver/services/data-World/rest/data/datasources/World/datasets/Countries/features.rjson?_method=PUT 执行POST 请求,修改几何对象,在请求体中包含如下参数:

  [

    {

        "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",

            "示例首都",

            "示例国家",

            "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

        }

    }

]

修改成功的情况下,得到 rjson 格式的操作结果表述如下:

{"succeed": true}

在这里插入图片描述

  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
ArcGIS REST API是Esri公司提供的一种基于HTTP/HTTPS协议的Web API,用于访问和管理ArcGIS Server和ArcGIS Online等GIS服务和资源。ArcGIS REST API支持多种编程语言和平台,例如Java、Python、JavaScript、.NET、iOS和Android等。以下是ArcGIS REST API的一些主要特点和功能: 1. 支持多种HTTP操作:ArcGIS REST API支持多种HTTP操作,例如GET、POST、PUT和DELETE等,可以用于从GIS服务中获取或修数据。 2. 支持多种数据格式:ArcGIS REST API支持多种数据格式,包括JSON、XML、HTML和二进制等,可以根据需要选择合适的数据格式。 3. 支持多种GIS服务和资源:ArcGIS REST API支持多种GIS服务和资源,例如地图服务、要素服务、空间分析服务、地理编码服务、地理处理服务、Web地图和Web应用程序等。 4. 支持数据查询和过滤:ArcGIS REST API支持对GIS服务中的数据进行查询和过滤,可以根据要求返回符合条件的数据。 5. 支持安全认证和授权:ArcGIS REST API支持多种安全认证和授权方式,例如基本认证、令牌认证和OAuth2.0认证等,可以保证GIS服务和资源的安全性和可靠性。 6. 支持跨域访问:ArcGIS REST API支持跨域访问,可以在不同的域名和网站之间进行数据交互和共享。 7. 支持自定义扩展:ArcGIS REST API支持自定义扩展,可以根据需要扩展和定制GIS服务和资源的功能和特性。 总之,ArcGIS REST API是Esri公司提供的一种基于HTTP/HTTPS协议的Web API,用于访问和管理ArcGIS Server和ArcGIS Online等GIS服务和资源,具有多种特点和功能,可以满足不同用户的需求和要求。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值