How to mix SearchCursor and Update Cursor in ArcGIS Pro

By Dr Mohammad Ali Nezammahalleh

In working with attribute tables we sometimes want to select some rows and records and then apply processes on the selected features only.

In these cases, we may need to mingle SearchCursor to Select some points in a layer or to select some lines in a Polyline feature. we don’t want to apply the Update Cursor to all the records and all the rows in the attribute table. This can be a good answer to “How to pair SearchCursor with UpdateCursor?”

So, how can we use Search Cursor to choose some rows and then use Update Cursor to getValue and setValue in the table.

For doing so, we put a simple arcpy python code below.

Download solution code below:

cursormix


how to integrate search uptade Cursor in ArcGIS ESRI arcpy

این مقاله آموزشی ترکیب دو کد سرچ و آپدیت کورسور را نشان می دهد.


You can also download sample layer used in this code below:

cursormixdata

Solution:

it is so easy, in this case you should forget SearchCursor and, instead use “Make Feature Layer” and then “Select Layer by Attribute”.

This solution can enable us to apply multiple Field Calculator on multiple fields and rows (records) in a few seconds. applying this code can save your time a lot. you don’t need to do field calculator many times, each for different formula. By this way, you can do all in one code.

import arcpy

arcpy.env.workspace = “E:\\Rasht_Shahrdari\\Projects\\Sessions\\Jalase11\\New File Geodatabase.gdb”
esmlaye = “E:\\Rasht_Shahrdari\\Projects\\Sessions\\Jalase11\\New File Geodatabase.gdb\\village2”

flk = arcpy.management.MakeFeatureLayer(‘village2’,”kaw”)
esm2 = arcpy.management.SelectLayerByAttribute(‘el_lyr2′,””,'”JAMEYAT”>1000’,””)

cursorh = arcpy.UpdateCursor(esm2)
for radif in cursorh:
radif.setValue(“MARD”, radif.getValue(“KHANEVAR”)+radif.getValue(“JAMEYAT”)+10000)
radif.setValue(“ZAN”, radif.getValue(“KHANEVAR”)+radif.getValue(“JAMEYAT”)*0.5)
cursorh.updateRow(radif)

del radif
del cursorh

چطور در برنامه ArcGIS دو دستور Search Cursor و Update Cursor را برای انتخاب ردیف ها و سپس پردازش روی ردیف های انتخابی ترکیب کنیم؟

در کار با جداول اطلاعات توصیفی ما نیاز داریم که ابتدا چند ردیف را انتخاب کنیم و سپس پردازش های Field Calculator را روی ردیف ها یا عوارض انتخاب شده اعمال کنیم. ما نمی خواهیم چند پردازش فیلد کلکولیتور را روی تمام ردیف های جدول اطلاعات توصفی یا Attribute Table انجام بدهیم.

برای اینکار در فوری آموز کد ترکیب این دو دستور را ارائه داده ایم.

در یافت کد از لینک زیر :

cursormix

دریافت نمونه داده استفاده شده در این کد از لینک زیر :

cursormixdata

این روش زمانی مفید است که شما به جای اینکه چندین بار Field Calculator را بزنید و چندین فرمول را وارد کنید که کاری بسیار وقت گیر است. در عوض با این کد فوری آموز می توانید تمام این فرایند را یکجا انجام بدهید.

امیدواریم مفید بوده باشد.