supermap超图数据服务的增删改查(学习笔记)

找到超图地图服务的服务列表,找到服务接口类型为REST服务的数据服务:

依次点击进入到http://192.168.0.184:18082/iserver/services/data-hydro/rest/data/datasources/mapdata/datasets,可以看到数据集,在 SuperMap 的数据模型中,数据集(Dataset)是存储地理空间数据的容器。

我们对其中的数据集可以进行查询,对数据集中的要素features可以进行添加,修改和删除操作,比如有一个数据集叫做bubo,它里面就是公示牌的数据

我们继续点击bubo进入到数据集中,我们主要关注数据集的要素(features),它是地理空间数据的基本单元,它们具有地理位置和属性信息。

进入到features后,我们可以看到这个数据集包含的要素信息,比如数量,列表:

接下来,我们通过http请求,向超图的这个数据服务发起查询等,看得到的数据是怎么样的,就和我们发送请求到后端接口,获取列表数据等行为一样的;

详见官方文档:SuperMapiServer11i(2023)

具体操作:

查询操作

1.GET查询
  • 请求地址:<dataset_uri>/features[.<format>],即数据集的地址加上我们希望返回的格式,
  • 查询要素请求如下:

默认返回20个要素,可以通过路径参数指定返回多少个

2.POST条件查询

  • 查询要素请求如下:

请求体内容

  <WFS:GetFeature service="WFS" version="1.0.0" outputFormat="GML2" xmlns:WFS="http://www.opengis.net/WFS" xmlns:数据源列表名称="http://www.supermap.com/${dataSourceName}"  xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://www.opengis.net/WFS http://schemas.opengis.net/WFS/1.0.0/WFS-basic.xsd">
    <WFS:Query typeName="数据源列表名称:图层名称">
        <ogc:Filter>
            <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>字段名称</ogc:PropertyName>
                <ogc:Literal>字段值</ogc:Literal>
            </ogc:PropertyIsEqualTo>
        </ogc:Filter>
    </WFS:Query>
</WFS:GetFeature>

查询成功

添加操作;

    • 使用post方法,另外post方法也可以删除和修改要素,稍候说明;
    • 请求路径参数有三个:

名称

类型

含义

isUseBatch

boolean

【可选参数】

是否使用批量添加要素功能,要素添加时有效。

批量添加能够提高要素编辑效率。

true 表示批量添加;false 表示不使用批量添加。默认不传时为 false。

returnContent

boolean

【可选参数】

要素添加时,isUseBatch 不传或传为 false 的情况下有效。

true 表示直接返回新创建的要素的 ID 数组;false 表示返回创建的 featureResult 资源的 URI。默认不传时为 false。

_method

String

POST 请求应实现的功能。 可能的值有:GET、PUT、POST、DELETE、HEAD,分别表示实现对应 HTTP 请求的功能。

这里,_method 可取 DELETE 或 PUT,分别表示删除要素或修改要素。

  • 可见添加操作_method为POST或者不写;
  • 请求体内容如下:

名称

类型

含义

fieldNames

String[]

要素的属性字段名集合。其中,系统字段是创建数据集和要素时系统默认生成的字段,用户不能进行编辑,字段内容除了 SMUSERID 外都是不能修改的,关于不同数据集系统字段的介绍,请参考fields资源。

fieldValues

String[]

要素的属性字段值集合。

geometry

Geometry

要素对应的几何对象。

暂不支持Elasticsearch数据源中既有Geo_Point类型,又有Geo_Shape类型的数据。

注意:SuperMap 的数据集属性表中的属性字段分为系统字段和非系统字段。系统字段是用户创建一个新的数据集时默认生成的字段,字段本身不能进行编辑,字段内容除了 SMUSERID 外都是不允许用户编辑的。非系统字段即用户创建的字段,用户可以编辑字段和字段的内容。不同类型数据集的系统字段不完全相同,但所有的系统字段都以英文字母“SM”开头

看一下我们公示牌的fields:

现在我们构造一个请求体:

[
 {
 'fieldNames':["editType","ID","NAME"],
 'fieldValues':["add","10087","第10087块公示牌"],
 'geometry':{'id':0,'style':null,'parts':[1],'points':[{'id':"SuperMap.Geometry_4",'bounds':null,'SRID':null,'x':113.31199398897098,'y':28.473942228284635,'tag':null,'type':"Point",'geometryType':"Point"}],'type':"POINT",'prjCoordSys':{'epsgCode':null}}
 }
]

这里由于我请求的时候设置了returnContent=true,那么请求成功则会返回一个id

returnContent=false时则返回创建的要素资源的URL,如下图

添加成功可以通过要素的URL加刚刚创建成功返回的ID进行查看

删除操作

请求地址:http://192.168.0.184:18082/iserver/services/data-hydro/rest/data/datasources/mapdata/datasets/bubo/features.json

使用DELETE方法

请求参数如下:

名称

类型

含义

IDs

int[]

以ID 数组方式删除要素时,需传入要素的 ID 数组。

对于字符串和数值类型的数据,是否加引号均可。

attributeFilter

String

以SQL条件方式删除要素时,需传入 SQL查询条件。

对于Elasticsearch数据,当字段值包含大写时,查询条件不加引号。例如:MAPTN = G12

对于Elasticsearch数据,查询条件暂不支持区分大小写。

修改操作

修改我还没试过,敬请期待.................

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值