序号 |
函数名称 |
|
功能说明
|
|
语法 & 举例 |
以下是 arcpy.da.SearchCursor、arcpy.da.InsertCursor、arcpy.da.UpdateCursor
|
01 |
da.SearchCursor |
|
====<<<< Description >>>>====
SearchCursor 用于建立从要素类或表中返回的记录的只读访问权限。 返回一组迭代的元组。元组中值的顺序与 field_names 参数指定的字段顺序相符。使用 For 循环可迭代搜索游标。 ----------------------------------------------------------------------------------
====<<<< Syntax >>>>====
da.SearchCursor (in_table, field_names, {where_clause}, {spatial_reference}, {explode_to_points}, {sql_clause}) ----------------------------------------------------------------------------------
====<<<< Parameters >>>>====
◈ in_table:要素类、图层、表或表视图。 ◈ field_names、[field_names,...]:字段名称列表(或组)。对于单个字段,可以使用一个字符串,而不使用字符串列表。如果要访问输入表中的所有字段(栅格和 BLOB 字段除外),可以使用星号 (*) 代替字段列表。以令牌(如 OID@)取代字段名称可访问更多的信息: SHAPE@XY —一组要素的质心 x,y 坐标。 SHAPE@TRUECENTROID —一组要素的真正质心 x,y 坐标。 SHAPE@X —要素的双精度 x 坐标。 SHAPE@Y —要素的双精度 y 坐标。 SHAPE@Z —要素的双精度 z 坐标。 SHAPE@M —要素的双精度 m 值。 SHAPE@JSON — 表示几何的 esri JSON 字符串。 SHAPE@WKB —OGC 几何的熟知二进制 (WKB) 制图表达。该存储类型将几何值表示为不间断的字节流形式。 SHAPE@WKT —OGC 几何的熟知文本 (WKT) 制图表达。其将几何值表示为文本字符串。 SHAPE@ —要素的几何对象。(Point、Polyline、Polygon) SHAPE@AREA —要素的双精度面积。 SHAPE@LENGTH —要素的双精度长度。 OID@ —ObjectID 字段的值。 ◈ where_clause:用于限制所返回的记录的可选表达式。有关 WHERE 子句和 SQL 语句的详细信息,请参阅构建查询表达式。 (默认值为 None) ----------------------------------------------------------------------------------
====<<<< Properties >>>>====
◈ fields:返回一个使用这个游标的字段名称的元组,与上面的参数对应。 ----------------------------------------------------------------------------------
====<<<< Methods >>>>====
◈ next ():将下一行作为元组返回。字段将按照创建光标时所指定的顺序返回。 ◈ reset ():将光标重置回第一行。
|
|
1 2 | cursor = arcpy.da.SearchCursor( "union" , "Fre" , "Fre = 0" )
|
1 2 3 | >>> cursor = arcpy.da.SearchCursor( "CNTRY92" , "NAME" )
>>> values = [row[ 0 ] for row in cursor]
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | >>> cursor = arcpy.da.SearchCursor( "CNTRY92" , "SHAPE@XY" )
>>> xy = [row[ 0 ] for row in cursor]
>>> xy[ 0 ]
( 6.299706626866719 , 49.77865316900599 )
>>> cursor = arcpy.da.SearchCursor( "CNTRY92" , "SHAPE@AREA" )
>>> area = [row[ 0 ] for row in cursor]
>>> area[ 0 ]
0.33773702035614406
>>> cursor = arcpy.da.SearchCursor( "CNTRY92" , "SHAPE@LENGTH" )
>>> length = [row[ 0 ] for row in cursor]
>>> length[ 0 ]
2.58749040209765
>>> cursor = arcpy.da.SearchCursor( "CNTRY92" , "SHAPE@" )
>>> shape = [row[ 0 ] for row in cursor]
>>> shape[ 0 ]
<Polygon object at 0x2acfa110 [ 0x2acf8b40 ]>
>>> arcpy.CopyFeatures_management(shape[ 0 ], "shape_00.shp" )
<Result 'D:\\McDelfino\\Documents\\ArcGIS\\shape_00.shp' >
|
在 Python 中,构建由三重引号括起的表达式
1 2 3 4 | cursor = arcpy.da.SearchCursor(fc, [ "roadclass" , "name" ],
)
for row in cursor:
print (row[ 1 ])
|
1. 注意操作的时候不要选择数据,否则只会查询选择范围内的信息;
2. 如果想要选择全部 table 内容,则不需要添加 SQL 语句;
3. 注意 SQL 语法等。
|
02 |
da.InsertCursor |
|
====<<<< Description >>>>====
InsertCursor 可在要素类或表上建立写入游标。可以使用 InsertCursor 来添加新行。 ----------------------------------------------------------------------------------
====<<<< Syntax >>>>====
da.InsertCursor (in_table, field_names) ----------------------------------------------------------------------------------
====<<<< Parameters >>>>====
◈ in_table:要素类、图层、表或表视图。 ◈ field_names、[field_names,...]:字段名称列表(或组)。对于单个字段,可以使用一个字符串,而不使用字符串列表。如果要访问输入表中的所有字段(栅格和 BLOB 字段除外),可以使用星号 (*) 代替字段列表。 ---------------------------------------------------------------------------------- ====<<<< Properties >>>>====
◈ fields:返回一个使用这个游标的字段名称的元组,与上面的参数对应。 ----------------------------------------------------------------------------------
====<<<< Methods >>>>====
◈ insertRow (row):向表中插入一行。
|
|

