推荐视频讲解 1h https://yq.aliyun.com/live/793

基础概念

数据库时空引擎

GeoMesa时空基础及应⽤场景

OGC 空间要素对象表达

  • SimpleFeature :时空要素的抽象表达,默认还有Geometry字段
  • SimpleFeatureTpye:要素元数据描述,包括:字段名、类型、空间参考等,类比数据库表结构
  • WKT: Well-known text,用来描述SimpleFeature 对象
    GeoMesa时空基础及应⽤场景

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 体系架构

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 本身只提供基于行键和全表扫面的查询,而行键索引单一,对于多维度的查询困难

空间填充曲线的优点是将多维空间转换成一维曲线

空间填充曲线

GeoMesa时空基础及应⽤场景
Z 曲线 Hibert曲线最常用

空间查询

GeoMesa时空基础及应⽤场景

  • 用户定义查询窗口
  • 层次划分
  • 计算查询范围(Range)

GeoHash 原理

GeoHash将⼆二维的经纬度转换成字符串串(Base32编码),如下图展示了了9个区域的GeoHash字符串串,
分别是WX4ER,WX4G2、WX4G3等,每⼀一个字符串串代表了了某⼀一矩形区域。
GeoMesa时空基础及应⽤场景

  • 字符串越长,表示的范围越小越精确;字符串长度越小,表示的范围越大越宽泛;
  • 字符串越相似表示距离越相近;

GeoMesa Hbase 时空索引

GeoMesa时空索引

GeoMesa使用了基于Z-order填充曲线的GeoHash空间索引技术,
并针对时间维度进行了扩展,具体分为:
• Z2:空间,点索引
• Z3:时间+空间,点索引
• XZ2 :空间,线\面索引
• XZ3 :时间+空间,线\面索引
Z2 GeoMesa时空基础及应⽤场景
Z3
GeoMesa时空基础及应⽤场景
GeoMesa时空索引具体实现:
https://github.com/locationtech/sfcurve
https://github.com/locationtech/geomesa/tree/master/geomesa-z3

GeoMesa HBase 索引

GeoMesa时空基础及应⽤场景

RowKey设计

GeoMesa时空基础及应⽤场景

  • 属性索引
    GeoMesa时空基础及应⽤场景
  • Z-Index Shards: 预拆分,范
    围为1-127,默认为4
    GeoMesa时空基础及应⽤场景
  • Z-Index Time Interval
    GeoMesa时空基础及应⽤场景
    https://www.geomesa.org/documentation/user/datastores/index_config.html

时空查询-Query Planning

GeoMesa时空基础及应⽤场景
索引选择顺序

  1. Feature ID predicates using the ID index
  2. High-cardinality attribute predicates using the attribute index
  3. Attribute equality predicates using the attribute index
  4. Spatio-temporal predicates using the Z3/XZ3 index
  5. Attribute range predicates using the attribute index
  6. Spatial predicates using the Z2/XZ2 index
  7. Temporal predicates using the Z3/XZ3 index

GeoMesa时空基础及应⽤场景

GeoMesa HBase应⽤用场景

https://blog.csdn.net/xiaof22a/article/details/80215787

GeoTools DataStore接⼝口
• SimpleFeature:空尽要素的抽象表达,默认含有Geometry字段
• SimpleFeatureType:要素元数据描述,包括:字段名、类型、空间参考等,类似表结构
• DataStore:要素数据集,对应RDBMS中的数据库,定义了了⽤用户操作数据的接⼝口
• FeatureSource:⽤用于数据查询
• FeatureStore: FeatureSource⼦子类,增加数据更更新功能
• SimpleFeatureCollection:数据要素结合,按需加载
• Query:数据查询类,封装了了查询条件
GeoMesa时空基础及应⽤场景

GeoMesa Kafka DataStore

  • 使⽤用Kafka作为数据存储DataStore
  • 通过GeoTools DataStore标准接⼝口进⾏行行访问
  • Consumer与Producer可以分布在不不同server
  • ⽀支持要素缓存,定时写⼊入kafka
    -GeoMesa时空基础及应⽤场景

GeoMesa Lambda DataStore

• 数据存储在两个层:transient tier (Kafka)
和 a persistent tier(HBase)
• 数据定时写⼊入持久层
• 使⽤用ZK同步数据缓存状态,保证数据⼀一次
写⼊入
• 进⾏行行数据查询会从两个存储层分别进⾏行行,
然后合并查询结果返回给⽤用户

GeoMesa时空基础及应⽤场景

https://www.geomesa.org/documentation/user/lambda/index.html

GeoMesa GeoJSON/REST API

优点:

  1. 系统便于部署
  2. 基于REST服务,操作灵活方便
  3. 全部使用GeoJSON进行编码,方便与
    其他系统集成
    缺点:
  4. 功能比GeoTools API弱,不支持属
    性索引、排序等高级功能
  5. Server端容易成为系统瓶颈
    GeoMesa时空基础及应⽤场景
    https://www.geomesa.org/documentation/user/geojson.html

支持Spark⼤大数据分析

提供了用于空间数据分析的SpatialRDD 模型

  • 提供了多种时空函数实现,如
    buffer,contains等
  • 扩展Spark SQL以支持ISO SQL/MM标
    准与OGC SF/SQL 标准的时空查询
    GeoMesa时空基础及应⽤场景

阿⾥里里云HBase Ganos
GeoMesa时空基础及应⽤场景
访问:https://cn.aliyun.com/product/hbase 查询详细信息

相关文章:

  • 2022-12-23
  • 2021-12-31
  • 2021-05-30
  • 2021-07-17
  • 2022-12-23
  • 2021-04-06
  • 2021-08-30
  • 2021-11-23
猜你喜欢
  • 2021-04-07
  • 2021-04-19
  • 2021-12-07
  • 2021-10-23
  • 2022-12-23
  • 2021-06-14
  • 2021-09-12
相关资源
相似解决方案