ArcMap 字段计算器(Field Calculator)的使用总结

本文介绍如何利用Python进行GIS数据处理中的字段计算,包括固定字符串写入、URL构造、字段自增、数值累加、随机数生成、字段值组合、字符串操作、几何体计算等实用技巧。
该文章已生成可运行项目,

1.某一个字段写入 固定字符串         

----选择python,字符串

gxsj="2018-06-25"

点击确定。

2.根据ID字段填写URL字段

----新建url字段,类型为文本类型,简单模式下选择Python脚本

----输入表达式:"assets/imgs/M2U004"+str(int( !ID! %26+30))+".jpg"

----其中%为取余;int为取整;str为数值转字符。

3.高级模式

4.注意python语法之缩进问题,字段类型要与返回结果类型一致。

5.实现ID字段自增:注意缩进语法

----Python   #程序语言
----Code Block:        #下面这部分是具体实现,注意在放字段计算器时只需要下面这部分 
rec=0 
def autoIncrement():     #定义方法名 
global rec 
pStart = 1    #初始值, 可以调整  
pInterval = 1    #自增间隔, 可以调整 
if (rec == 0): 
    rec = pStart   
else: 
    rec = rec + pInterval 
return rec 

---表达式
autoIncrement()   #表达式方法

6.计算数值型字段的累加值

-----Python
-----Code Block:           #下面这部分是具体实现,注意在放字段计算器时只需要下面这部分 
total = 0 
def accumulate(increment): 
global total 
if total: 
    total += increment 
else: 
    total = increment 
return total

----表达式
accumulate(!FieldA!)      #该函数需要输入字段做参数

7.通过 numpy 站点包来计算 0.0 和 1.0 之间的随机浮点值

----Python

---Code Block: 
import numpy.random as R

def getRandomValue(): 
    return R.random() 

----表达式
getRandomValue()

8.根据其他字段的值给这个字段赋值:

def cal (YB,SB):
    return YB+SB


BM =
cal(!BDCDYH_YB!,!BDCDYH_SB!)

##########
YB和SB是一个二选一的字段,预编有字符串的话,实编就为null,需求是把它们两个合成一个字段BM,
那就定义一个函数把它们结合起来就可以了
##########

或者简单一点:
BM =
!BDCDYH_YB!+!BDCDYH_SB!

 

9.字符串截取

----在字段计算器内选择Python
----截取前面两位字符串:!BM![0:2]

----从第3位开始截取后面的字符串:!BM![3:]    ---即把前面3个中文字符删除

#去除字符中间的其他符号
!BM![:4]+!BM![5:7]+!BM![7:11]

10.几何体计算    

计算图斑面积:!Shape.Area!    #单位是  平方米

质心X坐标:!Shape.CENTROID.X!

质心Y坐标:!Shape.CENTROID.Y!

将平方米转换为平方公里:!Area! /1000000

11.整数(int)转换为字符串(str)

----在字段计算器内选择Python,选择字符串

----输入str(!整数字段的名字!)

12.字符串截取、连接、赋值等

------定义函数
dm_1=""
def test(dm):
    if dm[4:6] == "83":
        dm_1 = dm[0:4] + "18" +dm[6:]
    elif dm[4:6] == "84":
        dm_1 = dm[0:4] + "17" +dm[6:]
    elif dm[4:6] == "16":
        dm_1 = dm[0:4] + "12" +dm[6:]
    else:
        dm_1 = dm
    return dm_1

-----表达式
test(!xzqhdm!)

13.字符串与日期字段的转换

   需要使用到python中time和datetime包,这两个包的使用,请参考:python中time和datetime

-----字段计算器,高级模式,选择Python
-----定义函数
def str_to_datetime(str):
   if str =="_":   ----因为日期字符串里面有这种非法字段
         d=datetime.datetime.strptime('2018-07-30 00:00:00','%Y-%m-%d %H:%M:%S')
   else:
         d= datetime.datetime.strptime(str,'%Y-%m-%d %H:%M:%S')
   return d


----调用函数
str_to_datetime( !TFSJ! )


PS:开始总是转换不成功,报错,后来才发现日期字符串是这样的:'2018-05-15 11:10:56.0'
即后面多了一个.0
-----浪费了一个上午,才发现这个问题

 

 

本文章已经生成可运行项目
在GIS软件(如ArcGIS)中,字段计算器Field Calculator)是用于对属性表中的字段进行计算的强大工具。要使用字段计算器计算地理要素的面积,需根据数据的几何类型和存储方式选择合适的方法。以下是几种常见的方法和步骤: ### 1. 使用Python表达式计算面积 如果数据是以地理坐标系(如WGS84)存储的,通常需要先将其投影到合适的投影坐标系中,以确保面积计算的准确性。在字段计算器中可以使用Python表达式来调用几何对象的面积属性。 ```python !shape.area! ``` 该表达式会返回要素的面积,但前提是数据必须是以投影坐标系(单位为米或其他线性单位)存储的多边形数据。如果数据是点或线,则无法直接计算面积[^2]。 ### 2. 使用Calculate Geometry Attributes工具 ArcGIS Pro和ArcMap中提供了“Calculate Geometry Attributes”工具,可以直接在属性表中新增字段并计算面积。操作步骤如下: 1. 打开属性表,添加一个新字段(如“Area”)用于存储面积值。 2. 右键点击该字段,选择“Calculate Geometry”。 3. 在弹出的对话框中,选择“Area”作为属性,并选择合适的单位(如平方米、公顷等)。 4. 点击“OK”完成计算。 这种方法不需要编写任何表达式,适合对非专业人士或快速计算使用[^1]。 ### 3. 自定义表达式计算面积 如果需要进行单位转换或使用特定的计算逻辑,可以在字段计算器使用Python脚本编写自定义表达式。例如,将面积从平方米转换为公顷: ```python !shape.area@HECTARES! ``` 或者使用更复杂的逻辑进行条件判断和计算: ```python def calcArea(shape): return shape.area / 10000 # 转换为公顷 ``` 然后在字段计算器中调用该函数: ```python calcArea(!shape!) ``` 这种方法适用于需要灵活控制计算过程的场景[^2]。 ### 4. 使用地理数据库中的自动面积字段 在某些地理数据库(如File Geodatabase)中,可以设置字段的属性为“Area”类型,系统会自动维护该字段的面积值。这种方式适用于长期维护和更新数据的应用场景,减少了手动计算的工作量。 ---
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值