图层相关
# 图层对象显示elementCount有43条,通过simpleQuery接口查询不到

# 回答
elementCount 这个是通过异步消息进行更新到图层表里面的,由于现在各个现场的部署环境不一致的问题,会导致有时候消息没有被消费, 对于这种仅供参考,不要求强一致性的数据,我们就没有进行消息重试.故这个字段表示的要素条数大部分情况下是准确的,一切以查询得到的结果为准. 如果查询查不到,但是根据现场反馈,图层对应的实体表里面有数据,那这就是系统缺陷,提交反馈给我们,马上就改.
# 想实现类似于poi搜索的范围查询的功能
# 回答
poi搜索我们可以把他拆分为
1 文本搜索
2 范围限制
可以通过
layerGroupSimpleQuery
simpleQuery
groupSimpleQueryByTableIds
simpleQueryCountByBizId
advancedQuery
这三个接口实现.
# layerGroupSimpleQuery,simpleQuery,groupSimpleQueryByTableIds ,advancedQuery这四个接口有什么区别
# 回答
| 接口名称 | 文本搜索 | 范围搜索 | 多图层搜索 | 备注 |
|---|---|---|---|---|
| layerGroupSimpleQuery | 支持 | 不支持 | 支持 | 从图层组中获取所有所有图层进行搜索,不支持指定图层 |
| simpleQuery | 支持 | 支持 | 不支持 | |
| groupSimpleQueryByTableIds | 支持 | 支持 | 支持 | 可以手动指定图层进行搜索,通过tableId参数指定 |
| simpleQueryCountByBizId | 支持 | 支持 | 支持 | 通过专题Id参数指定,暂时不支持指定图层,,结果中只返回count,不返回具体结果 |
| advancedQuery | 支持 | 支持 | 不支持 | 需要手动进行拼接查询条件进行搜索 |
# advancedQuery 怎么分页?
在系统中,所有接口的分页参数统一为通过 Param 传参
例如
http://devs.gishub.com.cn:9196/XXXX/XXXX?page=3&limit=15
page: 页码 默认从1开始 limit:每页数量,默认25条
# 分词查询的含义
# 回答
分词查询就是把查询字符串进行分词之后在进行模糊搜索,例如:
当 queryStr 为 开发者中心 的时候 , 通过IK分词器的得到的查询字符串为: "开发者", "中心","开发者中心"
如果 tokenizerIs 设置为 true 那么 语义化sql为
select * from "table_name" where field like ''%开发者%' or field like ''%中心%' or field like ''%开发者中心%'
如果 tokenizerIs 设置为 false 那么 语义化sql为
select * from "table_name" where field like ''%开发者中心%'
# 面图层的点标注
当一个面图层加载到地图上面的时候,我只能够在地图上面看到面,但是看不到这个面的具体的名字.这里需要展示名字该怎么办.
# 回答
两个办法
A办法:
1 首先你需要读取到pbf里面的要素信息. 类似于geojson里面的features
2 通过图层信息的响应示例描述获取到简表字段的名称simpleShowField
3 获取当前面图形的质心,把该点展示在质心上面.
B办法:
1 首先你需要读取到pbf里面的要素信息. 类似于geojson里面的features
2 通过图层信息的响应示例描述获取到简表字段的名称simpleShowField
3 通过图层信息的响应示例描述获取到标签图层的layerIdtagLayerId
4 自己通过标签图层的layerId组装请求url(请求url格式为 /sys/geom/rest/XXXXX/{z}/{x}/{y},中间XXXXX的内容是tableId)
# layerId,tableId的关系
# 回答
在同一个图层中, layerId与tableId也就是前缀不一样. 例如当图层的layerId为 l_110114113XXXX的时候,他的tableId就是 t_110114113XXXX
# 高级查询查询条件可选值
# 排序条件 condition
| 代码 | 中文 | 可用字段类型 | v1传参示例 | v2传参示例 | 备注 |
|---|---|---|---|---|---|
| 402 | 升序 | 文本与数值类型 | {"fieldName": "七级","condition": "401"} | {"fieldName": "七级","condition": "升序"} | ASC |
| 401 | 降序 | 文本与数值类型 | {"fieldName": "七级","condition": "401"} | {"fieldName": "七级","condition": "降序"} | DESC |
# 查询组拼接条件 andOr
| 代码 | 释义 | v1传参示例 | v2传参示例 | 备注 |
|---|---|---|---|---|
| 201 | AND | "andOr": "201" | "andOr": "and" | |
| 202 | OR | "andOr": "202" | "andOr": "or" |
# 查询过滤条件 operator
大于
代码: 101
中文: 大于
可用值类型: 数值类型
v1示例:
{ "andor": "201", "condition": "1", "field": "名称", "operator": "101" }- v2示例:
{ "andOr": "and", "value": "1", "fieldName": "名称", "operator": "大于" }- 备注:
- 类似于sql中的 > 条件,故过滤的条件必须是数值类型
小于
代码: 102
中文: 小于
可用值类型: 数值类型
v1示例:
{ "andor": "201", "condition": "1", "field": "名称", "operator": "102" }- v2示例:
{ "andOr": "and", "value": "1", "fieldName": "名称", "operator": "小于" }- 备注:
- 类似于sql中的 < 条件,故过滤的条件必须是数值类型
等于
代码: 103
中文: 等于
可用值类型: 数值类型或者字符串类型
v1示例:
{ "andor": "201", "condition": "1", "field": "名称", "operator": "103" }- v2示例:
{ "andOr": "and", "value": "1", "fieldName": "名称", "operator": "等于" }- 备注:
- 类似于sql中的 = 条件
不等于
代码: 104
中文: 不等于
可用值类型: 数值类型或者字符串类型
v1示例:
{ "andor": "201", "condition": "1", "field": "名称", "operator": "104" }- v2示例:
{ "andOr": "and", "value": "1", "fieldName": "名称", "operator": "不等于" }- 备注:
- 类似于sql中的 != 条件
大于等于
代码: 105
中文: 大于等于
可用值类型: 数值类型
v1示例:
{ "andor": "201", "condition": "1", "field": "名称", "operator": "105" }- v2示例:
{ "andOr": "and", "value": "1", "fieldName": "名称", "operator": "大于等于" }- 备注:
- 类似于sql中的 >= 条件,故过滤的条件必须是数值类型
小于等于
代码: 106
中文: 小于等于
可用值类型: 数值类型
v1示例:
{ "andor": "201", "condition": "1", "field": "名称", "operator": "106" }- v2示例:
{ "andOr": "and", "value": "1", "fieldName": "名称", "operator": "小于等于" }- 备注:
- 类似于sql中的 <= 条件,故过滤的条件必须是数值类型
BETWEEN
代码: 601
中文: 范围查询
可用值类型: 时间类型
v1示例:
{ "andor": "201", "condition": "2025-01-03 16:00:00|2025-01-06 16:00:00", "field": "时间", "operator": "601" }- v2示例:
{ "andOr": "and", "value": "2025-01-03 16:00:00|2025-01-06 16:00:00", "fieldName": "时间", "operator": "BETWEEN" }- 备注:
- 类似于sql中的 BETWEEN 条件
- BETWEEN 查询需要由两个时间组成 中间使用 | 符号进行分隔, 示例:2025-01-03 16:00:00|2025-01-06 16:00:00
- 类似于sql中的 BETWEEN 条件
IN
代码: 302
中文: 用给定的可选值进行过滤
可用值类型: 数值类型,字符串类型
v1示例:
{ "andor": "201", "condition": "1", "field": "名称", "operator": "102" }- v2示例:
{ "andOr": "and", "value": "1,2,3,4,5,6", "fieldName": "id", "operator": "IN" }- 备注:
- 类似于sql中的 IN 条件
- 时间类型,空间类型不支持IN查询
- 中间使用英文逗号进行分隔
为空
代码: 305
中文: 为空判断
可用值类型: 任何类型
v1示例:
{ "andor": "201", "condition": "is null", "field": "名称", "operator": "305" }- v2示例:
{ "andOr": "and", "value": "is null", "fieldName": "名称", "operator": "为空" }- 备注:
- 类似于sql中的 is null 条件
不为空
代码: 306
中文: 判断不为空
可用值类型: 任何类型
v1示例:
{ "andor": "201", "condition": "is not null", "field": "名称", "operator": "306" }- v2示例:
{ "andOr": "and", "value": "is not null", "fieldName": "名称", "operator": "不为空" }- 备注:
- 类似于sql中的 is not null 条件
左模糊匹配
代码: 401
中文: 模糊匹配
可用值类型: 字符串类型
v1示例:
{ "andor": "201", "condition": "徐坤", "field": "名称", "operator": "401" }- v2示例:
{ "andOr": "and", "value": "徐坤", "fieldName": "名称", "operator": "小于" }- 备注:
- 类似于sql中的 %content 条件
右模糊匹配
代码: 402
中文: 右模糊匹配
可用值类型: 文本类型
v1示例:
{ "andor": "201", "condition": "蔡", "field": "名称", "operator": "402" }- v2示例:
{ "andOr": "and", "value": "蔡", "fieldName": "名称", "operator": "右模糊匹配" }- 备注:
- 类似于sql中的 content% 条件
全模糊匹配
代码: 403
中文: 全模糊匹配
可用值类型: 文本类型
v1示例:
{ "andor": "201", "condition": "徐", "field": "名称", "operator": "403" }- v2示例:
{ "andOr": "and", "value": "徐", "fieldName": "名称", "operator": "全模糊匹配" }- 备注:
- 类似于sql中的 like %content% 条件
(空间字段操作)包含
代码: 501
中文: 包含查询
可用值类型: 空间类型
v1示例:
{ "andor": "201", "condition": "POLYGON((87.676085 44.185638,87.676085 44.185652,87.676103 44.185652,87.676103 44.185638,87.676085 44.185638))", "field": "the_geom", "operator": "501" }- v2示例:
{ "andOr": "and", "value": "POLYGON((87.676085 44.185638,87.676085 44.185652,87.676103 44.185652,87.676103 44.185638,87.676085 44.185638))", "fieldName": "名称", "operator": "包含" }- 备注:
- 类似于sql中的 st_contains( the_geom ,??) 条件
- 传入wkt形式的字符串,只接受WKT面
(空间字段操作)缓冲
代码: 502
中文: 缓冲查询
可用值类型: 空间类型
v1示例:
{ "andor": "201", "condition": "POINT(84.37 43.3)|0.5", "field": "the_geom", "operator": "502" }- v2示例:
{ "andOr": "and", "value": "POINT(84.37 43.3)|0.5", "fieldName": "名称", "operator": "缓冲" }- 备注:
- 类似于sql中的 st_contains( the_geom ,st_buffer( [WKT],[buffer] ) ) 条件
- 缓冲查询的的查询条件格式为{wkt}|{ buffer} 示例 POINT(84.37 43.3)|0.5
- wkt可以接受点线面任何类型。处理流程就是把你给的空间形状进行一次缓冲分析得到一个缓冲面,再到目标图层的空间要素中求包含