使用转换器文件将CSV添加到Accumulo / GeoMesa

时间:2019-03-29 09:07:57

标签: accumulo geomesa

向GeoMesa / Accumulo堆栈中添加(空间)数据的最佳方法是什么?

(1)如果我理解正确,则应该创建一个SimpleFeature创建文件和转换器文件以便添加数据。数据本身存储为CSV。我是否正确,我们必须为要添加的每个CSV文件构建这些文件?

(2)下面的示例正确吗?例如,CSV文件中的几何图形存储如下。 “ MULTILINESTRING(((2.0116069 48.9172785,2.0116474 48.9172131,2.0117161 48.917135,2.011814 48.9170714,2.0118996 48.9170489))”

(3)我们如何在将数据添加到GeoMesa / Accumulo堆栈的过程中添加这些转换器文件?

最后的目标是要有一个(简单的)过程将数据添加到堆栈中,并在下一步中通过Geoserver打开数据。

欢迎任何帮助。预先感谢。

简单功能创建文件:

geomesa.sfts.links_geom = {
      attributes = [
        { name = "id", type = "Long" }
        { name = "length",     type = "Float" }
        { name = "number", type = "Integer" }
        ...
        { name = "geom", type = "MultiLineString", srid = 4326 }
      ]
} ```


Converter file:
geomesa.converters.links_geom = {
      type = "delimited-text",
      format = "CSV",
      id-field = "toString($id)",
      fields = [
        { name = "id", transform = "$1::long" }
        { name = "length",     transform = "$2::float" }
        { name = "number", transform = "$3::int" }
        ...
        { name = "geom", transform = "multilinestring($11)" }
      ]
}

1 个答案:

答案 0 :(得分:1)

没有将数据提取到GeoMesa中的“最佳”方法,这取决于您的特定用例。命令行工具提供了一个简单的入口点,但是更高级的场景可能使用Apache NiFi,像Apache Storm这样的流处理框架,或者像AWS Lambda这样的云原生工具。

GeoMesa是一个GeoTools数据存储,因此您可以使用DataStore API写入数据,而无需任何Converter定义。 geomesa-tutorials项目中有一些示例。但是,转换器提供了一种声明性的方式来定义您的数据类型,而无需任何代码。它们也可以在各种环境中重复使用,因此,如果您开发了用于CLI工具的Converter,则可以轻松地在其中使用相同的定义。 Apache NiFi,可让您根据需要扩展和迁移摄取内容。

通常,对于Converters,您确实需要为每种文件格式定义一个。 GeoMesa如here中所述为CSV文件提供类型推断,这可以让您无需转换器即可提取数据,或者至少提供可以根据需要进行调整的初始模板。 有关将转换器添加到类路径herehere的信息。

在开发初始Converter定义时,使用convert CLI命令可能会很有帮助,如here所述,错误模式可以“引发错误”。定义明确后,就可以继续进行摄取了。