Arcgis中给属性表字段按条件批量赋值

合集下载

ArcGIS10.2字段计算器FieldCalculator批量条件赋值用法总结

ArcGIS10.2字段计算器FieldCalculator批量条件赋值用法总结

ArcGIS10.2字段计算器FieldCalculator批量条件赋值⽤法总结
花了⼏个⼩时专研这个批量处理,由于本⼈愚钝,所以费的时间较长,在⽹上搜的话,可以看到⼀⼤堆字段计算器按条件赋值的结果,但是就是没有⼈测试条件是汉字的哪⼀类。

我利⽤⽹上的答案,就是直接⽤的⼀个if语句然后就可以直接出来英⽂或是数字的结果,但是对于汉字则没有办法。

然后⼜参照⼀些其他的⽂档。

知道了,在ArcMap中使⽤python时需要将其转为utf-8,这样便可以按条件查询了。

还有就是python空格问题,不是空2就是空4 ,看得arcmap帮助⽂档得知。

然后下⾯是代码。

import os
import sys
import re
str1='超市'.decode('utf8')
str2='超市2'.decode('utf8') //需要decode是因为字段可能是ascii编码
def Reclass(kind):
if str1 in kind or str2 in kind :
return '超市'
else:
return '其他'
⽤法就是点击你要赋值的那⼀列,我这⾥是Kind,字段计算器,然后如上图写,下部的代码则是POIName则是你需要判断条件的字段
然后就出来了,各位看官要是觉得不错,点个推荐吧。

arcgis批量邻近赋值

arcgis批量邻近赋值

arcgis批量邻近赋值摘要:1.引言2.ArcGIS简介3.批量邻近赋值的概念4.批量邻近赋值的方法a.按要素类进行赋值b.按图层进行赋值c.使用ArcPy进行赋值5.批量邻近赋值的注意事项6.总结正文:ArcGIS是一款功能强大的地理信息系统软件,广泛应用于地图制作、数据分析、空间建模等领域。

在实际工作中,我们常常需要对图层中的要素进行批量邻近赋值。

本文将详细介绍ArcGIS中批量邻近赋值的相关知识和操作方法。

首先,我们需要了解ArcGIS的基本情况。

ArcGIS是由美国环境系统研究所(Esri)公司开发的一款地理信息系统软件,包括桌面、服务器和移动端等多个平台,提供了丰富的地理信息处理和分析功能。

批量邻近赋值是指在ArcGIS中,根据某个图层中某个字段的值,将该值赋给与之相邻的要素。

这种操作可以用于实现诸如区域划分、属性统计等多种功能。

在ArcGIS中,有多种方法可以实现批量邻近赋值。

以下是具体的操作步骤:1.按要素类进行赋值在“ArcToolbox”中,打开“地理处理”工具栏,选择“批量处理”工具,然后点击“要素类到要素类”。

在弹出的对话框中,输入源要素类和目标要素类,选择邻近赋值方法,并设置相关参数。

最后,点击“确定”按钮,即可完成赋值操作。

2.按图层进行赋值在ArcMap中,右键点击需要赋值的图层,选择“属性”>“打开属性表”。

在属性表中,找到需要赋值的字段,点击“编辑”按钮。

然后,选中需要赋值的要素,手动输入或粘贴目标值。

最后,点击“确认”按钮,完成赋值操作。

3.使用ArcPy进行赋值ArcPy是ArcGIS的Python编程接口,可以利用Python脚本语言轻松实现批量邻近赋值。

以下是使用ArcPy进行赋值的示例代码:```pythonimport arcpy# 输入图层和字段input_layer = "input_layer"field_name = "field_name"# 获取输入图层的要素类input_feature_class = arcpy.Describe(input_layer).featureClass# 创建游标with arcpy.da.SearchCursor(input_layer, field_name) as cursor: # 遍历图层中的要素for row in cursor:# 获取当前要素的ID和属性值feature_id = row[0]attribute_value = row[1]# 获取与当前要素相邻的要素with arcpy.da.SearchCursor("input_layer", ["OID@", field_name]) as neighbor_cursor:for neighbor_row in neighbor_cursor:# 检查相邻要素的ID和当前要素的ID是否满足条件(例如:相差1)if abs(feature_id - neighbor_row[0]) == 1:# 对相邻要素进行赋值arcpy.CalculateField_management("input_layer", field_name, attribute_value)```在执行批量邻近赋值操作时,需要注意以下几点:1.确保源图层和目标图层具有相同的投影坐标系。

