arcgis字段帮助.docx

上传人:b****5 文档编号:4504592 上传时间:2022-12-01 格式:DOCX 页数:13 大小:45.59KB
下载 相关 举报
arcgis字段帮助.docx_第1页
第1页 / 共13页
arcgis字段帮助.docx_第2页
第2页 / 共13页
arcgis字段帮助.docx_第3页
第3页 / 共13页
arcgis字段帮助.docx_第4页
第4页 / 共13页
arcgis字段帮助.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

arcgis字段帮助.docx

《arcgis字段帮助.docx》由会员分享,可在线阅读,更多相关《arcgis字段帮助.docx(13页珍藏版)》请在冰豆网上搜索。

arcgis字段帮助.docx

arcgis字段帮助

arcgis字段帮助

ArcGIS10.1

定位主题

使用键盘输入值并不是编辑表中值的唯一方式。

在某些情况下,为了设置字段值,可能要对单条记录甚至是所有记录执行数学计算。

您可以对所有记录或选中记录执行简单计算和高级计算。

此外,还可以在属性表中的字段上计算面积、长度、周长和其他几何属性。

以下各部分包括使用字段计算器的若干示例。

计算可以通过Python或VBScript执行。

Python是ArcGIS建议使用的脚本语言。

如果要访问地理处理功能(包括要素几何),请使用

Python。

采用Python作为ArcGIS的脚本语言为执行计算提供了许多便利。

如果您具有使用VBA或VBScript的经验并且习惯了脚本语法,则请使用VBScript。

所保存的ArcGIS先前版本的.cal文件可以直接使用或者只需进行少量修改。

如果拥有使用ArcObjects的过去版本的VBA代码,则需要修改计算。

注:

Python将强制要求缩进作为语法的一部分。

请使用两个或四个空格来定义每个逻辑级别。

将语句块的开头和结尾对齐并且保持一致。

Python计算表达式字段将使用惊叹号(!

!

)括起。

命名变量时请注意,Python区分大小写,因此yield不同于Yield。

VBScript不允许显式声明任何数据类型,所有变量均属于隐式变量。

形如Dimxas

String的语句应该删除或简化为Dimx。

输入语句后,如果想将其写入文件,可单击保存。

加载按钮将提示您查找和选择一个现有的

计算文件。

简单计算

简单字符串示例

一系列Python字符串函数均支持使用字符串,包括capitalize、rstrip和replace。

将字段CITY_NAME中字符串的首字母大写。

!

CITY_NAME!

.capitalize()

去掉字段CITY_NAME中自字符串结尾起的所有空白区。

!

CITY_NAME!

.rstrip()

将字段STATE_NAME中出现的“california”全部替换为“California”。

!

STATE_NAME!

.replace("california","California")在Python中,字符串字段中的字符可以通过索引和分割操作进行访问。

索引操作将在索引

位置提取字符,而分割操作则会提取一组字符。

示例说明结果

第一个字符。

!

fieldname!

[0]"a"

倒数第二个字符。

!

fieldname!

[-2]"e"

第二、三、四和五个字符。

!

fieldname!

[1:

4]"bcd"

Python也支持使用%运算符的字符串格式。

将合并后的FieldA和FieldB以冒号分隔开。

"%s:

%s"%(!

FieldA!

!

FieldB!

常见Python字符串操作

VBScript字符串函数

一系列VBScript字符串函数均支持使用字符串,包括Left、InStr和Chr。

以下是“字

段计算器”中常用字符串函数的若干VBScript示例。

Left函数:

返回一个包含自字符串左侧起指定数量字符的变量(字符串型)。

MyStr=Left([MyField],1)

Right函数:

返回一个包含自字符串右侧起指定数量字符的变量(字符串型)。

MyStr=Right([MyField],1)

Mid函数:

返回一个包含字符串中指定数量字符的变量(字符串型)。

MyString="MidFunctionDemo"'CreatetextstringFirstWord=Mid(MyString,1,3)'Returns"Mid"LastWord=Mid(MyString,14,4)'Returns"Demo"MidWords=Mid(MyString,5)'Returns"FunctionDemo"InStr函数:

返回指定了一个字符串在另一个字符串中首次出现的位置的变量(长整型)。

MyPosition=InStr([address],"")

Replace函数:

返回一个字符串,在该字符串中,指定的子串已替换为另外一个子串若干次(次数已指定)。

