ArcGIS统改属性.docx
- 文档编号:10382722
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:17
- 大小:135.11KB
ArcGIS统改属性.docx
《ArcGIS统改属性.docx》由会员分享,可在线阅读,更多相关《ArcGIS统改属性.docx(17页珍藏版)》请在冰豆网上搜索。
ArcGIS统改属性
ArcMap修改属性值(ArcGIS统改属性)
结合了网上和论坛的一些帖子,以及之前看的一些资料,整理了一下,如果还有新的方法,就共同分享吧。
首先推荐
法一:
选择特定要素修改其属性值
打开编辑器>开始编辑>选择编辑器工具条上“属性“按钮,打开属性对话框
即看到属性对话框,窗口可以停靠到ArcMap应用,同时默认垂直布局。
(Arcgis10的界面)
在正式开始之前,我们还需要设置显示字段容(关于现实标注请看三楼),为后面方便选择要素做准备:
右键图层属性>显示选项卡>表达式:
在表达式对话框中编写表达式:
我用"属性+编号:
"&[属性]&"/"&[编号]作为我的表达式,一会就可以看到效果:
如上图:
每个被选的要素显示的都是前面的文字提示所显示的字段名和字段值。
我们选择一个要素类,则看到:
如果选择两个或多个要素类:
按下CTRL+鼠标左键,同时选中刚才选择的两个或多个要素
(发现,相同属性值的部分会显示他们共同的值,不同的就会空白显示),我们在字段名“编号”后的空白文本框中输入“西北向“,回车确认。
如下:
(编号都变成西北向)
如果要从N多个(或全部)所选的要素中选出符合需要的要素,按字母顺序或者图层顺序排列。
再同上步一样,按住CTRL+鼠标左键,选择符合条件要素。
在下面的属性文本框中统一更改属性值。
法二:
SQL直接访问属性表:
详见帖子
bbs.esrichina-
法三:
实现arcmap中如何实现某一字段的增量赋值如“id从1开始自动填充到100”
bbs.esrichina-
法四:
直接对文件编辑
常用的格式为shp和mdb;
Shp文件可直接打开dbf进行编辑,常用的在excel里编辑,编辑完成后保存为dbf3格式。
【在excel里编辑需要注意几点:
1由于有些情况需要对表格排序,排序后会导致shp文件属性错乱,所以编辑前最好添加一个序号,再最后编辑完成后再按该序号排序,是记录顺序恢复到打开状态。
删除该字段。
】
Mdb则可直接在access里编辑
请见:
法五:
字段计算器(fieldcalculator)
打开属性表,在字段上点右键,有个fieldcalculator(要在编辑状态下才能实现)
如将某一字段值的容复制到另一字段值中:
前提条件:
两个字段的字段属性须遵循一定的规则(短整型、长整形、双精度、单精度都可向文本复制,但是文本复制不到数值中,多尝试几次)
1.
一个字段的值全部复制到另一个字段值中操作,
详见该贴的叙述:
bbs.esrichina-
2.
只复制其中的几个字段值,或只给某些特定属性的其他字段值统一赋值(即统改属性)
具体见楼下的:
指定计算表达式
指定计算表达式
此对话框允许您通过指定一个计算表达式来计算字段的值。
如果当前在表中选择了一些记录,则只会计算所选记录。
可以直接在框中输入表达式,或者通过单击对话框中的字段、函数和运算符将它们添加到框中。
在字段计算表达式中:
-当使用VBScript时,字段用方括号([])括起,而对于Python,则使用惊叹号(!
!
)括起。
这些字段标记并不显示在“字段计算器”对话框列出的“字段”中,但双击某个字段将其添加到表达式中时,会自动将这些字段标记添加到表达式中字段名的两侧。
-文本字符串用双引号括起:
"文本"。
如何在计算表达式中使用函数
可以在定义的计算表达式中包含任何VBScript或Python的数值、字符串或日期函数。
对话框中列出了当前所选数据类型的常用函数。
例如,以下计算表达式对数值字段使用INT()函数以返回名为DIST_MILES的数值字段中数字的整数部分:
INT([DIST_MILES])
而以下计算表达式则对字符串字段使用Python的replace()函数以将名为CODE的文本字段中出现的所有小写“p”用大写“P”替换:
!
CODE!
.replace("p","P")
文本串联运算符(&)可以与文本字段和字符串函数一起使用。
例如,以下表达式采用名为Name的文本字段中的字符串,并将其与名为CODE的文本字段中字符串最左边的三个字符串联:
[NAME]&Left([CODE],3)
要了解此对话框中列出的VBScript函数的用法,请参阅MicrosoftDeveloperNetwork在线帮助,网址为:
msdn.microsoft./en-us/library/3ca8tfek(VS.85).aspx
要了解此对话框中列出的Python函数的用法,请参阅在线Python帮助和教程,网址为:
docs.python.org/tutorial/introduction.html#strings
docs.python.org/tutorial/introduction.html#numbers
docs.python.org/tutorial/stdlib.html#dates-and-times
有关附加信息,可通过在Desktop帮助的“搜索”选项卡中输入“计算字段示例”来搜索Desktop帮助中的此主题。
有关常见转换常量的列表,可通过在Desktop帮助的“搜索”选项卡中输入“关于设置距离单位”来搜索此主题,然后查找该主题中可启动转换常量表的。
如何在计算表达式中使用Python代码
选中显示代码块复选框以输入将要在执行计算表达式之前处理的Python代码。
这可用于以多种方法准备或预处理准备好进行计算的数据。
下面列出了一些常用的VBA示例。
1.这些代码示例使用Python来返回“双精度”类型值,因此可以使用它们来计算现有的“双精度”类型字段或已添加到表中的新“双精度”类型字段。
2.选中“显示代码块”。
您将看到两个空的文本输入框。
3.将这些代码示例中的一段代码输入标有“预逻辑脚本代码”的最上面的框中。
提示:
可以选择此帮助主题中的代码,右键单击并选择“复制”,然后将其粘贴到框中。
基于间隔计算顺序ID或数字:
代码块:
rec=0
defautoIncrement():
globalrec
pStart=1#adjuststartvalue,ifreq'd
pInterval=1#adjustintervalvalue,ifreq'd
if(rec==0):
rec=pStart
else:
rec=rec+pInterval
returnrec
表达式:
autoIncrement()
表达式类型:
PYTHON_9.3
计算数值字段的累积值:
代码块:
total=0
defaccumulate(increment):
globaltotal
iftotal:
total+=increment
else:
total=increment
returntotal
表达式:
accumulate(!
FieldA!
)
表达式类型:
PYTHON_9.3
计算数值字段的百分比增量(以百分比格式显示结果,将“字段属性”对话框中的数字设置更改为以百分比显示):
代码块:
lastValue=0
defpercentIncrease(newValue):
globallastValue
iflastValue:
percentage=((newValue-lastValue)/lastValue)*100
else:
percentage=0
lastValue=newValue
returnpercentage
表达式:
percentIncrease(float(!
FieldA!
))
表达式类型:
PYTHON_9.3
4.将要使用的特定示例的“表达式:
”的值输入到对话框底部的“表达式”文本框中。
5.单击“确定”
计算包含几何测量值(如要素的面积或长度)的字段
地理数据库要素类的属性表包含面积(Shape_Area)、长度(Shape_Length)和周长(Shape_Length)字段,这些字段由ArcGIS自动维护。
您不必手动创建或更新这些字段。
但是,您可能想要向要素类的属性表中添加其他字段,以不同单位显示这些测量值。
或者您使用的可能是shapefile、SDC要素类或CAD要素类等非地理数据库数据源,这些数据源的属性表中不包含存储面积、长度和周长等测量值的字段。
如果要计算的字段为记录表示的要素的面积、周长、长度、xy位置或xy质心位置,则使用“计算几何”对话框来执行计算,而不使用“字段计算器”对话框。
“计算几何”对话框是ArcGIS9.2中的新增功能,通过它可很容易地以所选单位为表示几何测量值的字段计算值。
使用“计算几何”对话框计算某字段的值后,您可以在“字段计算器”对话框中使用该字段计算其他字段的值,例如,使用面积字段来计算密度值或每平方英亩的价格等。
要启动“计算几何”对话框,在表窗口中右键单击要计算的字段,然后选择“计算几何”命令。
使用“计算几何”对话框计算的字段不会在编辑要素时自动更新。
例如,如果在计算多边形shapefile的属性表中要成为多边形面积的字段后,对该多边形进行编辑或添加新多边形,那么之前添加的面积字段会过期。
您可以使用“计算几何”对话框重新计算来更新字段值。
请记住,当Shape_Area和Shape_Length字段位于存储在地理数据库的要素类的属性表中时,您不必进行此操作,因为那些Shape字段会保留并自动更新。
如何使用Python脚本计算几何测量值
您可以在“字段计算器”对话框中使用“代码块”中的Python代码来计算使用几何测量值的字段。
虽然执行这些计算的最简单方法是使用上述“计算几何”对话框,但在有些情况下,您可能要使用Python代码在“字段计算器”中执行这些计算。
这些示例将对此操作方式进行说明。
1.这些代码示例返回“双精度”类型值,因此可以使用它们来计算现有的“双精度”类型字段或已添加到表中的新“双精度”类型字段。
2.将这三行代码示例中的一行输入到文本框中。
提示:
可以选择此帮助主题中的Python代码,右键单击并选择“复制”,然后将其粘贴到框中。
计算要素的面积(以英亩为单位):
!
shape.areaacres!
计算要素的长度(以码为单位):
!
shape.lengthyards!
计算某一要素的最大x坐标:
!
shape.extent.XMax!
4.单击“确定”
计算的值的单位将为存储要素时使用的单位,而不是当前使用的数据框的地图单位或显示单位。
因此,如果以英尺为单位存储数据,计算的值也将以英尺为单位。
如果希望计算的数据使用与数据不同的单位,您可以向计算表达式添加转换,或者(更简单地)将数据投影到使用该值要采用的单位的坐标系中,然后执行计算。
为什么当我右键单击ArcMap的表窗口中的某个字段时“字段计算器”命令有时处于禁用状态?
如果“字段计算器”命令被禁用,可能的原因如下:
-已选字段由ArcGIS自动管理,因此无法手动进行编辑,例如:
-ObjectID(FID)字段
-地理数据库中要素类的Shape_Length和Shape_Area字段
-coverage中点或多边形要素类的“面积”、“周长”和
-coverage中Arc要素类的FNODE#、TNODE#、LPOLY#、RPOLY#、长度和
-您未处于编辑会话中,只有处于编辑状态才能计算数据。
例如,当处理参与地理数据库拓扑或几何网络的版本化ArcSDE数据或要素类时,必须处于编辑会话中。
要启动编辑会话,从“编辑器”工具栏的“编辑器”下拉菜单中选择“开始编辑”。
开始编辑后,如果地图包含多个文件夹或数据库中的数据,将提示您选择要对哪个文件夹或数据库中的数据进行编辑。
在这种情况下,如果您正在查看某个要素类或独立表的属性,则选择包含该要素类或独立表的文件夹或数据库。
提示:
对该表启动了编辑会话后,您会在“选项”按钮右边的“表窗口”中看到一个铅笔符号。
-右键单击的字段可能属于已连接到此表的表。
您只能计算源表中字段的值。
这部分容是帮助提示,直接复制过来的。
关于构建标注表达式
您可以通过在该对话框中构建表达式来为各个要素产生标注字符串。
应按照“分析程序”下拉列表中所选脚本语言的规则对表达式进行编码。
表达式可包含所选脚本语言支持的任何有效语句。
无论图层的数据源为哪种数据类型,字段始终用方括号[]括起。
字段值会被自动转换为文本字符串;因此,如果要在算术运算中使用数值,您需要将字段值的类型转换回数值数据类型。
如果未选中高级复选框,则表达式将被限定为单行代码。
如果选中“高级”框,您可以输入包含程序设计逻辑并跨多个代码行的函数。
表达式示例
-使用VBScript中的&运算符可串连字符串。
例如,以下表达式将创建一个标注,其中PARCELNO字段值的前面会加上文本“Parcelno:
”:
"Parcelno:
"&[PARCELNO]
-要控制小数的显示方式,可使用VBScript中的Round函数。
例如,以下表达式可将名称为“Area”的字段的值四舍五入为保留一个小数位:
Round([AREA],1)
-要将文本标注全部转换为大写或小写形式,可使用VBScript中的UCase和LCase函数。
例如,以下表达式可将Name字段中的文本全部转换为小写:
LCase([NAME])
-要将文本标注转换为适当的大小写形式,请结合使用VBScript中的UCase和LCase。
例如,以下表达式会处理全部以大写字母显示的“Name”字段并将其转换为适当的大小写形式。
表达式会处理字段中的所有字符。
FunctionFindLabel([Name])
var=[Name]
splitStr=Split(var,chr(32))
fori=0toUBound(splitStr)
tmpStr=Trim(splitStr(i))
iflen(tmpStr)>0thentmpStr=UCase(Left(tmpStr,1))&LCase(Right(tmpStr,Len(tmpStr)-1))
splitStr(i)=tmpStr
next
ProperCase=join(splitStr,"")
FindLabel=ProperCase
EndFunction
-要创建堆叠文本,可在字段名称之间使用VBScript中的vbNewLine或vbCrLf常量:
"Name:
"&[NAME]&vbNewLine&[ADDRESS_1]&vbNewLine&[ADDRESS_2]
-使用VBScript格式函数可设置标注格式。
例如,以下表达式将以货币形式显示标注:
"OccupancyRevenue:
"&FormatCurrency([MAXIMUM_OC]*[RATE])
-以下VBScript函数会标注人口超过25万的城市的名称:
FunctionFindLabel([NAME],[POPULATION])
if([POPULATION]>250000)then
FindLabel=[NAME]
endif
EndFunction
有关更多表达式示例,请参阅“关于构建标注表达式”这一帮助主题。
该帮助主题位于:
“制图和可视化”>“向地图中添加图形和文本”>“处理文本”>“关于构建标注表达式”下。
脚本语言参考
(>)MicrosoftVBScript语言参考
(>)MicrosoftJScript语言参考
这些指向由MicrosoftCorporation创建、拥有和维护的网页。
我们不能保证这些网页的可用性,也不对网页中的容负责。
ArcMap文本格式化标签
绘制标注时将使用“标注”选项卡(启动该“表达式”对话框时所在的选项卡)中指定的符号。
您可以通过将ArcMap文本格式化标签以文本字符串形式插入到表达式中来修改或覆盖表达式中特定部分的该符号外观。
这样,您可以创建具有混合格式的标注,例如,为标注中的某个字段加下划线。
以下为可以使用的标签:
字体:
"
"
颜色:
"
"
粗体:
"
斜体:
"
下划线:
"
全部大写:
"
小型大写字母:
"
上标:
""&[LABELFIELD]&""
下标:
""&[LABELFIELD]&""
字符间距(0%=正常):
"
字符宽度(100%=正常):
"
词间距(100%=正常):
"
行间距(0磅=正常):
"
不加粗:
"<_BOL>"&[LABELFIELD]&""
不倾斜:
"<_ITA>"&[LABELFIELD]&""
不加下划线:
"<_UND>"&[LABELFIELD]&""
不加上标:
"<_SUP>"&[LABELFIELD]&""
不加下标:
"<_SUB>"&[LABELFIELD]&""
标签语法
-与标注表达式中的其他静态文本类似,格式化标签必须用双引号括起并使用&运算符与表达式的其他部分串连:
"
标签的解析不是由VBScript/JavaScript来完成,而是作为纯文本传递到ArcMap框架,从而在绘制时动态设置格式。
对于带引号的字符串中的标签,不必将其用引号括起:
"Current
"&[LABELFIELD]
-ArcMap文本格式化标签遵守XML语法规则。
每个起始标签必须有对应的结束标签。
标签可以嵌套,但必须先结束部标签,然后再结束外部标签:
"
-标签对的大小写必须完全一致。
因此,
-在标注表达式中,标签属性必须用单引号(如上表所示)或两组双引号括起。
以下表达式相当于表中的字体(FNT)条目:
"
-&和<为特殊字符,因此在使用格式化标签时,不能在文本中使用这些字符。
可以改用相应的字符代码&和<。
例如,以下表达式将显示位于<>字符之间的标注字段的值:
"
如果标注字段值中嵌入了特殊字符,您可以使用一个简单的标注脚本动态替换这些特殊字符:
FunctionFindLabel([LABELFIELD])
NewString=Replace([LABELFIELD],"&","&")
FindLabel="
EndFunction
-无论是否使用标注表达式,您都可以将格式化标签嵌入到用于标注图层要素的字段值中。
这样一来,对于标注字段中的特定值,您可以更改其任意部分的格式。
只有字符串类型的标注字段支持嵌入格式化标签。
字段值中使用的标签和标签属性不必用引号括起,因此以下标签字段值有效:
ArcMap的“容列表”、“表”窗口或“识别结果”窗口并不对标签进行解析,因此,在这些窗口中,添加到字段值的标签将显示为标签。
要查看上文所示表的详细版本,请在ArcGISDesktop帮助中搜索“ArcMap中的格式化标签”。
提示
-“验证”按钮不会检查格式化标签的有效性。
相反,在“验证”窗口中,所有标签将显示为纯文本。
要检查包含文本格式化标签的表达式是否有效,请应用更改并在地图中查看标注。
如果格式化标签/语法无效,则在地图标注中,标签会显示为纯文本。
-地图中或地图周围任何放置文本的位置几乎都可以使用ArcMap文本格式化标签。
也就是说,在任何可以指定文本字符串和文本符号的位置都可以使用标签。
例如,对于以下容都可以添加标签:
使用各种文本工具添加的文本、注记、图例文本、地图标题以及用于标注要素的字段值。
-地图中的每段文本都包含一个绘制时使用的符号。
格式化标签的工作原理是:
临时修改该“基础”文本符号并按照标签中指定的格式绘制文本的指定部分。
“绘图”工具条和“符号选择器”中的控件始终反映所选文本段的基础文本符号的属性,不会反映使用格式化标签所做的修改。
例如,如果使用
-如果标签只是重复基础文本符号的现有属性,则标签对文本段不起作用。
一般说来,这种行为很好理解;例如,如果文本字符串中包含一个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ArcGIS 属性