13. GeoMesa过程¶
以下分析过程在GeoMesa数据存储上可用并进行了优化,可在 geomesa-process
模块:
ArrowConversionProcess -编码中的简单要素 Apache Arrow 格式
BinConversionProcess -以最小16字节格式对简单要素进行编码
DensityProcess -计算CQL查询的密度热图
DateOffsetProcess -按输入时间段修改要素集合中的指定日期字段。
HashAttributeProcess/HashAttributeColorProcess -计算一个附加的‘hash’属性,该属性对样式设置很有用。
JoinProcess -使用公共属性字段合并来自两个不同方案的要素
KNearestNeighborSearchProcess -执行KNN搜索
Point2点进程 -将点集合聚合为线段集合
ProximitySearchProcess -搜索一组输入要素附近
QueryProcess -执行Geomesa查询,用作嵌套请求的输入
RouteSearchProcess -匹配沿给定路径移动的要素
SamplingProcess -使用统计采样来减少查询返回的要素
StatsProcess -返回CQL查询的各种统计信息
TrackLabelProcess -基于通用属性选择轨迹中的最后一个要素,该属性对设置样式很有用
TubeSelectProcess -跨时间和空间执行相关搜索
UniqueProcess -标识属性的唯一值
在可能的情况下,计算被推送到分布式系统以获得更快的性能。目前,这已在Acumulo数据存储中实现,部分在HBase数据存储中实现。其他后端仍可使用,但将使用本地处理。
13.1. 安装¶
虽然它们可以单独使用,但常见的用例是与Geoserver一起使用。要在Geoserver中部署它们,需要:
一个GeoMesa数据存储插件
Geoserver WPS扩展
备注
一些流程还需要定制输出格式,这些格式在GPL许可协议中单独提供 GeoMesa GeoServer WFS module
可以在gs-plugins目录中的二进制发行版中获得GeoMesa数据存储插件。
提供了有关Geoserver WPS扩展模块的文档(包括下载说明 here 。
要验证安装,请启动Geoserver,您应该会看到如下所示的行 INFO [geoserver.wps] - Found 15 bindable processes in GeoMesa Process Factory
。
在Geoserver Web用户界面中,点击“演示”,然后点击“WPS请求构建器”。在请求构建器的‘Choose Process’下,点击任何‘geomesa:’选项来构建示例请求,在某些情况下还可以看到结果。
13.2. 处理机¶
13.2.1. ArrowConversionProcess¶
这个 ArrowConversionProcess
将输入要素集合转换为箭头格式。
参数 |
描述 |
---|---|
特征 |
要编码的输入要素集合 |
包含文件 |
在箭头文件中包含要素ID |
ProxyFids |
将要素ID代理为整数而不是字符串 |
格式版本 |
Arrow IPC格式版本 |
词典字段 |
要进行字典编码的属性 |
使用缓存词典 |
使用缓存的top-k统计信息(如果可用),或运行动态统计信息查询来构建词典 |
排序字段 |
要排序的属性 |
排序反向 |
反转默认排序顺序 |
BatchSize |
要包含在每个记录批次中的要素数量 |
双程通过 |
首先构建词典,然后在单独的扫描中查询结果 |
13.2.2. BinConversionProcess¶
这个 BinConversionProcess
将输入要素集合转换为BIN格式。
参数 |
描述 |
---|---|
特征 |
要查询的输入要素集合 |
轨道 |
用于BIN记录的跟踪字段 |
Geom |
用于BIN记录的几何字段 |
DTG |
使用缓存的top-k统计信息(如果可用),或运行动态统计信息查询来构建词典 |
标签 |
要排序的属性 |
AxisOrder |
反转默认排序顺序 |
13.2.3. DensityProcess¶
这个 DensityProcess
在存储在GeoMesa中的一组要素上计算密度贴图。将返回一个栅格图像。
参数 |
描述 |
---|---|
数据 |
输入简单要素集合以运行密度过程 |
半径像素 |
密度核的半径,以像素为单位。控制密度贴图的“模糊性” |
权重属性 |
要用于数据点权重的属性的名称 |
OutputBBox |
输出栅格的边界框和CRS |
输出宽度 |
输出栅格的宽度(以像素为单位 |
输出高度 |
输出栅格的高度(以像素为单位 |
13.2.4. DateOffsetProcess¶
这个 DateOffsetProcess
按输入时间段修改要素集合中的指定日期字段。
参数 |
描述 |
---|---|
数据 |
输入要素 |
日期字段 |
要修改的日期属性 |
时间偏移量 |
时间偏移量(例如P1D) |
13.2.5. HashAttributeProcess¶
这个 HashAttributeProcess
向每个SimpleFeature添加一个属性,该属性对已配置的属性取模于已配置的参数进行散列。
参数 |
描述 |
---|---|
数据 |
输入简单要素集合以运行散列过程 |
属性 |
要对其进行散列的属性 |
模数 |
除数 |
13.2.5.1. 散列示例(XML)¶
HashAttributeProcess_wps.xml
是Geoserver对GeoMesa HashAttributeProcess的WPS调用。它可以通过以下cURL调用运行:
curl -v -u admin:geoserver -H "Content-Type: text/xml" -d@HashAttributeProcess_wps.xml localhost:8080/geoserver/wps
查询应生成如下所示的结果 this
:
{
"id" : "d0971735-f8fe-47ed-a7cd-2e12280e8ac1",
"geometry" : {
"coordinates" : [
151.1554,
18.2014
],
"type" : "Point"
},
"type" : "Feature",
"properties" : {
"Vitesse" : 614,
"Heading" : 244,
"Date" : "2016-05-02T18:00:44.030+0000",
"hash" : 237,
"CabId" : 150002,
}
}
13.2.6. HashAttributeColorProcess¶
这个 HashAttributeColorProcess
向每个SimpleFeature添加一个属性,该属性对配置的属性取模配置的参数并发出颜色。
参数 |
描述 |
---|---|
数据 |
输入简单要素集合以运行散列过程 |
属性 |
要对其进行散列的属性 |
模数 |
除数 |
13.2.7. JoinProcess¶
这个 JoinProcess
根据第二个要素类型的属性查询要素类型。
参数 |
描述 |
---|---|
主要 |
正在查询的主要素集合 |
次要的 |
要连接的次要素集合 |
加入属性 |
要联接的属性字段 |
接合过滤器 |
要应用于连接要素的其他过滤器 |
属性 |
要返回的属性。属性名称应使用架构名称进行限定,例如foo.bar |
13.2.8. KNearestNeighborSearchProcess¶
这个 KNearestNeighborSearchProcess
使用第二个要素集合作为输入对要素集合执行K最近邻搜索。它又回来了 k
输入数据集中每个点的邻居。请注意,如果某个要素是输入数据集中多个点的最近邻,则只返回一次。
参数 |
描述 |
---|---|
输入功能 |
输入要素集合。要素的几何定义了KNN搜索 |
数据功能 |
要查询邻域的数据集 |
所需数量 |
|
估计距离 |
以米为单位的距离估计 |
最大搜索距离 |
最大搜索距离(以米为单位),用于防止对整个数据集的失控查询 |
13.2.8.1. K-最近邻示例(XML)¶
KNNProcess_wps.xml
是Geoserver对GeoMesa KNearestNeighborSearchProcess的WPS调用。在本例中,它与查询过程链接在一起(请参见 链接过程 ),以避免将查询特征作为数据返回。它可以通过以下cURL调用运行:
curl -v -u admin:geoserver -H "Content-Type: text/xml" -d@KNNProcess_wps.xml localhost:8080/geoserver/wps
13.2.9. Point2点进程¶
这个 Point2PointProcess
将点集合聚合为线段集合。
参数 |
描述 |
---|---|
数据 |
输入要素集合 |
分组字段 |
要分组的字段 |
排序字段 |
要排序的字段(必须为日期类型) |
最小点数 |
最小点数 |
一天突破 |
在日期标记上断开连接 |
过滤器奇点 |
过滤掉落在同一点上的线段 |
13.2.9.1. Point2Point示例(XML)¶
Point2PointProcess_wps.xml
是Geoserver对GeoMesa Point2PointProcess的WPS调用。它可以通过以下cURL调用运行:
curl -v -u admin:geoserver -H "Content-Type: text/xml" -d@Point2PointProcess_wps.xml localhost:8080/geoserver/wps
查询应生成如下所示的结果 this
:
{
"id" : "367152240-4",
"geometry" : {
"coordinates" : [
[
-13.4041,
37.8067
],
[
-13.4041,
37.8068
]
],
"type" : "LineString"
},
"type" : "Feature",
"properties" : {
"Date_end" : "2018-02-05T14:54:36.598+0000",
"CabId" : 367152240,
"Date_start" : "2018-02-05T14:53:58.078+0000"
}
}
13.2.10. ProximitySearchProcess¶
这个 ProximitySearchProcess
使用另一个要素集合作为输入对Geomesa要素集合执行邻近搜索。
参数 |
描述 |
---|---|
输入功能 |
定义邻近度搜索的输入要素集合 |
数据功能 |
要查询匹配要素的数据集 |
缓冲区距离 |
缓冲区大小(以米为单位 |
13.2.10.1. 邻近搜索示例(XML)¶
ProximitySearchProcess_wps.xml
是Geoserver对GeoMesa ProximitySearchProcess的WPS调用。它可以通过以下cURL调用运行:
curl -v -u admin:geoserver -H "Content-Type: text/xml" -d@ProximitySearchProcess_wps.xml localhost:8080/geoserver/wps
13.2.11. RouteSearchProcess¶
这个 RouteSearchProcess
查找沿路线行进的路线周围的要素,而不仅仅是跨越该路线。
参数 |
描述 |
---|---|
特征 |
要查询的输入要素集合 |
路线 |
可供搜索的路线。要素必须具有线串几何 |
缓冲区大小 |
用于搜索路径的缓冲区大小(以米为单位 |
标题阈值 |
比较标题的阈值,以度为单位 |
路由地理字段 |
将检查要匹配的路由的属性。必须是线条 |
风景场 |
将检查路由匹配的属性 |
双向 |
考虑路线的方向或仅考虑路线的路径 |
标题字段 |
将检查输入要素中的标题的属性。如果未提供,则输入要素几何必须为线串 |
13.2.11.1. 路线搜索示例(XML)¶
RouteSearchProcess_wps.xml
是Geoserver对GeoMesa RouteSearchProcess的WPS调用。它可以通过以下cURL调用运行:
curl -v -u admin:geoserver -H "Content-Type: text/xml" -d@RouteSearchProcess_wps.xml localhost:8080/geoserver/wps
13.2.12. SamplingProcess¶
这个 SamplingProcess
使用统计采样来减少查询返回的要素。
参数 |
描述 |
---|---|
数据 |
输入要素。 |
SamplePercent |
要返回的要素百分比,介于0和1之间。 |
穿线方式 |
用于链接要采样的关联要素的属性字段。 |
13.2.12.1. 采样示例(XML)¶
SamplingProcess_wps.xml
是Geoserver对GeoMesa SsamingProcess的WPS调用。它可以通过以下cURL调用运行:
curl -v -u admin:geoserver -H "Content-Type: text/xml" -d@SamplingProcess_wps.xml localhost:8080/geoserver/wps
13.2.13. StatsProcess¶
这个 StatsProcess
允许对给定功能集运行统计信息。
参数 |
描述 |
---|---|
特征 |
要查询的功能集。可以是原始文本输入、对远程URL、子查询或向量层的引用 |
状态字符串 |
指示要实例化哪些统计信息的Stat字符串-见下文 |
编码 |
返回编码为json的值。一定是 |
属性 |
收集统计信息之前要应用的属性/转换 |
13.2.13.1. 统计信息字符串¶
Stat字符串是一种GeoMesa领域特定语言(DSL),它允许为迭代器收集统计信息的规范。看见 统计查询 有关可用统计数据的解释,请参阅。
13.2.14. TrackLabelProcess¶
这个 TrackLabelProcess
返回单个要素,该要素是相关简单要素轨迹的开头。
参数 |
描述 |
---|---|
数据 |
输入要素 |
轨道 |
用于对要素进行分组的追踪属性 |
DTG |
用于排序曲目的日期属性 |
13.2.14.1. TrackLabel示例(XML)¶
TrackLabelProcess_wps.xml
是Geoserver对GeoMesa TrackLabelProcess的WPS调用。它可以通过以下cURL调用运行:
curl -v -u admin:geoserver -H "Content-Type: text/xml" -d@TrackLabelProcess_wps.xml localhost:8080/geoserver/wps
13.2.15. TubeSelectProcess¶
这个 TubeSelectProcess
performs a tube select on a Geomesa feature collection based on another feature collection. To get more informations on TubeSelectProcess
and how to use it, you can read this tutorial 。
参数 |
描述 |
---|---|
TubeFeature |
输入要素集合(必须具有几何图形和日期时间) |
功能集合 |
要查询匹配要素的数据集 |
滤器 |
要应用于FeatureCollection的过滤器 |
最大速度 |
非填充法和线填充法的物体最大速度,单位为m/S |
最大时间 |
无填充和行间隙填充方法的时间以秒为单位 |
缓冲区大小 |
要使用的缓冲区大小(以米为单位),而不是计算最大速度/最大时间 |
最大垃圾箱 |
用于将查询分解为单个查询的条柱数量 |
缝隙填充 |
填充缝隙的方法(非填充、线条) |
13.2.15.1. TubeSelect示例(XML)¶
TubeSelectProcess_wps.xml
是Geoserver对GeoMesa TubeSelectProcess的WPS调用。它可以通过以下cURL调用运行:
curl -v -u admin:geoserver -H "Content-Type: text/xml" -d@TubeSelectProcess_wps.xml localhost:8080/geoserver/wps
13.2.16. QueryProcess¶
这个 QueryProcess
将给定要素集的(E)CQL查询/过滤器作为文本对象,并将结果作为JSON对象返回。
参数 |
描述 |
---|---|
特征 |
|
滤器 |
<wps:ComplexData mimeType="text/plain; subtype=cql">
<![CDATA[some-query-text]]
</wps:ComplexData>
|
输出 |
<wps:ResponseForm>
<wps:RawDataOutput mimeType="application/json">
<ows:Identifier>result</ows:Identifier>
</wps:RawDataOutput>
</wps:ResponseForm>
对于交互式WPS请求构建器,选中生成框并选择“应用程序/json” |
属性 |
收集统计信息之前要应用的属性/转换。 |
13.2.16.1. 查询示例(XML)¶
QueryProcess_wps.xml
是对GeoMesa QueryProcess的Geoserver WPS调用,该调用执行与 Accumulo-quickstart 。它可以通过以下cURL调用运行:
curl -v -u admin:geoserver -H "Content-Type: text/xml" -d@QueryProcess_wps.xml localhost:8080/geoserver/wps
查询应生成如下所示的结果 this
:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-76.513,
-37.4941
]
},
"properties": {
"Who": "Bierce",
"What": 931,
"When": "2014-07-04T22:25:38.000+0000"
},
"id": "Observation.931"
}
]
}
13.2.17. UniqueProcess¶
这个 UniqueProcess
类针对GeoMesa进行了优化,以查找要素集合的唯一属性值,这些属性值将作为json对象返回。
参数 |
描述 |
---|---|
特征 |
|
属性 |
|
滤器 |
<wps:ComplexData mimeType="text/plain; subtype=cql">
<![CDATA[some-query-text]]
</wps:ComplexData>
|
直方图 |
|
分类 |
|
按计数排序 |
|
输出 |
<wps:ResponseForm>
<wps:RawDataOutput mimeType="application/json">
<ows:Identifier>result</ows:Identifier>
</wps:RawDataOutput>
</wps:ResponseForm>
对于交互式WPS请求构建器,选中生成框并选择“应用程序/json” |
13.2.17.1. 唯一示例(XML)¶
UniqueProcess_wps.xml
是Geoserver对GeoMesa UniqueProcess的WPS调用,它在受限边界框的Acumulo QuickStart数据的‘Who’字段中报告唯一的名称(-77.5,-37.5,-76.5,-36.5)。它可以通过以下cURL调用运行:
curl -v -u admin:geoserver -H "Content-Type: text/xml" -d@UniqueProcess_wps.xml localhost:8080/geoserver/wps
查询应生成如下所示的结果:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"value": "Addams",
"count": 37
},
"id": "fid--21d4eb0_15b68e0e8ca_-7fd6"
},
{
"type": "Feature",
"properties": {
"value": "Bierce",
"count": 43
},
"id": "fid--21d4eb0_15b68e0e8ca_-7fd5"
},
{
"type": "Feature",
"properties": {
"value": "Clemens",
"count": 48
},
"id": "fid--21d4eb0_15b68e0e8ca_-7fd4"
}
]
}
13.2.18. 链接过程¶
WPS流程可以链接在一起,使用一个流程的结果作为另一个流程的输入。例如,GeoMesa中的边界框 QueryProcess 可用于将数据发送到 StatsProcess 。 GeoMesa_WPS_chain_example.xml
将从AcumuloQuickStart表中获取位于指定边界框(-77.5、-37.5、-76.5、-36.5)内的所有点,并计算结果‘What’属性的描述性统计数据。
查询应生成如下所示的结果:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
0,
0
]
},
"properties": {
"stats": "{\"count\":128,\"minimum\":[29.0],\"maximum\":[991.0],\"mean\":[508.5781249999999],\"population_variance\":[85116.25952148438],\"population_standard_deviation\":[291.74691004616375],\"population_skewness\":[-0.11170819256679464],\"population_kurtosis\":[1.7823482287566166],\"population_excess_kurtosis\":[-1.2176517712433834],\"sample_variance\":[85786.46628937007],\"sample_standard_deviation\":[292.893267743337],\"sample_skewness\":[-0.11303718280959842],\"sample_kurtosis\":[1.8519712064424219],\"sample_excess_kurtosis\":[-1.1480287935575781],\"population_covariance\":[85116.25952148438],\"population_correlation\":[1.0],\"sample_covariance\":[85786.46628937007],\"sample_correlation\":[1.0]}"
},
"id": "stat"
}
]
}