|
03 |
da.UpdateCursor
|
|
====<<<< Description >>>>====
UpdateCursor 用于建立对从要素类或表返回的记录的读写访问权限。 返回一组迭代列表。列表中值的顺序与 field_names 参数指定的字段顺序相符。 ----------------------------------------------------------------------------------
====<<<< Syntax >>>>====
da.UpdateCursor (in_table, field_names, {where_clause}, {spatial_reference}, {explode_to_points}, {sql_clause}) ----------------------------------------------------------------------------------
====<<<< Parameters >>>>====
◈ in_table:要素类、图层、表或表视图。 ◈ field_names、[field_names,...]:字段名称列表(或组)。对于单个字段,可以使用一个字符串,而不使用字符串列表。如果要访问输入表中的所有字段(栅格和 BLOB 字段除外),可以使用星号 (*) 代替字段列表。 ---------------------------------------------------------------------------------- ====<<<< Properties >>>>====
◈ fields:返回一个使用这个游标的字段名称的元组,与上面的参数对应。 ----------------------------------------------------------------------------------
====<<<< Methods >>>>====
◈ deleteRow ():删除当前行。 ◈ next ():将下一行作为元组返回。字段将按照创建光标时所指定的顺序返回。 ◈ reset ():将光标重置回第一行。 ◈ updateRow (row):更新表中的当前行。 |
|


|
以下是 arcpy.SearchCursor、arcpy.InsertCursor、arcpy.UpdateCursor
|
04 |
SearchCursor
|
|
====<<<< Description >>>>====
SearchCursor 函数用于在要素类或表上建立只读游标。SearchCursor 可用于遍历行对象并提取字段值。可以使用 where 子句或字段限制搜索,并对结果排序。
以迭代方式搜索游标的方式有两种:for 循环或者 while 循环(通过游标的 next 方法返回下一行)。如果要使用游标的 next 方法来检索行数为 N 的表中的所有行,则脚本必须调用 next N 次。在检索完结果集的最后一行后调用 next 将返回 None,它是一种 Python 数据类型,此处用作占位符。
返回值为 Cursor 类,具体属性与方法参见 Cursor 类。 ----------------------------------------------------------------------------------
====<<<< Syntax >>>>====
SearchCursor (dataset, {where_clause}, {spatial_reference}, {fields}, {sort_fields}) ----------------------------------------------------------------------------------
====<<<< Parameters >>>>====
◈ dataset:The feature class, shapefile, or table containing the rows to be searched. ◈ where_clause:SQL 语句,用来限定查询注意内容用单引号。
|
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | mxd = arcpy.mapping.MapDocument( "CURRENT" )
df = arcpy.mapping.ListDataFrames(mxd)[ 0 ]
lyrs = arcpy.mapping.ListLayers(mxd)
lyr = lyrs[ 0 ]
cursor = arcpy.SearchCursor(lyr, "NAME='辽宁省'" )
for row in cursor:
print row.getValue( "ID" )
cursor = arcpy.SearchCursor(lyr, "NAME='辽宁省'" )
row = cursor. next ()
while row:
print row.getValue( "ID" )
row = cursor. next ()
|
|
05 |
InsertCursor
|
|
====<<<< Description >>>>====
向要素类、shapefile 或表中插入行。InsertCursor 返回一个分发行对象的枚举对象。
可使用 newRow 方法从插入行的枚举对象获取新的行对象。每次调用光标上 insertRow 都会在表中创建新行,该行的初始值设置为输入行中的值。
返回值为 Cursor 类,具体属性与方法参见 Cursor 类。 ----------------------------------------------------------------------------------
====<<<< Syntax >>>>====
InsertCursor (dataset, {spatial_reference}) ----------------------------------------------------------------------------------
====<<<< Parameters >>>>====
◈ dataset:The feature class, shapefile, or table containing the rows to be searched.
|
|
1 2 3 4 5 6 7 8 9 | cursor = arcpy.InsertCursor(lyr)
for i in range ( 1 , 10 ):
row = cursor.newRow()
row.setValue( "NAME" , "阿拉斯加" )
row.setValue( "ID" , i)
cursor.insertRow(row)
del cursor, row
|
|
06 |
UpdateCursor
|
|
====<<<< Description >>>>====
UpdateCursor 函数创建一个用于更新或删除指定要素类、shapefile 和表中的行的游标。该游标将数据锁定保留至脚本完成或更新游标对象被删除时。
以迭代方式更新游标的方式有两种:for 循环或者 while 循环(通过游标的 next 方法返回下一行)。如果要使用游标的 next 方法来检索行数为 N 的表中的所有行,脚本必须调用 next N 次。在检索完结果集的最后一行后调用 next 将返回 None,它是一种 Python 数据类型,此处用作占位符。
返回值为 Cursor 类,具体属性与方法参见 Cursor 类。 ----------------------------------------------------------------------------------
====<<<< Syntax >>>>====
UpdateCursor (dataset, {where_clause}, {spatial_reference}, {fields}, {sort_fields}) ----------------------------------------------------------------------------------
====<<<< Parameters >>>>====
◈ dataset:The feature class, shapefile, or table containing the rows to be searched. ◈ where_clause:SQL 语句,用来限定查询注意内容用单引号。
|
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | cursor = arcpy.UpdateCursor(lyr)
field1 = "BOU2_4M_"
field2 = "BOU2_4M_ID"
for row in cursor:
row.setValue(field1, row.getValue(field2) * 2 )
cursor.updateRow(row)
cursor = arcpy.UpdateCursor(lyr)
row = cursor. next ()
while row:
row.setValue(field1, row.getValue(field2) / 2 )
cursor.updateRow(row)
row = cursor. next ()
|
|
|
|
|
1 | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)