Недавно начал изучать Python и параллельно Arcpy. Написал первый скрипт, который автоматически создает новые строчки в таблицах и переносит данные из ячейки в ячейку. Поместил его в кнопку. Скрипт работает и делает все правильно. Только вот после выполнения скрипта не могу вручную изменить значение ни в одной ячейки. Он изменять дает, но после перехода в другую ячейку возвращает ее к начальному значению. В интернете перерыл всё, но ответа так и не нашел. Скорее всего нужно в конце добавлять какой то параметр в работу скрипта или работу кнопки. Может если кто то сталкивался, помогите.
Код: Выделить всё
import arcpy
import pythonaddins
class PipeLine(object):
"""Implementation for MOG_addin.PL1 (Button)"""
def __init__(self):
self.enabled = True
self.checked = False
def onClick(self):
def new_field(table):
newRow = arcpy.da.InsertCursor(table, ["OBJECTID"])
for row in range(1):
a = newRow.insertRow([0])
b = arcpy.SelectLayerByAttribute_management(table, "NEW_SELECTION", '"OBJECTID" = %i' % a)
del a
del b
del newRow
#Копируему GlobalID и вставляем его в текстовое поле другой таблицы
def copypast_glid(table1, table2, field_str):
glid = arcpy.UpdateCursor(table1)
for x in glid:
a1 = x.getValue(str("GlobalID"))
iii = arcpy.UpdateCursor(table2)
for p in iii:
p.setValue(field_str, a1)
iii.updateRow(p)
del a1
del iii, glid
#Вставляем GlobalID в нужное поле и корректируем строковое поле
def past_guid(table, field1, field2, field3):
with arcpy.da.UpdateCursor(table, [field1, field2, field3]) as cursor:
for row in cursor:
row[1] = row[0]
if field1 == "ITD_LINK":
row[0] = str("http://gis.map.mosoblgaz.ru/ea/supr.php?fn=" + str(row[2]))
else:
row[0] = str("http://gis.map.mosoblgaz.ru/ea/supr.php?fn=" + str(row[2]) + "&book=1")
cursor.updateRow(row)
del cursor
#Заполняем поля
def past_info(table1, table2, field1, field2):
atr = arcpy.UpdateCursor(table1)
for m in atr:
atr1 = m.getValue(field1)
atr11 = arcpy.UpdateCursor(table2)
for p1 in atr11:
p1.setValue(field2, atr1)
atr11.updateRow(p1)
del atr1
del atr, atr11
#Заполняем атрибуты в таблице PIPELINE
new_field("PIPELINE")
copypast_glid("PIPELINE", u'Сегмент НД', "Ssilka_na_skan")
past_guid(u'Сегмент НД', "Ssilka_na_skan", "Pipe_id", "SCAN_NUMBER")
past_info(u'Сегмент НД', "PIPELINE", "DEPART_ID", "DEPART_ID")
past_info(u'Сегмент НД', "PIPELINE", "ITD_NAME", "ITD_NAME")
past_info(u'Сегмент НД', "PIPELINE", "ITD_NUMBER", "ITD_NUMBER")
past_info(u'Сегмент НД', "PIPELINE", "ITD_LINK", "ITD_LINK")
past_info(u'Сегмент НД', "PIPELINE", "ITD_DATA", "ITD_DATA")
past_info(u'Сегмент НД', "PIPELINE", "ITD_DATA", "ITD_DATA")
past_info(u'Сегмент НД', "PIPELINE", "MK_NUMBER", "MK_NUMBER")
past_info(u'Сегмент НД', "PIPELINE", "Naimenovanie_pipeline", "Naimenovanie_GP_2")
past_info(u'Сегмент НД', "PIPELINE", "Filial", "Filial")
#Заполняем поля в таблице Gas_adress
new_field("Gas_adress")
copypast_glid("PIPELINE", "Gas_adress", "URL_ssilka")
past_guid("Gas_adress", "URL_ssilka", "Gazoprovod", "No_op_No_ITD")
#past_info("PIPELINE", "Gas_adress", "Filial", "Filial")
#past_info("PIPELINE", "Gas_adress", "DEPART_ID", "RES")
past_info("PIPELINE", "Gas_adress", "ITD_NAME", "Adress_ITD")
past_info("PIPELINE", "Gas_adress", "ITD_LINK", "URL_ssilka")
#Заполняем поля в таблице Gas_segment_VS
new_field("Gas_segment_VS")
copypast_glid("Gas_adress", "Gas_segment_VS", "URL_ssilka")
past_guid("Gas_segment_VS", "URL_ssilka", "Gas_Adress_TORO", "No_OP_No_ITD_No_inventar")
past_info(u'Сегмент НД', "Gas_segment_VS", "INV_NO", "No_inventar")
past_info(u'Сегмент НД', "Gas_segment_VS", "PRIMECHANIE", "Primechanie")
#past_info(u'Сегмент НД', "Gas_segment_VS", "BALANCE", "Balance")
past_info("PIPELINE", "Gas_segment_VS", "ITD_LINK", "URL_ssilka")
#Заполняем поля в таблице Gas_technic
new_field("Gas_technic")
copypast_glid("Gas_segment_VS", "Gas_technic", "URL_ssilka")
past_guid("Gas_technic", "URL_ssilka", "Gas_Segment_TORO", "Characteristics")
#past_info(u'Сегмент НД', "Gas_technic", "PRESSURE_TYPE", "Kategoria_davlenia")
#past_info(u'Сегмент НД', "Gas_technic", "SG_LAYING", "Sposob_prokladki")
#past_info(u'Сегмент НД', "Gas_technic", "MATERIAL", "Material")
#past_info(u'Сегмент НД', "Gas_technic", "SG_DIAM_CND", "Diametr")
past_info("PIPELINE", "Gas_technic", "ITD_LINK", "URL_ssilka")
pass