Geomesa:如何获得最后一个地理点以及如何在 bbox 中获得独特的属性?

Geomesa: how to get last geopoint and how to get unique attributes within bbox?

我有带 geomesa 的 cassandra,我有下一个模式

 ~  bin/geomesa-cassandra_2.11-3.3.0/bin/geomesa-cassandra describe-schema -P localhost:9042 -u cassandra -p cassandra -k geomesa -c gsm_events -f SignalBuilder 
INFO  Describing attributes of feature 'SignalBuilder'
geo           | Point   (Spatio-temporally indexed)
time          | Date    (Spatio-temporally indexed) (Attribute indexed)
cam           | String  (Attribute indexed) (Attribute indexed)
imei          | String  (Attribute indexed)
dir           | Double  
alt           | Double  
vlc           | Double  
sl            | Integer 
ds            | Integer 
dir_y         | Double  
poi_azimuth_x | Double  
poi_azimuth_y | Double  

User data:
  geomesa.attr.splits     | 4
  geomesa.feature.expiry  | time(30 days)
  geomesa.index.dtg       | time
  geomesa.indices         | z3:7:3:geo:time,attr:8:3:time,attr:8:3:cam,attr:8:3:cam:time,attr:8:3:imei
  geomesa.stats.enable    | true
  geomesa.table.partition | time
  geomesa.z.splits        | 4
  geomesa.z3.interval     | week

有没有办法在bbox中通过cam获取最后一个坐标? 以及如何在 bbox 中获取所有独特的摄像头(我使用字符串 UUID 作为 camId)?

现在我正在阅读 bbox 中的所有内容,然后以编程方式计算最后的坐标和独特的凸轮,

对于最后一个事件,我将 GeoEvents 放在 map 和 TimeComparator

我接下来要做的独特的摄像头:

Set<String> result = new HashSet<>(10);
for (Query query: qs) {
  try (FeatureReader<SimpleFeatureType, SimpleFeature> reader = 
dataStore.getFeatureReader(query, Transaction.AUTO_COMMIT)) {
    while (reader.hasNext()) {
      result.add((String)reader.next().getAttribute("cam"));
    }
  }
}

您可以使用 GeoMesa stats API 来完成其中的一些操作。您可以使用 enumeration 统计数据获取所有唯一值,并且可以使用 min/max 统计数据获取“最后”值。

统计信息 API 不会带回整个功能,因此如果您需要,您需要进行二次查找或简单地迭代结果。

但是,由于 Cassandra 没有任何服务器端处理,因此使用统计数据 API 不会比您当前的客户端处理提供更多优势。