一、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服务查询轨迹数据无法根据空间和时间范围进行结果查询的更多相关文章

  1. 如何用SQL语句查询Excel数据?

    如何用SQL语句查询Excel数据?Q:如何用SQL语句查询Excel数据? A:下列语句可在SQL SERVER中查询Excel工作表中的数据. 2007和2010版本: SELECT*FROMOp ...

  2. FreeSql (二十一)查询返回数据

    FreeSql 采用 ExpressionTree 优化读取速读,如果懂技术的你一定知道 .NETCore 技术下除了原生代码,最快就是 Emit 和 ExpressionTree. 项目在初期使用的 ...

  3. 基于NIO的同步非阻塞编程完整案例,客户端发送请求,服务端获取数据并返回给客户端数据,客户端获取返回数据

    这块还是挺复杂的,挺难理解,但是多练几遍,多看看研究研究其实也就那样,就是一个Selector轮询的过程,这里想要双向通信,客户端和服务端都需要一个Selector,并一直轮询, 直接贴代码: Ser ...

  4. 微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程 ...

  5. 基于InfluxDB+Grafana打造大数据监控利器--转

    这是一个大数据爆发的时代.面对信息的激流.多元化数据的涌现,我们在获取.存储.传输.理解.分析.应用.维护大数据时,无疑需要一种便捷的信息交流通道,以便快速.有效.准确地理解和驾驭这个过程.本文将通过 ...

  6. 大数据freestyle: 共享单车轨迹数据助力城市合理规划自行车道

    编者按:近年来,异军突起的共享单车极大地解决了人们共同面临的“最后一公里”难题,然而,共享单车发展迅猛,自行车道建设却始终没有能够跟上脚步.幸运的是摩拜单车大量的轨迹数据为我们提供了一种新的思路:利用 ...

  7. 基于MaxCompute的媒体大数据开放平台建设

    摘要:随着自媒体的发展,传统媒体面临着巨大的压力和挑战,新华智云运用大数据和人工智能技术,致力于为媒体行业赋能.通过媒体大数据开放平台,将媒体行业全网数据汇总起来,借助平台数据处理能力和算法能力,将有 ...

  8. (二)基于shard-jdbc中间件,实现数据分库分表

    基于shard-jdbc中间件,实现数据分库分表 Sharding-JDBC简介 Sharding配置示意图 1.水平分割 1.1 水平分库 1.2 水平分表 2.Shard-jdbc中间件 2.1 ...

  9. 基于云服务MRS构建DolphinScheduler2调度系统

    摘要:本文介绍如何搭建DolphinScheduler并运行MRS作业. 本文分享自华为云社区<基于云服务MRS构建DolphinScheduler2调度系统>,作者: 啊喔YeYe . ...

随机推荐

  1. 【Leetcode】【Easy】Count and Say

    The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...

  2. 纯CSS画的基本图形

    图形包括基本的矩形.圆形.椭圆.三角形.多边形,也包括稍微复杂一点的爱心.钻石.阴阳八卦等.当然有一些需要用到CSS3的属性,所以在你打开这篇文章的时候,我希望你用的是firefox或者chrome, ...

  3. July 12th 2017 Week 28th Wednesday

    No way is impossible to courage. 勇敢面前没有通不过的路. Without faith and courage, nothing is possible. With t ...

  4. 【2D游戏引擎】WIP反思

    WIP(Working In Progress)是我初学游戏引擎开发时候开发的一个2D游戏引擎,当时计划为它实现类似Unity一样的编辑器,具有和Unity相似的工作流,但是由于水平不够,走了很多弯路 ...

  5. WiFi安全测试工具WiFiPhisher

    官方下载地址:https://github.com/sophron/wifiphisher打不开的要翻GFW好事做到底wifiphisher-master.zip=================== ...

  6. Maven高级应用--编译全模块包-dist包

    1. 在需要生成dist包的模块级别,新建文件夹xxx-xxxx-dist 2. 进入目录,新建pom.xml,建议copy 3. dependencies节点,把要编译成全局包的应用引入进来 < ...

  7. django get_object_or_404

    django get_object_or_404 是django shortcuts模块里面一个比较简便的方法,特别是用django get来操作数据库的时候,可以帮 我们少写一些代码,加快开发速度. ...

  8. Java 学习笔记1

    最近开始学习Java. <%@ page language="java" import="java.util.*" pageEncoding=" ...

  9. BZOJ1614:[USACO]Telephone Lines架设电话线(二分,最短路)

    Description FarmerJohn打算将电话线引到自己的农场,但电信公司并不打算为他提供免费服务.于是,FJ必须为此向电信公司 支付一定的费用.FJ的农场周围分布着N(1<=N< ...

  10. 【[POI2006]OKR-Periods of Words】

    很妙的一道题 感觉又加深了对\(KMP\)还有\(next\)数组的理解 先来看看这个鬼畜的题意,大致就是给你一个字符串,对于这个字符串的每一个前缀,要去找到这个前缀的一个最长的前缀,使得前缀成为这个 ...