9.12. Shapefile转换器

Shapefile转换器处理shapefile。要使用shapefile转换器,请指定 type = "shp" 在您的转换器定义中。

9.12.1. 配置

除了基本转换器默认设置外,Shapefile转换器没有任何配置。但是,由于shapefile是文件的集合,而不是单个输入,因此必须遵守一些约束。

Shapefile转换器在分布式转换器作业中不可用,因为映射/还原范例不能很好地处理组成Shapefile的相关文件的集合。此外,使用shapefile转换器时,在求值上下文中设置输入文件路径非常重要。这由GeoMesa CLI工具自动处理,但如果以编程方式使用 "inputFilePath" 必须在评估上下文全局参数中设置。

9.12.2. Shapefile变换函数

这个 transform 元素支持使用列号引用输入shapefile中的每个属性 $$0 指要素ID,则第一个属性为 $1 每个属性都将根据shapefile的模式进行类型化。

此外,输入shapefile的属性可以使用 shp 功能。功能ID可以通过使用 shpFeatureId 功能。

中的标准函数 变换函数概述 可以正常使用。

9.12.2.1. 小水电

为了便于使用,这将按名称访问shapefile中的属性,例如 shp('my_attribute') 。请注意,如上所述,属性也可以通过数字引用。

9.12.2.2. ShpFeatureID

为了便于使用,这将访问当前shapefile功能的功能ID,例如 shpFeatureId 。请注意,要素ID也可由引用 $0 ,如上所述。

9.12.3. 用法示例

此示例用于Tiger US States边界文件,可从 US Census Bureau

Shapefile具有以下列:

*the_geom:MultiPolygon,STATEFP:String,STATENS:String,AFFGEOID:String,GEOID:String,STUSPS:String,NAME:String,LSAD:String,ALAND:Long,AWATER:Long

我们将使用以下SimpleFeatureType仅考虑其中的一个子集:

geomesa.sfts.cb_2017_us_state_20m = {
  attributes = [
    { name = "name",    type = "String"       }
    { name = "usps",    type = "String"       }
    { name = "area",    type = "Long"         }
    { name = "geom",    type = "MultiPolygon" }
  ]
}

您可以使用以下转换器进行摄取:

geomesa.converters.cb_2017_us_state_20m = {
  type     = "shp"
  id-field = "$0"
  fields = [
    { name = "name", transform = "$7" }, // example of lookup by field number
    { name = "usps", transform = "shp('STUSPS')" }, // example of lookup by name
    { name = "area", transform = "add(shp('ALAND'),shp('AWATER'))" },
    { name = "geom", transform = "shp('the_geom')" },
  ]
}