第 1章 GeoMesa的前世今生 1
1.1 时空数据背景 1
1.1.1 时空数据简介 1
1.1.2 时空数据处理过程 2
1.1.3 时空数据库的产生 3
1.2 传统时空数据库的瓶颈 4
1.2.1 无法支持海量数据 4
1.2.2 无法进行弹性扩展 5
1.2.3 流式数据的支持受限 5
1.2.4 改造成本较高 5
1.3 GeoMesa概述 5
1.3.1 GeoMesa横空出世 5
1.3.2 GeoMesa设计思想 6
1.3.3 GeoMesa核心特性 8
1.4 GeoMesa生态圈 9
1.4.1 GeoMesa支持的第三方组件 9
1.4.2 使用GeoMesa的产品 10
1.5 本章小结 10
第 2章 GeoMesa上手教程 11
2.1 下载、安装以及配置 12
2.1.1 下载和安装 12
2.1.2 GeoMesa-HBase的配置 13
2.2 通过命令行使用GeoMesa-HBase 16
2.2.1 环境和状态命令 16
2.2.2 数据模式相关命令 17
2.2.3 数据编辑命令 20
2.2.4 查询导出命令 21
2.2.5 分析命令 23
2.2.6 定义SimpleFeatureType 25
2.2.7 日志异常处理 25
2.2.8 GeoMesa Scala控制台 26
2.2.9 GeoTools 命令行工具 28
2.3 快速入门 30
2.4 通过Java API使用GeoMesa-HBase 33
2.4.1 Maven的配置与使用 33
2.4.2 Java API的使用示例 33
2.5 本章小结 35
第3章 GeoTools基本概念 36
3.1 空间矢量数据概述 36
3.1.1 矢量数据简介 36
3.1.2 OpenGIS规范 37
3.1.3 GeoTools概述 38
3.2 DataStore 40
3.2.1 DataStore简介 40
3.2.2 DataStore使用 40
3.3 SimpleFeatureType 41
3.3.1 SimpleFeatureType概念 42
3.3.2 SimpleFeatureType使用 43
3.4 SimpleFeature 44
3.4.1 SimpleFeature概念 44
3.4.2 SimpleFeature使用 45
3.5 GeoTools的内部逻辑 45
3.5.1 获取DataStore实例 46
3.5.2 创建Schema 46
3.5.3 数据写入 47
3.5.4 数据读取 50
3.6 本章小结 51
第4章 GeoMesa的时空索引 52
4.1 时空索引概述 52
4.1.1 索引的基础知识 53
4.1.2 传统的空间索引 54
4.1.3 空间填充曲线 56
4.1.4 Google S2索引与Uber H3索引 64
4.2 GeoMesa的索引实现 66
4.2.1 GeoMesa中索引的类型 66
4.2.2 GeoMesa索引具体的使用方法 67
4.3 GeoMesa的索引查询 69
4.3.1 条件分解 69
4.3.2 索引选择 70
4.4 GeoMesa的索引配置 72
4.4.1 配置FeatureID编码方式 72
4.4.2 配置Geometry序列化 72
4.4.3 配置列族 73
4.4.4 自定义创建索引 74
4.4.5 配置“Z”索引分片个数 74
4.4.6 配置“Z”索引时间间隔 74
4.4.7 配置“XZ”索引精度 75
4.4.8 配置ATTR索引分片个数 75
4.4.9 配置ATTR字段基数 75
4.4.10 配置索引分区 76
4.4.11 配置索引拆分策略 76
4.4.12 配置查询拦截器 76
4.4.13 配置统计缓存 77
4.4.14 配置时间优先级 77
4.4.15 配置混合几何类型 78
4.5 本章小结 78
第5章 数据写入 79
5.1 数据写入概述 79
5.1.1 数据写入流程 79
5.1.2 使用示例 80
5.2 生成ID信息 82
5.2.1 用户指定 82
5.2.2 随机生成 82
5.3 获取写入对象 84
5.3.1 写入表的对象 84
5.3.2 写入分区表的对象 85
5.4 写入存储引擎 87
5.4.1 获取转换器 88
5.4.2 构建索引 89
5.4.3 数据写入 92
5.5 更新统计信息 94
5.5.1 构造统计查询条件 94
5.5.2 执行统计操作 97
5.6 数据组织方式 98
5.6.1 元数据管理 98
5.6.2 实体数据管理 99
5.7 本章小结 100
第6章 数据查询 101
6.1 数据查询概述 101
6.2 查询准备 102
6.2.1 获取对应的DataStore对象 102
6.2.2 获取SimpleFeatureType信息 104
6.2.3 查询校验 105
6.3 查询计划生成 106
6.3.1 准备查询计划 106
6.3.2 结合索引生成查询范围 110
6.3.3 获取底层表信息 114
6.3.4 构造存储引擎查询信息 115
6.4 执行并获取数据 119
6.4.1 执行查询 120
6.4.2 获取数据 120
6.5 本章小结 122
第7章 数据统计 123
7.1 数据统计概述 123
7.2 统计功能 124
7.3 统计信息获取方法 125
7.3.1 通过Hints来获取统计信息 125
7.3.2 通过接口来获取统计信息 126
7.4 执行流程 127
7.4.1 流程概述 127
7.4.2 命令解析 128
7.4.3 执行统计 129
7.4.4 统计信息的序列化和反序列化过程 130
7.5 本章小结 136
第8章 数据分析 137
8.1 空间数据分析 137
8.1.1 空间数据分析概述 137
8.1.2 GeoMesa中对空间数据分析操作 139
8.2 热力图分析操作 140
8.2.1 热力图分析概述 140
8.2.2 GeoMesa中热力图分析功能的使用方法 141
8.3 KNN查询操作 143
8.3.1 KNN概述 143
8.3.2 GeoMesa中KNN查询功能的使用方法 145
8.4 近似查询操作 146
8.4.1 近似查询概述 147
8.4.2 GeoMesa中近似查询功能的使用方法 148
8.5 本章小结 149
第9章 数据工作流 150
9.1 数据工作流概述 150
9.2 NiFi概述 151
9.2.1 NiFi简介 151
9.2.2 NiFi的特性 153
9.2.3 Processor机制 153
9.3 GeoMesa与NiFi整合 154
9.3.1 NiFi自定义数据处理器 155
9.3.2 GeoMesa扩展结构 160
9.4 GeoMesa NiFi数据处理算子 160
9.4.1 转换器处理器 160
9.4.2 记录处理器 161
9.4.3 Avro 处理器 162
9.4.4 记录更新处理器 162
9.4.5 数据源处理器 163
9.4.6 转换处理器 164
9.5 本章小结 164
第 10章 GeoMesa的数据存储方案 165
10.1 使用HBase存储数据 165
10.1.1 HBase概述 165
10.1.2 GeoMesaHBase DataStore简介 166
10.2 使用Kafka存储数据 168
10.2.1 Kafka概述 168
10.2.2 GeoMesa Kafka DataStore简介 169
10.3 使用Redis存储数据 172
10.3.1 Redis概述 172
10.3.2 GeoMesa Redis DataStore简介 172
10.4 使用CQEngine存储数据 174
10.4.1 CQEngine概述 174
10.4.2 GeoMesa CQEngine DataStore简介 174
10.5 使用FileSystem存储数据 176
10.5.1 FileSystem概述 176
10.5.2 GeoMesa FSDS简介 176
10.6 使用Lambda存储数据 181
10.6.1 Lambda概述 181
10.6.2 GeoMesa Lambda DataStore简介 182
10.7 本章小结 184
第 11章 分布式计算 185
11.1 Spark和Spark SQL 185
11.1.1 Spark概述 185
11.1.2 Spark SQL概述 186
11.2 GeoMesa接入Spark的方式 188
11.2.1 GeoMesa Spark整体架构 188
11.2.2 GeoMesa对RDD的扩展 189
11.2.3 GeoMesa对JTS的扩展 192
11.2.4 GeoMesa对Spark SQL空间能力的扩展 196
11.3 空间数据计算函数 207
11.3.1 空间数据构建函数 207
11.3.2 空间数据信息抽取函数 208
11.3.3 空间数据转换函数 208
11.3.4 空间数据输出函数 209
11.3.5 空间数据关系函数 209
11.3.6 空间数据处理函数 210
11.4 本章小结 210
第 12章 操作时遇到的若干问题 211
12.1 GeoMesa写入数据时出现的问题 211
12.1.1 Region繁忙的问题 211
12.1.2 数据记录过大的问题 216
12.2 GeoMesa查询数据时出现的问题 218
12.2.1 数据采样的问题 219
12.2.2 数据分页的问题 221
12.2.3 利用Spark查询GeoMesa时,无法设置返回数据量上限的问题 225
12.2.4 查询时数据不一致的问题 230
12.3 GeoMesa分析统计时出现的问题 233
12.4 本章小结 237
参考文献 238
展开