推荐视频讲解 1h https://yq.aliyun.com/live/793
基础概念
数据库时空引擎
OGC 空间要素对象表达
- SimpleFeature :时空要素的抽象表达,默认还有Geometry字段
- SimpleFeatureTpye:要素元数据描述,包括:字段名、类型、空间参考等,类比数据库表结构
- WKT: Well-known text,用来描述SimpleFeature 对象
GeoMesa 简介
- GeoMesa是⼀一款开源的基于分布式计算系统的⾯面向海海量量时空数据查询与分析的⼯工具包
- GeoMesa基于GeoTools API进⾏行行设计,与GeoServer等进⾏行行集成提供OGC标准的服务
- ⽀支持多种可扩展的、基于云端的数据存储架构,包括Apache Accumulo, HBase,Cassandra,Google Bigtable,以及⽤用于流计算的Apache Kafka 。
- 提供了了Spark,并增加了了正对空间数据的UDT、UDF和UDAF,⽅方便便⽤用户直接使⽤用Spark SQL
进⾏行行空间数据查询与分析
官网 https://www.geomesa.org/
GeoMesa 体系架构
GeoMesa的源码可以在GitHub官方页面下到。GeoMesa代码库本身比较复杂,包含了大量的子模块,除了自身所带的一些基础工具模块外,还提供了基于目前主流的分布式存储系统的扩展模块,但是在了解了GeoMesa的架构之后,读者应该不难看出整个工程还是有规律可循的,比如geomesa-index-api提供了最核心的空间数据索接口(GeoMesaFeatureIndex)与数据访问(GeoMesaDataStore)等基础接口类,然后基于此模块分别有geomesa-accumulo,geomesa-hbase,geomesa-cassandra等扩展模块。两外还包括一些其他的辅助模块,如geomea-jobs提供了对MapReduce的支持等,geomea-utils提供了一些被广泛使用的工具类
详细见博客 https://blog.csdn.net/u011596455/article/details/85869199
时空基础 : 空间填充曲线与GeoHash
时空索引 R 树
解决了在高维空间搜索等问题,Oracle Spatial、Mysql Spatial、PostgreSql(PostGIS) 都是基于R树进行空间搜索操作,即对时空字段(Geometry Column) 创建R树索引。
详细见博客
https://blog.csdn.net/qq_18298439/article/details/96278997
为什么使用空间填充曲线
R树存在的问题:
- 单独创建索引文件
- 数据更新问题
为了达到平衡状态,新掺入数据需要更新整个R树 - 不适合NoSQL 的存储结构
Hbase 本身只提供基于行键和全表扫面的查询,而行键索引单一,对于多维度的查询困难
空间填充曲线的优点是将多维空间转换成一维曲线
空间填充曲线
Z 曲线 Hibert曲线最常用
空间查询
- 用户定义查询窗口
- 层次划分
- 计算查询范围(Range)
GeoHash 原理
GeoHash将⼆二维的经纬度转换成字符串串(Base32编码),如下图展示了了9个区域的GeoHash字符串串,
分别是WX4ER,WX4G2、WX4G3等,每⼀一个字符串串代表了了某⼀一矩形区域。
- 字符串越长,表示的范围越小越精确;字符串长度越小,表示的范围越大越宽泛;
- 字符串越相似表示距离越相近;
GeoMesa Hbase 时空索引
GeoMesa时空索引
GeoMesa使用了基于Z-order填充曲线的GeoHash空间索引技术,
并针对时间维度进行了扩展,具体分为:
• Z2:空间,点索引
• Z3:时间+空间,点索引
• XZ2 :空间,线\面索引
• XZ3 :时间+空间,线\面索引
Z2
Z3
GeoMesa时空索引具体实现:
https://github.com/locationtech/sfcurve
https://github.com/locationtech/geomesa/tree/master/geomesa-z3
GeoMesa HBase 索引
RowKey设计
- 属性索引
- Z-Index Shards: 预拆分,范
围为1-127,默认为4
- Z-Index Time Interval
https://www.geomesa.org/documentation/user/datastores/index_config.html
时空查询-Query Planning
索引选择顺序
- Feature ID predicates using the ID index
- High-cardinality attribute predicates using the attribute index
- Attribute equality predicates using the attribute index
- Spatio-temporal predicates using the Z3/XZ3 index
- Attribute range predicates using the attribute index
- Spatial predicates using the Z2/XZ2 index
- Temporal predicates using the Z3/XZ3 index
GeoMesa HBase应⽤用场景
https://blog.csdn.net/xiaof22a/article/details/80215787
GeoTools DataStore接⼝口
• SimpleFeature:空尽要素的抽象表达,默认含有Geometry字段
• SimpleFeatureType:要素元数据描述,包括:字段名、类型、空间参考等,类似表结构
• DataStore:要素数据集,对应RDBMS中的数据库,定义了了⽤用户操作数据的接⼝口
• FeatureSource:⽤用于数据查询
• FeatureStore: FeatureSource⼦子类,增加数据更更新功能
• SimpleFeatureCollection:数据要素结合,按需加载
• Query:数据查询类,封装了了查询条件
GeoMesa Kafka DataStore
- 使⽤用Kafka作为数据存储DataStore
- 通过GeoTools DataStore标准接⼝口进⾏行行访问
- Consumer与Producer可以分布在不不同server
- ⽀支持要素缓存,定时写⼊入kafka
-
GeoMesa Lambda DataStore
• 数据存储在两个层:transient tier (Kafka)
和 a persistent tier(HBase)
• 数据定时写⼊入持久层
• 使⽤用ZK同步数据缓存状态,保证数据⼀一次
写⼊入
• 进⾏行行数据查询会从两个存储层分别进⾏行行,
然后合并查询结果返回给⽤用户
https://www.geomesa.org/documentation/user/lambda/index.html
GeoMesa GeoJSON/REST API
优点:
- 系统便于部署
- 基于REST服务,操作灵活方便
- 全部使用GeoJSON进行编码,方便与
其他系统集成
缺点: - 功能比GeoTools API弱,不支持属
性索引、排序等高级功能 - Server端容易成为系统瓶颈
https://www.geomesa.org/documentation/user/geojson.html
支持Spark⼤大数据分析
提供了用于空间数据分析的SpatialRDD 模型
- 提供了多种时空函数实现,如
buffer,contains等 - 扩展Spark SQL以支持ISO SQL/MM标
准与OGC SF/SQL 标准的时空查询
阿⾥里里云HBase Ganos
访问:https://cn.aliyun.com/product/hbase 查询详细信息