GeoMesa(4)

查询配置

一、设置查询提示

查询提示可以通过两种方式设置——编程方式或通过GeoServer请求。

1.编程方式

import org.geotools.data.Query;

Query query = new Query("typeName");
query.getHints().put(key, value);

2.GeoServer请求

通过修改URL中的查询参数(viewparams )

...&viewparams=key1:value1;key2:value2;

3.命令行工具
当通过GeoMesa命令行工具导出features时,可以使用–hint参数设置查询提示。值为key1=value1;key2=value2。

二、宽松边界

默认情况下,GeoMesa对主边界框查询使用一个不太精确的过滤器。这更快,并且在大多数情况下不会更改返回的结果。然而,某些用例需要一个精确的结果。这可以在数据存储配置级别设置,也可以在每个查询中重写。

需要将QueryHints.LOOSE_BBOX设置为true或false

import org.locationtech.geomesa.index.conf.QueryHints

query.getHints.put(QueryHints.LOOSE_BBOX, false)

三、精确数量

默认情况下,GeoMesa使用计数的估计值。需要通过geomesa.force来获取精确数值。但精确的计数计算更加复杂。
通过将QueryHints.EXACT_COUNT设置为true或false

import org.locationtech.geomesa.index.conf.QueryHints

query.getHints.put(QueryHints.EXACT_COUNT, true)

四、查询索引

GeoMesa可以使用几个不同的索引来满足特定的查询。例如,带有空间过滤器和属性过滤器的查询可能使用主空间索引或属性索引。GeoMesa使用基于成本的查询规划来选择最佳索引,也可以自己重写。

需要将QueryHints.QUERY_INDEX设置为index name或者name:version

import org.locationtech.geomesa.accumulo.index.z2.Z2Index
import org.locationtech.geomesa.index.conf.QueryHints

query.getHints.put(QueryHints.QUERY_INDEX, Z2Index)

过滤器函数

1.currentDate
以java.util.Date的形式返回当前日期。

2.dateToLong
将java.util.Date类型的日期转换为Long类型的毫秒值

3.jsonPath

4.proxyId
将当前featureId转换为Int。这可以用于最小化数据大小,同时提供一个惟一的查找机制。特别是,当使用 Arrow编码返回数据时,可以将featureId设置为4个字节。当检索完整的feature时,时空值可用于提供快速查找,代理ID可用于消除歧义。

5.visibility

根据feature的可见性标记判断当前用户的授权。接受一个可选参数来指定包含可见性标记的feature属性,否则将使用默认的用户数据位置。

猜你喜欢

转载自blog.csdn.net/qq_21705851/article/details/92667997