GeoMesa 是开源的基于分布式计算系统的面向海量时空数据查询与分析的工具包,它支持多种可扩展的、基于云端的数据存储架构,包括Apache Accumulo, HBase,Cassandra,Google Bigtable,以及用于流计算的Apache Kafka 。同时GeoMesa还可以和Apache Storm一起处理流数据,并使用Spark进行空间分析。 同时,GeoMesa以GeoServer插件的形式为GeoServer提供了读取GeoMesa表的功能。在GeoServer中,GeoMesa表作为一种数据源存在,通过GeoServer,用户可以通过WMS/WFS的形式访问GeoMesa的数据。
GeoMesa的定位是一个基于分布式数据库的用于海量空间爱你数据处理的数据引擎(SDE)
GeoMesa 允许使用存储在GeoMesa中的数据,其他GeoTools数据存储中的数据在Spark上执行作业。GeoMesa运行创建Spark RDD和数据帧,将Spark RDD和数据帧写入地理工具数据存储,并使用Kryo 进行序列化。GeoMesa底层为geomesa-spark-jts模块,geomesa-spark-core模块是spark core的扩展,支持geotools的query,生成序列化好的simply feature类型的RDD。
GeoMesa的定位是一个时空数据引擎,或者交数据库中间件,目的在于使用户可以在分布式NoSql数据库中 存储和管理海量空间数据.
GeoMesa作为空间大数据处理矿建,本身不存储数据,数据存储依赖底层的分布式数据库,如HBase,Accumulo等。
一方面,GeoMesa基于已有的GIS开源框架GeoTools,可以进行地理学方面的空间数据的处理,另一方面,GeoMesa也能够支持比较成熟的大数据框架进行数据的处理,存储和计算,此外GeoMesa本身还有器特有的时空索引的机制,尤其是对LineString,Polygon等要素提供的XZ索引机制,为时空数据在大数据场景中进行运用提供了很好的拓展。
GeoMesa通过实现GeoTools接口,提供了使用OGC标准服务接口数据访问能力,实现的OGC标准有:
WFS,WMS,WPS,WCS
Spark JTS提供了一组用户定义函数(UDF)和用户定义类型(UDT),这些函数运行在spark中执行SQL查询,从而对地理空间数据类型执行空间操作。支持基于Spark Sql模块中存在的数据集/数据帧API,以提供地理空间功能,包括自定义地理空间数据类型和函数,从地理弓箭数据存储创建数据帧的能力及改进SQL查询性能的优化。
SparkSession
GeoMesa Spark Core 是直接处理geomesa 和其他地理空间数据存储中的特征RDD
SpaceialRDDProvider 提供了用于访问Spark中地理空间数据的API
其主要包含俩部分,空间索引GeoMesaFeatureIndex 与数据存储GeoMesaDataStore
空间索引主要是GeoMesa中定义的Z2/Z3,XZ2/XZ3的实现,用于将时空数据转换为可被列数据库存储一维键值形式,DataStore是基于GeoTools数据接口实现的用于数据访问的标准接口.
GeoMesaSpark
SparkConf
Accumulo RDD -> AccumuloApatialRDD
HBase RDD -> HBaseSpatialARDDProvider
FileSystem RDD -> FileSystemRDDProvider (默认的)
Converter RDD -> ConvertersPatialRDDProvider
GeoTools RDD -> GeotoolsSpatialRDDProvider
GeoMesaSpark SQL 支持基于Spark SQl 模块中存在的数据集/数据帧API,以提供地理空间功能,包括自定义地理空间数据类型和函数,从地理工具数据存储创建数据帧的能力,及改进SQL查询性能的优化
GeoMesaDataStore 在进行数据表创建,数据导入,数据查询等操作都会通过GeoMesaIndexManager类获取空间爱你索引,然后针对每个空间爱你要素都会生成一个索引值作键值。
GeoMesaIndexManager
日期类型属性既可以作为时空索引,也可以单独的作为属性索引
GeoMesa会默认为时间和空间建立索引,也可以自己指定索引
https://blog.csdn.net/An1090239782/article/details/95946215
空间索引(Z2/XZ2) Spatial Index 简单要类型包含几何类型属性(点,线,面)
时空索引 Spatio-Temporal Index(Z3/XZ3) 简单要素类型不仅包含几何类型属性,还包含日期属性
Z2 [ z2] - Z2索引使用二维Z阶曲线来索引点数据的纬度和经度。如果要素类型具有几何类型,则将创建此索引 Point。这用于有效地回答具有空间组件但没有时间组件的查询。
Z3 [ z3] - Z3索引使用三维Z阶曲线来索引点数据的纬度,经度和时间。如果要素类型具有几何类型Point且具有时间属性,则将创建此索引。这用于有效地回答具有空间和时间组件的查询。
XZ2 [ xz2] - XZ2索引使用XZ-ordering [1]的二维实现来索引非点数据的纬度和经度。XZ排序是Z-排序的扩展,设计用于空间扩展对象(即非点几何,如线串或多边形)。如果要素类型具有非Point几何图形,则将创建此索引。这用于有效地回答具有空间组件但没有时间组件的查询。
XZ3 [ xz3] - XZ3索引使用XZ-ordering [1]的三维实现来索引非点数据的纬度,经度和时间。如果要素类型具有非Point几何并且具有时间属性,则将创建此索引。这用于有效地回答具有空间和时间组件的查询。
Record / ID [ id] - 记录索引使用功能ID作为主键。它用于ID的任何查询。此外,某些属性查询可能最终从记录索引中检索数据。
Attribute [ attr] - 属性索引使用属性值作为主索引键。这允许在没有时空组件的情况下快速检索查询。属性索引包括辅助时空密钥,其可以改进具有多个谓词的查询。
https://blog.csdn.net/An1090239782/article/details/95938690
某一个地理区域内在某个时间范围发生的关键时间
一个任务区域的流量信息
给出2017年受血吸虫病影像的区域
查询最佳20分钟进去飓风区域的汽车
查询某个点附近的酒店
查找某嫌疑人在2018年8月的移动轨迹
时空查询:区域 + 时间区间
空间查询:区域信息
时序查询:轨迹查看
属性查询:主题属性信息
https://blog.csdn.net/An1090239782/article/details/95964163
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rUWMzPTg-1577671522202)(C:\Users\ADMINI~1\AppData\Local\Temp\1572320608403.png)]
DataStore: 数据的核心访问模型,存储了数据集的名称,数据结构与类型,数据访问源信息,类似一种数据源信息的存储几何,用于定义和描述数据的基本信息。
SimpleFeatureType:
简单要素类型,用于定义数据类型,类似SQL语句中create table是定义表字段时所指定的信息
SimpleFeature
简单要素,用于定义举得数据,可以使用Geotools 提供的SimpleFeatureBuilder 类创建
写入
GeoMesaDataStore
创建好SimpleFeature后,就可以开始向数据库中写入数据了
FeatureWriter
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KHD5lxYJ-1577671522203)(C:\Users\ADMINI~1\AppData\Local\Temp\1572320584967.png)]查询步骤
获取要查询的要素名称,即SimpleFeatureType的Name
对要查询的字段,编写查询条件并创建Filter类型的对象
创建Query对象,将查询条件加入其中
执行查询,获得结构
FeatureReader
Query
查询类型
多种空间数据分析算法,如KNN、直方图、热点分析、TubeSelect等
不支持栅格数据存储
空间索引基于Z曲线与GeoHash设计,存在位置突变等问题
GeoMesa
hufeihu
https://blog.csdn.net/u011596455/article/details/85869199
和硬盘比记忆
https://blog.csdn.net/qq_21705851/article/category/9036552/1
地理空间大数据平台
https://blog.csdn.net/huxuanlai/article/details/78687636