找到超图地图服务的服务列表,找到服务接口类型为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条件查询
- 请求地址:http://192.168.0.184:18082/iserver/services/data-hydro/wfs100/utf-8,这里我们使用地图数据服务下的WFS服务
- 查询要素请求如下:
请求体内容
<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 | 要素对应的几何对象。 暂不支持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进行查看
删除操作
使用DELETE方法
请求参数如下:
名称 | 类型 | 含义 |
IDs | int[] | 以ID 数组方式删除要素时,需传入要素的 ID 数组。 对于字符串和数值类型的数据,是否加引号均可。 |
attributeFilter | String | 以SQL条件方式删除要素时,需传入 SQL查询条件。 对于Elasticsearch数据,当字段值包含大写时,查询条件不加引号。例如:MAPTN = G12 对于Elasticsearch数据,查询条件暂不支持区分大小写。 |
修改操作
修改我还没试过,敬请期待.................