基于Geomesa服务查询轨迹数据无法根据空间和时间范围进行结果查询
一、Geomesa - QuickStart(教程工程包)
百度网盘下载地址:geomesa-tutorials-master.7z
二、解压后,IDEA编译如下
百度网盘下载地址:IDEA2018破解版安装

三、根据日期范围查询
@Test
public void query() throws Exception { TDriveData data = new TDriveData("taxi_gps",null);
String configXML = ResourceUtils.getFile("classpath:templates/hbase-bt.xml").getAbsolutePath();
Map<String, String> params = new HashMap<>();
params.put("hbase.catalog", "test_osm");
params.put("hbase.remote.filtering", "false");
params.put("hbase.config.paths", configXML);
HBaseDataStore dataStore = new HBaseDataStore(params, data, "");
dataStore.query();
}
public void query() throws CQLException {
// String dateField = "dtg";
// String tStart = "2007-02-08T00:00:00+00:00";
// String tEnd = "2007-12-31T00:00:00+00:00";
String cqlDates = "dtg during 2008-02-02T13:30:48.000Z/2008-02-02T13:30:52.000Z";
// String cqlBbox = "BBOX(geom,
// 121.358980,31.177850,121.358988,31.177855)";
Filter filter = ECQL.toFilter(cqlDates);
// Filter filter = ECQL.toFilter("taxiId = 1288");
Query query = new Query(data.getTypeName(), filter);
System.err.println("Running query " + ECQL.toCQL(query.getFilter()));
if (query.getPropertyNames() != null) {
System.err.println("Returning attributes " + Arrays.asList(query.getPropertyNames()));
}
int n = 0;
try (FeatureReader<SimpleFeatureType, SimpleFeature> reader = dataStore.getFeatureReader(query,
Transaction.AUTO_COMMIT)) {
while (reader.hasNext()) {
SimpleFeature feature = reader.next();
if (n++ < 10) {
// use geotools data utilities to get a printable string
System.err.println(String.format("%02d", n) + " " + DataUtilities.encodeFeature(feature));
} else if (n == 10) {
System.out.println("...");
}
}
System.err.println("done");
} catch (Exception e) {
System.err.println(e.getClass() + "," + e.getMessage());
}
}
正常情况下,是显示不出来结果的,但是官网的例子却可以,如下:

如果自己写的Java客户端代码,利用Geomesa服务提供的filter根据空间范围BBox和时间范围进行During查不到结果的话,别慌好吧,请看官网是怎么说的:

注意这句话:GeoMesa uses an HBase custom filter to improve processing of CQL queries
翻译一下大概是:GeoMesa使用HBase自定义过滤器来改进对CQL查询的处理
但是后面还有一句关键的话:In order to use the custom filter, you must deploy the distributed runtime jar to the HBase to the directory specified by the HBase configuration variable called hbase.dynamic.jars.dir. This is set to ${hbase.rootdir}/lib by default.
翻译一下大概是:为了使用自定义过滤器,必须将分布式运行时jar部署到HBase中,并将其部署到HBase配置变量HBase .dynamic.jars.dir指定的目录中。如果不指定的话,这个目录默认就是${hbase.rootdir}/lib
因为我们用的是Geomesa服务提供的过滤器进行的查询,而Geomesa用的又是HBase自定义的过滤器加以改进的,也就是上面说的意思大概是,如果不把这个分布式运行时jar包配置到${hbase.rootdir}/lib目录下,等于说,我们用的还是HBase的那一套过滤器,也就是不是加强版的查询,Ok,那这个包在哪呢,我们可以通过下面的连接进行完整项目的下载:
百度网盘下载地址:geomesa-hbase_2.11-2.0.2-bin.tar.gz
Geomesa官方主页:http://www.geomesa.org/
Geomesa项目源码GitHub开源地址:https://github.com/locationtech/geomesa/releases
Geomesa-HBase分布式运行时jar包就在这个二进制压缩包中

jar包如下:
百度网盘下载地址:geomesa-hbase-distributed-runtime_2.11-2.0.2.jar
下载后,利用hadoop的fs命令,将其存放至${hbase.rootdir}/lib下,比如我的集群中HBase的rootdir路径如下:

首先利用hadoop的fs命令在hbase_db目录下面创建一个lib目录
hadoop fs -mkdir /opt/hbase/hbase_db/lib
然后将Geomesa-HBase分布式运行时Jar包上传至hdfs文件系统中的hbase数据存放路径下面的lib目录下
hadoop fs -put geomesa-hbase_2.11-2.0.2-bin.tar.gz /opt/hbase/hbase_db/lib
效果如下:

