今天我们来学习一下关于字段映射方面的知识,来看一下esri关于字段映射的介绍。
FieldMappings 对象是一组 FieldMap 对象,它用作执行字段映射的工具的参数值,如 Merge。要处理这些对象,最简单的方法就是先创建 FieldMappings 对象,然后通过添加要组合的输入要素类或表对 FieldMap 对象进行初始化。提供了所有输入后,FieldMappings 对象将为所有输入中的每个唯一字段名提供一个 FieldMap 对象或输出字段。可对此列表进行修改,具体方法有添加新字段、更改输出字段的属性和/或内容,或移除任何不需要的输出字段。
FieldMap 对象的属性包括输入文本值的起始位置和结束位置,因此可以使用一组输入值创建新的输出值。如果 FieldMap 对象包含多个来自同一表或要素类的输入字段,则将使用 mergeRule 属性合并每个记录的值。这样可以方便地连接各个值,例如保存在一个字段中的街道名称以及保存在另一个字段中的街道类型,如 Eureka 和 Street。如果将 mergeRule 的值指定为 Join,则使用 FieldMap 的 joinDelimiter 属性。任何字符集(如空格)都可用作分隔符。在以上示例中,将会创建值 Eureka Street。
在我看来字段映射是对字段的操作,然后重新整合,按照一定的规则,做出我们需要的数据,然后写到我们的字段中。这种规则可以是对我们加入到的字段映射中的字段,进行格式输出,求平均,最大,最小等值的输出。而我们今天呢,是利用字段映射将一个图形对象(geometry)的面积和长度,求平均然后输出到我们目标文件中。下面我们来看一下我们的测试数据。对应有Shape_Leng和Shape_Area,最终得到结果是两个值的之和的平均值,即value=(Shape_Leng+Shape_Area)/2,当然用户可以按照需要,设置某一个特定的规则。
下面我们来编写一下代码。
import arcpy
out_path="D:/Data/polylineTest"
in_polygon=r"D:\OpenGISProject\qqgroup\Geoserver\Project_1\polygon\lianhua.shp"
out_name="test2.shp"
fm_cac = arcpy.FieldMap()
fm_average = arcpy.FieldMap()
fms = arcpy.FieldMappings()
fms = arcpy.FieldMappings()
Field_Shape_Leng = "Shape_Leng"
Field_Shape_Area = "Shape_Area"
#加入需要映射的字段
fm_cac.addInputField(in_polygon,Field_Shape_Leng)
fm_cac.addInputField(in_polygon,Field_Shape_Area)
fm_cac.mergeRule = 'Mean'
fms.addFieldMap(fm_cac)
#fm_average.addInputField(in_polygon, "Mean")
#要素输出
arcpy.FeatureClassToFeatureClass_conversion(
in_polygon, out_path, out_name, field_mapping=fms)
print "finished"
最后,在我们另外一个创建的out_name即test2.shp文件中,的数据如下所示。可以看得得出,字段映射对原有的数据不产生影响
更多内容,请微信扫二维码关注公众号,或者加入arcpy开发qq学习群:487352121