13. GeoMesa过程

以下分析过程在GeoMesa数据存储上可用并进行了优化,可在 geomesa-process 模块:

在可能的情况下,计算被推送到分布式系统以获得更快的性能。目前,这已在Acumulo数据存储中实现,部分在HBase数据存储中实现。其他后端仍可使用,但将使用本地处理。

13.1. 安装

虽然它们可以单独使用,但常见的用例是与Geoserver一起使用。要在Geoserver中部署它们,需要:

  1. 一个GeoMesa数据存储插件

  2. 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搜索

数据功能

要查询邻域的数据集

所需数量

k ,要返回的最近邻的数量

估计距离

以米为单位的距离估计 k -第4个最近邻域,用于初始查询窗口

最大搜索距离

最大搜索距离(以米为单位),用于防止对整个数据集的失控查询

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的值。一定是 truefalse ;空值不起作用

属性

收集统计信息之前要应用的属性/转换

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对象返回。

参数

描述

特征

要查询的数据源要素集合。引用内容为 store:layername

对于XML文件,请输入 <wfs:Query typeName=store:layername /> 对于交互式WPS请求构建器,请选择 VECTOR_LAYER 选择(&C) store:layername

滤器

要应用于要素集合的过滤器。

对于XML文件,请输入:

<wps:ComplexData mimeType="text/plain; subtype=cql">
   <![CDATA[some-query-text]]
</wps:ComplexData>
对于交互式WPS请求构建器,选择文本并选择 "text/plain; subtype=cql"

在文本框中输入查询文本

输出

指定输出要素集合的显示方式。

对于XML文件,请输入:

<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对象返回。

参数

描述

特征

要查询的数据源要素集合。引用内容为 store:layername

对于XML文件,请输入 <wfs:Query typeName=store:layername /> 对于交互式WPS请求构建器,请选择 VECTOR_LAYER 选择(&C) store:layername

属性

将为其提取唯一值的属性。属性表示为字符串。

对于XML文件,请输入 <wps:LiteralData>attribute-name</wps:LiteralData>

滤器

要应用于要素集合的过滤器。

对于XML文件,请输入:

<wps:ComplexData mimeType="text/plain; subtype=cql">
   <![CDATA[some-query-text]]
</wps:ComplexData>
对于交互式WPS请求构建器,选择文本并选择 "text/plain; subtype=cql"

在文本框中输入查询文本。

直方图

创建属性值的直方图。表示为布尔值(True/False)。

对于XML文件,请输入 <wps:LiteralData>true/false</wps:LiteralData>

分类

对结果进行排序。表示为字符串;允许的值为ASC或DESC。

对于XML文件,请输入 <wps:LiteralData>ASC/DESC</wps:LiteralData>

按计数排序

按直方图计数而不是按属性值排序。表示为布尔值(True/False)。

对于XML文件,请输入 <wps:LiteralData>true/false</wps:LiteralData>

输出

指定输出要素集合的显示方式。

对于XML文件,请输入:

<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 可用于将数据发送到 StatsProcessGeoMesa_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"
    }
  ]
}