在ArcGIS属性表中增加需要的字段并自动赋值

在ArcGIS属性表中增加需要的字段并自动赋值

在ArcGIS属性表中,一般不会包含实体几何信息,可以采取VBA进行计算。

下面是几个简单的代码特点:1推荐给不会使用AO的朋友2可以保存为CAL文件以备下次方便使用使用方法1打开属性表,选择计算的字段,右点选择Calculate Values;2.选择“是”,进入Field Calculator;2选择Advance选项;3 在Pre-Logic VBA Script Code编辑框中输入VBA代码;4在下面编辑框中输入赋值部分.1--点坐标XVBA部分:Dim pGeo As IGeometrySet pGeo = [Shape]Dim pPoint As IPointSetpPoint = pGeo赋值部分:pPoint.X2--点坐标YVBA部分:同上赋值部分:pPoint.Y坐标值为文件存储的固有值,和是否使用On the Fly坐标表示无关。

返回当前显示的坐标值参看8,93--多边形周长VBA部分:Dim pGeo As IGeometry Set pGeo = [Shape]Dim pPolygon As IPolygon SetpPolygon = pGeo赋值部分:pPolygon.Length4--多边形面积VBA部分:Dim pGeo As IGeometry Set pGeo = [Shape]Dim pPolygon As IPolygon SetpPolygon = pGeoDim pArea As IAreaSet pArea =pPolygon赋值部分:pArea.Area5--多边形重心XVBA部分:Dim pGeo As IGeometry Set pGeo = [Shape]Dim pPolygon As IPolygonSet pPolygon = pGeoDim pArea As IAreaSet pArea =pPolygonDim pPoint As IPointSet pPoint =pArea.Centroid赋值部分:pPoint.X6--多边形重心YVBA部分:同上赋值部分:pPoint.Y7--Polyline长度VBA部分:Dim pGeo As IGeometrySet pGeo = [Shape]Dim pPolyline As IPolylineSetpPolyline = pGeoDim pCurve As IPolycurveSet pCurve =pPolyline赋值部分:pCurve.Length8--表示点坐标XVBA部分:Dim pDoc As IMxDocumentSet pDoc = ThisDocumentDim pSpRef AsISpatialReferenceSet pSpRef = pDoc.FocusMap.SpatialReferenceDimpClone As ICloneSet pClone = [Shape]Dim pGeo As IGeometrySet pGeo =pClone.CloneDim pPoint as IPointSet pPoint = pGeopGeo.ProjectpSpRef赋值部分:pPoint.X9--表示点坐标YVBA部分:同上赋值部分:pPoint.Y坐标值为On the Fly显示的坐标,不是文件存储的固有坐标10--连续编号VBA部分:Static lCount as longlCount=lCount+1赋值部分:lCount (从1开始)lCount-1(从0开始)。

arcgis批量邻近赋值

arcgis批量邻近赋值

arcgis批量邻近赋值在地理信息系统(GIS)领域中,ArcGIS是一款功能强大的软件套件,被广泛应用于地图制作、数据分析和空间模拟等方面。

其中,邻近赋值是一项常见且有用的操作,它可以将一个要素的属性值根据其附近的其他要素进行自动赋值。

本文将介绍如何使用ArcGIS进行批量邻近赋值,并探讨其在实际应用中的意义和效果。

一、概述邻近赋值是一种空间分析方法,通过将某一要素的属性值根据其邻近要素的属性值进行自动赋值,从而实现信息的传递和填充。

在ArcGIS中,我们可以利用空间统计工具和地理处理工具来实现批量邻近赋值的操作。

下面将具体介绍其步骤和应用场景。

二、数据准备在进行批量邻近赋值之前,需要先准备好相应的数据集。

这些数据集包括要进行邻近赋值的要素、要素之间的空间关系数据以及属性数据。

要素可以是点、线或面等,在这些要素上具有需要进行赋值的属性字段。

空间关系数据可以是距离、方位或接触等,并与要素保持一定的关联。

属性数据则是被邻近要素赋值的目标字段。

三、步骤1. 打开ArcGIS软件,并导入准备好的数据集。

2. 创建一个新的字段,用于存储邻近赋值的结果。

3. 运行空间统计工具,计算每一个要素与其邻近要素之间的距离或其他空间关系。

4. 根据所计算得到的空间关系值,将邻近要素的属性值赋给目标字段。

5. 检查并验证赋值结果,确保赋值的准确性和完整性。

