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')" },
]
}