ArcMap中对矢量数据某个字段进行归一化

部署运行你感兴趣的模型镜像

背景:由于在做网格统计的时候需要对数据进行归一化统计,但是使用自带的字段计算器计算的值往往不是所有的值,而是前几位,因此在进行手动归一化处理的时候,归一化值不会达到真实值。比如笔者在进行格网路网密度计算后,希望对路网密度进行归一化,但出来的值有差,如最大值的归一化值是0.99379,并不精确。

解决:

本次使用arcpy代码进行处理。

归一化公式:(x - min) / (max - min)

根据归一化公式,输入arcpy代码,并在arcmap python 工具中运行,得到准确的结果。

import arcpy

fc = "roads_join"  #图层
field = "density" #字段
out_field = "NormValue"

vals = [r[0] for r in arcpy.da.SearchCursor(fc, [field]) if r[0] is not None]
min_val, max_val = min(vals), max(vals)

if out_field not in [f.name for f in arcpy.ListFields(fc)]:
    arcpy.AddField_management(fc, out_field, "DOUBLE")

with arcpy.da.UpdateCursor(fc, [field, out_field]) as cursor:
    for row in cursor:
        val = row[0]
        norm = (val - min_val) / (max_val - min_val) if max_val != min_val else 0
        row[1] = norm
        cursor.updateRow(row)

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值