(三十九)arcpy开发&利用字段映射(FieldMapping)求多个字段的平均值

今天我们来学习一下关于字段映射方面的知识,来看一下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

                                                                 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yGIS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值