最后重启HBase,按时间范围查询如下:
Running query dtg DURING 2008-02-02T13:30:48+00:00/2008-02-02T13:30:52+00:00 13:11:13.971 [main-SendThread(192.168.142.144:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Reading reply
01 1288=1288|2008-02-02T13:30:49.000Z|POINT (116.31412 39.89455)
02 1288=1288|2008-02-02T13:30:50.000Z|POINT (116.31412 39.89455)
03 1277=1277|2008-02-02T13:30:49.000Z|POINT (116.31412 39.89454)
done
按空间(索引)范围查询如下:
Running query BBOX(geom, 116.31412,39.89411,117.31412,40.89455)
01 1288=1288|2008-02-02T13:30:49.000Z|POINT (116.31412 39.89454)
02 1288=1288|2008-02-02T13:30:50.000Z|POINT (116.31412 39.89455)
03 1277=1277|2008-02-02T13:30:49.000Z|POINT (116.31412 39.89454)
04 1277=1277|2008-02-03T07:26:45.000Z|POINT (116.31469 39.89492)
05 1277=1277|2008-02-06T18:35:12.000Z|POINT (116.31493 39.895)
06 1277=1277|2008-02-08T13:12:39.000Z|POINT (116.31468 39.89568)
07 1277=1277|2008-02-08T17:36:39.000Z|POINT (116.31777 39.89572)
08 1277=1277|2008-02-06T18:38:46.000Z|POINT (116.32276 39.89555)
09 1277=1277|2008-02-08T12:15:59.000Z|POINT (116.31645 39.89698)
10 1277=1277|2008-02-04T12:34:38.000Z|POINT (116.31511 39.8988)
done
基于Geomesa服务查询轨迹数据无法根据空间和时间范围进行结果查询的更多相关文章
- 如何用SQL语句查询Excel数据?
如何用SQL语句查询Excel数据?Q:如何用SQL语句查询Excel数据? A:下列语句可在SQL SERVER中查询Excel工作表中的数据. 2007和2010版本: SELECT*FROMOp ...
- FreeSql (二十一)查询返回数据
FreeSql 采用 ExpressionTree 优化读取速读,如果懂技术的你一定知道 .NETCore 技术下除了原生代码,最快就是 Emit 和 ExpressionTree. 项目在初期使用的 ...
- 基于NIO的同步非阻塞编程完整案例,客户端发送请求,服务端获取数据并返回给客户端数据,客户端获取返回数据
这块还是挺复杂的,挺难理解,但是多练几遍,多看看研究研究其实也就那样,就是一个Selector轮询的过程,这里想要双向通信,客户端和服务端都需要一个Selector,并一直轮询, 直接贴代码: Ser ...
- 微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)
版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程 ...
- 基于InfluxDB+Grafana打造大数据监控利器--转
这是一个大数据爆发的时代.面对信息的激流.多元化数据的涌现,我们在获取.存储.传输.理解.分析.应用.维护大数据时,无疑需要一种便捷的信息交流通道,以便快速.有效.准确地理解和驾驭这个过程.本文将通过 ...
- 大数据freestyle: 共享单车轨迹数据助力城市合理规划自行车道
编者按:近年来,异军突起的共享单车极大地解决了人们共同面临的“最后一公里”难题,然而,共享单车发展迅猛,自行车道建设却始终没有能够跟上脚步.幸运的是摩拜单车大量的轨迹数据为我们提供了一种新的思路:利用 ...
- 基于MaxCompute的媒体大数据开放平台建设
摘要:随着自媒体的发展,传统媒体面临着巨大的压力和挑战,新华智云运用大数据和人工智能技术,致力于为媒体行业赋能.通过媒体大数据开放平台,将媒体行业全网数据汇总起来,借助平台数据处理能力和算法能力,将有 ...
- (二)基于shard-jdbc中间件,实现数据分库分表
基于shard-jdbc中间件,实现数据分库分表 Sharding-JDBC简介 Sharding配置示意图 1.水平分割 1.1 水平分库 1.2 水平分表 2.Shard-jdbc中间件 2.1 ...
- 基于云服务MRS构建DolphinScheduler2调度系统
摘要:本文介绍如何搭建DolphinScheduler并运行MRS作业. 本文分享自华为云社区<基于云服务MRS构建DolphinScheduler2调度系统>,作者: 啊喔YeYe . ...
随机推荐
- 新开篇关于vue
参考链接:http://cn.vuejs.org/v2/guide/instance.html 了解vue组件的生命周期: 1.beforeCreate 即将创建 2.created 创建 3.bef ...
- 让NSUserDefaults使用起来像对象一样容易
让NSUserDefaults使用起来像对象一样容易 巧妙的设计,是为了简化开发提升效率而存在. 设计要点: 1. 单例模式 2. 重写setter,getter方法 3. 专门的类来管理单例 使用时 ...
- 使用redis存放 map数据
效果 实现 public class JedisPoolUtil { /** * 获取一个redis实例 * @param jedisConnectionFactory * @return */ pu ...
- July 08th 2017 Week 27th Saturday
You are never wrong to do the right thing. 坚持做对的事情,永远都不会错. I think the translation may be not precis ...
- ZT 创建类模式总结篇
创建类模式总结篇 分类: 设计模式 2012-03-26 09:03 7320人阅读 评论(11) 收藏 举报 编程优化设计模式任务 创建类模式主要关注对象的创建过程,将对象的创建过程进行封装,使客户 ...
- tp框架 php5.5以上版本出现”No input file specified“错误问题解决
public文件夹下 .htaccess文件中的 RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] 在默认情况下会导致No input file specifie ...
- Override和Overload的含义去区别
java中的继承,方法覆盖(重写)override与方法的重载overload的区别 方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现. 重写(Ove ...
- Mac 导入maven项目详解
1.打开Eclipse,选择Help->Install New SoftWare2.点击add 地址输入:http://m2eclipse.sonatype.org/sites/m2e,name ...
- SMB linux&windows共享文件
搭建就不多说了:https://www.xuebuyuan.com/3235974.html 在其中可以用cd(进入目录),ls(罗列文件和文件夹),get(下载文件),put(上载文件) 等命令进行 ...
- libconfig C++ 学习笔记
1. C++API 头文件 #include <libconfig.h++> ,命名空间:using namespace libconfig; 2.多线程使用问题: (1)libconfi ...