上一篇文章中https://cloud.tencent.com/developer/article/2476406,我介绍了如何利用GeoWave导入数据到HBase/Accumulo数据库中,本文,我将介绍如何使用GeoWave实现简单的时空范围查询。
HBaseRequiredOptions hBaseRequiredOptions = new HBaseRequiredOptions();
hBaseRequiredOptions.setZookeeper("localhost:2181");
HBaseDataStore hBaseDataStore = (HBaseDataStore) DataStoreFactory.createDataStore(hBaseRequiredOptions);
System.out.println("connect hbase success!");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Date startTime = sdf.parse("2013-01-01T12:10:01");
Date endTime = sdf.parse("2013-01-31T12:11:01");
// 使用 format()方法格式化时间
String startTimeFormatted = sdf.format(startTime);
String endTimeFormatted = sdf.format(endTime);
Long startTimeStamp = System.currentTimeMillis();
VectorQueryBuilder queryBuilder = VectorQueryBuilder.newBuilder();
queryBuilder.indexName("track_point_idx");
queryBuilder.addTypeName("track_point");
VectorQueryConstraintsFactory vectorQueryConstraintsFactory = queryBuilder.constraintsFactory();
Query<SimpleFeature> queryOptions = queryBuilder.constraints(vectorQueryConstraintsFactory.
cqlConstraints("BBOX(the_geom, 111.6, 21.31, 111.7, 21.41) " +
" and " + "( timestamp >= " + startTimeFormatted + " and timestamp <= " + endTimeFormatted + ")")).build();
List<SimpleFeature> simpleFeatures = new ArrayList<>();
try (final CloseableIterator<SimpleFeature> iterator =
hBaseDataStore.query(queryOptions)) {
while (iterator.hasNext()) {
SimpleFeature feature = iterator.next();
simpleFeatures.add(feature);
}
System.out.println("size:" + simpleFeatures.size());
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。