四、应用场景批量邻近赋值在实际应用中具有广泛的应用场景,以下列举其中几个常见的例子:1. 城市规划:通过测量不同位置的道路距离,将其与最近的公园或绿地距离进行邻近赋值,评估城市规划的绿化水平和绿地覆盖率。

2. 市场分析:基于不同商铺的销售额和人口密度,计算每个商铺的邻近商铺销售额,并预测市场潜力和竞争力。

3. 环境监测:通过衡量不同地点的水质或空气质量指数,将其与周围的监测站点进行邻近赋值,实时监测环境变化。

4. 基础设施规划:根据不同地点的人口分布和就业机会,计算每个地方的社会福利指数,并进行区域发展规划。

ArcGIS编辑属性数据的几种方法

ArcGIS编辑属性数据的几种方法

编辑属性数据的几种方法在Arc Map中对地理数据进行编辑,不仅可以对其几何信息进行编辑,同时也可以为其属性信息进行编辑。

一般的属性表中既包含了系统预设的一些字段,还会包含用户自定义的字段,而我们进行编辑的只能是用户自定义的字段。

根据要素是否已经创建,可调用不同的工具完成属性信息的添加、更改或删除。

1 为已有要素添加或更改属性值当需要进行编辑的地理数据的几何信息已经存在并且不需要更改时,我们采用以下2种方法对要素的属性信息进行添加、修改或删除。

1.1 利用表窗口GIS数据包含的属性信息都记录在表中。

每个表格的基本结构都相同,由行和列组成,定义行为一条记录,定义列为一个字段,两者的交叉点是一个要素的某个属性。

表中的属性值可单独进行添加或更改,也可批量更改赋值。

1.1.1 单个赋值利用表窗口为单个要素添加或修改属性值。

步骤:a) 启动编辑会话,编辑(Editor)工具条下拉菜单选择开启编辑(Start Editing);b) 右键单击要编辑的图层,选择“打开属性表”(open attribute table);c) 找到需要添加或修改的字段以及对应的记录,手动输入单个属性值,如图1。

图1 表窗口单个赋值1.1.2 批量赋值利用“字段计算器”进行批量赋值,前提条件是两个字段的字段属性必须遵循一定的规则(短整型、长整型、双精度、单精度都可向文本复制,但是文本复制不到数值中)。

步骤:a) 启动编辑会话,编辑(Editor)工具条下拉菜单选择开启编辑(Start Editing);b) 右键单击要编辑的图层,选择“打开属性表”(open attribute table);c) 右键单击需要添加或修改的字段名,选择“字段计算器”(Field Calculator);d) 在“字段计算器”(Field Calculator)对话框中利用VB脚本语言或Python语言编写语句,既可以直接在表达式文本框中输入较为简单的表达式(如图2),也可以在代码框中输入较为复杂的表达式以执行高级计算;e) 点击确定(OK)后可在属性表中查看计算结果(如图3)。

根据空间位置关系,属性批量赋值

根据空间位置关系,属性批量赋值

已知所有井的属性,根据管道和井的空间位置关系,对管道数据的属性批量赋值。

第一步:添加井和管道数据到ArcMap中,打开ArcToolbox工具,选择分析工具——>叠加分析——>空间连接,如下图
第二步:双击“空间连接”,打开如下图操作对话框,输入要素选择管道图层,连接要素选择井图层,输出要素类设置为后缀为shp格式的数据,路径自行选择,连接操作选项选择“JOIN_ONE_TO_MANY”,保留所有目标要素勾选,匹配选项选择“CONTAINS”,然后点击确定按钮。

第三步:打开地理处理下拉菜单中的“融合”工具
第四步:在弹出的融合对话框中做如下设置:
输入要素选择第前面得到的shp数据;
输出要素类设置为shp格式的数据;
融合_字段选择”TARGET_FID”;
统计字段选择井的NAME和ITEMINDEX,统计类型选择FIRST和LAST。

如图
点击确定按钮。

第五步:打开上步操作得到的结果数据dissolve.shp的属性表,添加字段NAME,字段类型为文本;选择NAME列,右键选择字段计算器,在弹出的对话框中输入[FIRST_NAME]+"-"+
[LAST_NAME_],点击确定按钮,就能将管道两端井的名字批量赋给管道。

同理,添加ITEMINDEX和TYPE字段,做字段计算。

最后得到的管道数据就是我们所需要的。

