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

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
-----浪费了一个上午,才发现这个问题

 

 

  • 15
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值