向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)" }
]
}
答案 0 :(得分:1)
没有将数据提取到GeoMesa中的“最佳”方法,这取决于您的特定用例。命令行工具提供了一个简单的入口点,但是更高级的场景可能使用Apache NiFi,像Apache Storm这样的流处理框架,或者像AWS Lambda这样的云原生工具。
GeoMesa是一个GeoTools数据存储,因此您可以使用DataStore API写入数据,而无需任何Converter定义。 geomesa-tutorials项目中有一些示例。但是,转换器提供了一种声明性的方式来定义您的数据类型,而无需任何代码。它们也可以在各种环境中重复使用,因此,如果您开发了用于CLI工具的Converter,则可以轻松地在其中使用相同的定义。 Apache NiFi,可让您根据需要扩展和迁移摄取内容。
通常,对于Converters,您确实需要为每种文件格式定义一个。 GeoMesa如here中所述为CSV文件提供类型推断,这可以让您无需转换器即可提取数据,或者至少提供可以根据需要进行调整的初始模板。 有关将转换器添加到类路径here和here的信息。
在开发初始Converter定义时,使用convert
CLI命令可能会很有帮助,如here所述,错误模式可以“引发错误”。定义明确后,就可以继续进行摄取了。