干货‖ArcGIS‖属性表的“那些”事(字段排序、小班编号、属性多条件选择)

干货‖ArcGIS‖属性表的“那些”事(字段排序、小班编号、属性多条件选择)

干货‖ArcGIS‖属性表的“那些”事(字段排序、小班编号、属性多条件选择)案例(1)我们经常在实际工作中要对字段按照由小到大的顺序进行排列,例如:1、2、3... ...步骤一:打开图层属性表,新建字段(例如:zdbh)步骤二:在新建的字段(zdbh)上面右击,选择“字段计算器”---选中 python。

(可能这时候有同学就慌了,我py不会、看不懂搞啥子嘛)莫急、莫急Ctrl+C 、Ctrl+V 应该是会得嘛!步骤三:在“预逻辑代码块”复制、粘贴以下代码就好;rec=-1def autoIncrement():global recpStart = 1 #起始值为1,可修改pInterval = 1 #间隔值为1,可修改if (rec ==-1):rec = pStartelse:rec = rec + pIntervalreturn rec(上述代码含义:首先初始化rec为-1;接着定义一个autoIncrement方法,在这个方法里定义了一个局部变量rec,初始化pStart为1,它也是起始值,如果想typeid起始值为其它值可以修改pStart的值即可,pInterrval是间隔值,即依次递增的数字之间的间隔是1,如果想依次递增的数字之间的间隔是2或者3...等,可以修改pInterrval的值;再接着就是一个if()else语句,最后将rec进行返回。

)然后将autoIncrement()方法给zdbh,最后点击“确定”运行。

(注意将autoIncrement()方法给zdbh时,autoIncrement()方法前不能有空格,否则会报错)案例(2)在我们实际工作中还会经常遇见对小班进行编号,格式要求0001、0002、0003... ....0010等这种格式。

步骤同案例(1)我们在这里就不重复说了,还是老办法Ctrl+C 、Ctrl+V需要改变的是代码如下:rec=0def autoIncrement():global recpStart = 1 #adjust start value, if req'dpInterval = 1 #adjust interval value, if req'dif (rec == 0):rec = pStartelse:rec = rec + pIntervalreturn rec然后将(str(autoIncrement())).zfill(4) 给 zdbh1 最后点确定就行这里重点要强调一下(str(autoIncrement())).zfill(4) 这个数字4,如果要变成格式为00001 00002 这种的就修改为5 就行。

arcpy条件赋值

arcpy条件赋值

在ArcGIS的ArcPy模块中,条件赋值是一种常见的操作,它允许你根据某些条件对变量进行赋值。

以下是一个简单的示例,演示了如何使用ArcPy进行条件赋值:
在这个示例中,我们首先创建了一个名为my_variable的变量,并为其赋值为0。

然后,我们使用if-elif-else语句根据my_variable的值进行条件赋值。

如果my_variable的值大于10,我们将字符串"大于10"赋给它;如果my_variable的值等于10,我们将字符串"等于10"赋给它;否则,我们将字符串"小于10"赋给它。

最后,我们使用print()函数输出my_variable的值。

除了在Python脚本中使用条件赋值外,你还可以在ArcMap的Python窗口中使用条件赋值。

在ArcMap中打开Python窗口,输入以下代码:
在这个示例中,我们首先获取当前地图文档的图层和第一个要素的属性值。

然后,我们根据属性值进行条件赋值,如果属性值为"YES",我们将字符串"Yes"赋给它;如果属性值为"NO",我们将字符串"No"赋给它;否则,我们将字符串"Unknown"赋给它。

最后,我们输出新的属性值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.确定属性表中要赋值的字段,可利用属性表“Options”下“Select By Attributes…”操作,本例中需要赋值的字段如下图“ms”
2.光标停在该列的表头上,单击右键并选择“Field Calculator…”
3.探出对话框,如下图所示,在“Advanced”前打勾后对话框进入高级编辑模式
1 2
4.自定义VBA语句,如本例中,要给“ms”一列赋值为“2
5.144”则需在Pre-Logic VBA Script Code 文本框中输入如下语句:
dim u as double // 定义变量u 为double类型
if [ms]=”0”then //如果字段ms的当前值为0,则将25.144赋值给u u=”25.144”
else //否则,将ms的当前值赋给u
u=[ms]
end if //结束
5.然后在“ms=”对应的文本框中输入u,该文本框的作用相当于将变量u的值赋给字段ms
( )
6.本例计算结果如下图所示。

相关文档
最新文档