NewString=Replace([comments],"#","!

")Chr函数:

返回一个包含与指定字符代码关联的字符的字符串。

'Replaceacarriagereturncharacterwithanexclamation

NewString=Replace([comments],chr(13),"!

")

&运算符:

对两个表达式强制执行字符串串联。

MyStr=[MyField1]&""&[MyField2]

简单数学示例

Python提供了处理数字的工具。

Python也支持一些数字和数学函数,包括math、cmath、decimal、random、itertools、functools和operator。

运算符说明示例结果

x加上yx+y1.5+2.54.0

x减去yx-y3.3-2.21.1

x乘以yx*y2.0*2.24.4

x除以yx/y4.0/1.253.2

x除以y(向下取整除法)x//y4.0/1.253.0

x模yx%y8%32

x的负数表达式-xx=5-5

-x

x不变+xx=55

+x

以x为底,以y为指数的幂x**y2**38乘法

!

Rank!

*2

根据给定的半径字段计算球体的体积。

4/3*math.pi*!

Radius!

**3

使用Python表达式执行字段计算时,Python数学法则有效。

例如,两个整型值相除将始

终产生整型输出(3/2=1)。

要获得小数输出:

参加运算的数之一必须为小数值:

3.0/2=1.5,使用float函数将值明确转换为浮点型:

float(3)/2=1.5

float(!

Population!

)/!

Area!

将Python用作计算器

Python内置函数

Python具有多个可用的内置函数,包括max、min、round和sum。

Python内置函数

通过字段列表计算每条记录的最大值。

max([!

field1!

!

field2!

!

field3!

])通过字段列表计算每条记录的总和。

sum([!

field1!

!

field2!

!

field3!

])使用代码块

通过Python表达式和“代码块”参数可执行以下操作:

在表达式中应用任意Python函数。

访问地理处理函数和对象。

访问要素几何的属性。

访问新的随机值运算符。

根据if-then-else逻辑对值进行重分类。

使用其他地理处理工具。

代码块的使用方式取决于所用的解析程序。

“计算字段”支持Python和VBScript解析程序。

解析程序代码块

支持Python函数。

代码块将使用Python函数(def)表示。

在适当的情况下,Python

几何属性将通过地理处理对象表示(如点对象)。

VB脚计算将通过VBScript执行。

各Python函数可通过def关键字定义,关键字后为函数的名称以及函数的输入参数。

可编写Python函数,使Python函数能够接受任何数量的输入参数(也可以没有任何参数)。

函数将通过return语句返回值。

函数名称可由您自行选取(不得使用空格,也不得以数字开头)。

注:

请牢记,Python强制要求将缩进作为语法的一部分。

请使用两个或四个空格来定义每个逻辑级别。

将语句块的开头和结尾对齐并且保持一致。

代码实例-math

将字段的值四舍五入为保留两位小数。

Expression:

round(!

area!

2)

Parser:

Python

通过math模块将米转换成英尺。

以转换值为底,以2为指数进行幂运算,然后再乘以area。

Parser:

Python

Expression:

MetersToFeet((float(!

shape.area!

)))

CodeBlock:

defMetersToFeet(area):

returnmath.pow(3.2808,2)*area

通过Python逻辑计算字段

按照字段值进行分类。

Parser:

Python

Expression:

Reclass(!

WELL_YIELD!

CodeBlock:

defReclass(WellYield):

if(WellYield>=0andWellYield<=10):

return1

elif(WellYield>10andWellYield<=20):

return2

elif(WellYield>20andWellYield<=30):

return3

elif(WellYield>30):

return4

通过VBScript逻辑计算字段

基于表达式的值附有条件地执行一组语句。

Parser:

VBScript

Expression:

density

CodeBlock:

Dimdensity

If[POP90_SQMI]<100Thendensity="low"

elseif[POP90_SQMI]<300Then

density="medium"

else

density="high"

endif

代码实例-几何

注:

有关转换几何单位的详细信息,请参阅以下“几何单位转换”一节。

计算某要素的面积。

Parser:

Python

Expression:

!

shape.area!

计算某要素的最大X坐标。

Parser:

Python

Expression:

!

shape.extent.XMax!

计算某要素中的折点数。

Parser:

Python

Expression:

MySub(!

shape!

CodeBlock:

defMySub(feat):

partnum=0

#Countthenumberofpointsinthecurrentmultipartfeature

partcount=feat.partCount

pntcount=0

#Enterwhileloopforeachpartinthefeature(ifasinglepartfeature

#thiswilloccuronlyonce)

#

whilepartnum

part=feat.getPart(partnum)

pnt=part.next()

#Enterwhileloopforeachvertex

#

whilepnt:

pntcount+=1

pnt=part.next()

#Ifpntisnull,eitherthepartisfinishedorthereisan

#interiorring

#

ifnotpnt:

pnt=part.next()

partnum+=1

returnpntcount

将点要素类中每个点的x坐标平移100。

Parser:

Python

Expression:

shiftXCoordinate(!

SHAPE!

CodeBlock:

defshiftXCoordinate(shape):

shiftValue=100

point=shape.getPart(0)

point.X+=shiftValue

returnpoint

几何单位转换

几何字段的形状和长度属性可通过表示为带有@符号的单位类型进行修改。

面积测量单位关键字:

英亩|公亩|公顷|平方厘米|平方分米|平方英寸|平方英尺|平方千

米|平方米|平方英里|平方毫米|平方码|平方地图单位|未知,线性测量单位关键字:

厘米|十进制度|分米|英尺|英寸|千米|米|英里|毫米|海里|

磅|未知|码

注:

如果数据存储在地理坐标系中且具有线性单位(例如英尺),则会通过测地线算法转换长

度计算的结果。

警告:

转换地理坐标系中数据的面积单位会产生不正确的结果,这是由于沿globe的十进制度

并不一致。

计算某要素的长度(以码为单位)。

Parser:

Python

Expression:

!

shape.length@yards!

计算某要素的面积(以英亩为单位)。

Parser:

Python

Expression:

!

shape.area@acres!

代码实例-日期

计算当前日期。

Parser:

Python

Expression:

time.strftime("%d/%m/%Y")计算当前日期和时间。

Parser:

Python

Expression:

time.strftime("%d/%m/%Y%H:

%M")

代码实例-字符串

返回最右侧三个字符。

Parser:

Python

Expression:

!

SUB_REGION!

[-3:

]

将任意一个大写“P”替换为小写“p”。

Parser:

Python

Expression:

!

STATE_NAME!

.replace("P","p")通过空格分隔符串连两个字段。

Parser:

Python

Expression:

!

SUB_REGION!

+""+!

STATE_ABBR!

转换为正确的大小写形式

下列各例显示的是转换单词的不同方法,这些方法可使每个单词的首字母变为大写、其余字母变为小写。

Parser:

Python

Expression:

''.join([i.capitalize()foriin!

STATE_NAME!

.split('')])

Parser:

Python

Expression:

string.capwords(!

STATE_NAME!

'')

CodeBlock:

importstring

Parser:

Python

Expression:

MySub(!

STATE_NAME!

CodeBlock:

defMySub(myfieldname):

importstring

returnstring.capwords(myfieldname,'')

正则表达式

Python的re模块提供了正则表达式匹配操作,可用于对字符串执行复杂的模式匹配和替换

规则。

re–正则表达式操作正则表达式的用法

用单词“Street”替换“St”或“St.”,在字符串的末尾生成新单词。

Parser:

Python

Expression:

update_street(!

ADDRESS!

CodeBlock:

importre

defupdate_street(street_name):

returnre.sub(r"""\b(St|St.)\Z""",

'Street',

street_name)

累加计算和顺序计算

根据某间隔值计算顺序ID或数字。

Parser:

Python

Expression:

autoIncrement()

CodeBlock:

rec=0

defautoIncrement():

globalrec

pStart=1#adjuststartvalue,ifreq'd

pInterval=1#adjustintervalvalue,ifreq'd

if(rec==0):

rec=pStart

else:

rec=rec+pInterval

returnrec

计算数值型字段的累加值。

Parser:

Python

Expression:

accumulate(!

FieldA!

CodeBlock:

total=0

defaccumulate(increment):

globaltotal

iftotal:

total+=increment

else:

total=increment

returntotal

计算数值型字段的百分比增量。

Parser:

Python

Expression:

percentIncrease(float(!

FieldA!

))

CodeBlock:

lastValue=0

defpercentIncrease(newValue):

globallastValue

iflastValue:

percentage=((newValue-lastValue)/lastValue)*100

else:

percentage=0

lastValue=newValue

returnpercentage

随机值

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

Parser:

Python

Expression:

getRandomValue()

CodeBlock:

importnumpy.randomasR

defgetRandomValue():

returnR.random()

计算空值

使用Python表达式,可通过PythonNone来计算空值。

注:

仅当该字段为空时,才可以进行以下计算。

使用PythonNone计算空值。

Parser:

Python

Expression:

None

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 判决书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1