9.1. 转换器基础知识

转换器和SimpleFeatureTypes定义为 HOCON 档案。GeoMesa使用 TypeSafe Config 库来加载配置文件。实际上,这意味着应该在一个名为 application.conf and placed at the root of the classpath. In the GeoMesa tools distribution, the files can be placed in the conf folder. See Standard Behavior 有关TypeSafe如何加载文件的详细信息。

9.1.1. 定义简单要素类型

在GeoTools中,SimpleFeatureType定义数据的模式。它类似于定义SQL数据库表,因为它由强类型、有序、命名的属性(列)组成。转换器库支持中定义的SimpleFeatureTypes HOCON 。SimpleFeatureTypes应作为对象写入路径下 geomesa.sfts

SimpleFeatureType的名称将是HOCON元素的名称(例如,下面的‘Example’),也可以用 type-name

SimpleFeatureType定义由 attributes 数组和一个可选的 user-data 一节。

attributes 是列定义的数组,每个列定义必须包含一个 name 以及一个 type 。看见 GeoTools要素类型 用于支持的类型。看见 保留字 用于不受支持的名称。这两个键之外的任何其他键都将设置为用户数据,并可用于配置各种属性级别的选项。

这个 user-data 元素由将在用户数据中为SimpleFeatureType设置的键-值对组成。这可用于配置各种架构级选项。

看见 索引配置 有关可用配置选项的详细信息,请参阅。

示例::

geomesa = {
  sfts = {
    example = {
      type-name = "example"
      attributes = [
        { name = "name", type = "String", index = true }
        { name = "age", type = "Integer" }
        { name = "dtg", type = "Date", default = true }
        { name = "geom", type = "Point", default = true, srid = 4326 }
      ]
      user-data = {
        option.one = "value"
      }
    }
  }
}

此示例相当于以下规范字符串:

SimpleFeatureTypes.createType("example",
    "name:String:index=true,age:Integer,dtg:Date:default=true,*geom:Point:srid=4326;option.one='value'")

9.1.2. 定义转换器

转换器定义源数据(CSV、JSON、XML等)和SimpleFeatureType之间的映射。转换器接受作为输入源文件,并输出GeoTools SimpleFeature,然后可以将其写入GeoMesa。因此,每个转换器对应于单个SimpleFeatureType,尽管每个SimpleFeatureType可能有多个转换器。转换器库支持中定义的转换器 HOCON 。转换器应作为对象写入路径下 geomesa.converters

转换器通常使用 type 以及一个 fields 数组。或者,它们可以定义一个 id-fielduser-data 和配置 options

这个 type 元素指定转换器的类型,例如‘delimated-Text’或‘json’。特定的转换器将具有此处未介绍的其他选项。看见 GeoMesa转换器 有关可用类型的详细信息,请参阅。

这个 fields 数组定义由转换器创建的属性。每个字段都包含一个 name 和一个可选的 transform 。特定转换器支持其他字段选项;有关详细信息,请参阅每种转换器类型的文档。

如果 name 字段的属性与 name SimpleFeatureType属性,则在转换为SimpleFeatureType时将其设置为该属性。可以定义中间字段以构建复杂属性,并且可以在其他字段中按名称引用。

这个 transform 可用于引用其他字段或修改从源数据提取的原始值。可以使用名称引用其他字段 $ 表示法;例如, $age 引用名为‘AGE’的字段。可以使用方括号引用带句点或空格的字段名称,例如 ${my.age} 。转换还可以包括函数调用。GeoMesa包含各种有用的转换函数,并支持从类路径加载自定义函数。看见 变换函数概述 了解更多细节。

这个 id-field 元素将设置SimpleFeature的功能ID。它接受通常位于字段中的任何值 transform ,因此它可以引用其他字段并调用转换函数。一种常见模式是将整个输入记录的哈希用于 id-field ;这样,如果多次摄取相同的数据,则特征ID是一致的。如果 id-field 忽略,则GeoMesa将为每个要素生成随机的UUID。

这个 user-data 元素支持将在用户数据中为每个SimpleFeature设置的任意键-值对。例如,它可以用于 数据安全

这个 options 元素支持分析和验证行为。看见 解析和验证 了解更多细节。