ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Andrey Zhukov
Гуру
Сообщения: 838 Зарегистрирован: 10 дек 2009, 23:24
Репутация: 169
Ваше звание: старик-гисовик
Откуда: Москва
Контактная информация:
Сообщение
Andrey Zhukov » 26 авг 2013, 16:18
Значит, попробуйте второй вариант.
UPD!
Нет, это я все в размышлениях о курсорах насоветовал. Категорически без codeblock ничего не выйдет. В общем, либо питон и курсоры, либо инструмент и кодблок.
Как-то так:
Код: Выделить всё
def calcPreview(myVar,dataFile):
return myVar + dataFile.replace(".img","_preview.jpg").replace("\"", "")
doujin
Активный участник
Сообщения: 163 Зарегистрирован: 28 июн 2012, 01:02
Репутация: 84
Откуда: Vladivostok
Сообщение
doujin » 27 авг 2013, 12:30
Можно и без курсоров, главное в инструмент калькулятора поля передавать полностью корректное выражение. Тут главное не запутаться в кавычках и бэкслешах.
Код: Выделить всё
import arcpy
input_based_on_raster = "C:\\1\\2\\fr_kv1_05002_05000_01_3np2_08_t_pss1_034412_180613_raster_reclass.shp"
myvar = "\"C:\\\\somefolder\\\\\""
arcpy.CalculateField_management(input_based_on_raster, "preview", "{0} + {1}".format(myvar, "!cDataFileN!.replace(\".img\",\"_preview.jpg\").replace(\"\\\"\", \"\")"), "PYTHON_9.3", "")
Последний раз редактировалось
doujin 28 авг 2013, 13:12, всего редактировалось 2 раза.
Andrey Zhukov
Гуру
Сообщения: 838 Зарегистрирован: 10 дек 2009, 23:24
Репутация: 169
Ваше звание: старик-гисовик
Откуда: Москва
Контактная информация:
Сообщение
Andrey Zhukov » 27 авг 2013, 12:43
doujin , вот это реальная жесть
Я пока читал - уже запутался.
Syllion
Активный участник
Сообщения: 167 Зарегистрирован: 23 сен 2009, 16:09
Репутация: 0
Сообщение
Syllion » 28 авг 2013, 09:51
fall_out_bug писал(а): Значит, попробуйте второй вариант.
UPD!
Нет, это я все в размышлениях о курсорах насоветовал. Категорически без codeblock ничего не выйдет. В общем, либо питон и курсоры, либо инструмент и кодблок.
Как-то так:
Код: Выделить всё
def calcPreview(myVar,dataFile):
return myVar + dataFile.replace(".img","_preview.jpg").replace("\"", "")
А не подскажите, как этот пример использовать?
В PreLogic script я пишу:
Код: Выделить всё
myVar = "C:\\somefolder"
def calcPreview(myVar,!cDataFileN!):
return myVar + dataFile.replace(".img","_preview.jpg").replace("\"", "")
В поле ниже:
Syllion
Активный участник
Сообщения: 167 Зарегистрирован: 23 сен 2009, 16:09
Репутация: 0
Сообщение
Syllion » 28 авг 2013, 10:02
doujin , ваш вариант выдает ошибку:
Безымянный1.png (19.41 КБ) 6634 просмотра
Andrey Zhukov
Гуру
Сообщения: 838 Зарегистрирован: 10 дек 2009, 23:24
Репутация: 169
Ваше звание: старик-гисовик
Откуда: Москва
Контактная информация:
Сообщение
Andrey Zhukov » 28 авг 2013, 10:08
Код: Выделить всё
myVar = "C:\\somefolder"
def calcPreview(myVar,!cDataFileN!):
return myVar + dataFile.replace(".img","_preview.jpg").replace("\"", "")
Ну так неправильно же!
Вы объявляете переменную !cDataFileN! (что вообще некорректно!), а вызываете dataFile. Плюс объявляете переменную myVar и назначаете ее.
Надо так:
Код: Выделить всё
def calcPreview(myVar, dataFile):
return myVar + dataFile.replace(".img","_preview.jpg").replace("\"", "")
Код: Выделить всё
calcPreview("C:\\somefolder\\",!cDataFileN!)
Syllion
Активный участник
Сообщения: 167 Зарегистрирован: 23 сен 2009, 16:09
Репутация: 0
Сообщение
Syllion » 28 авг 2013, 10:34
О спасибо огромное заработало!
doujin
Активный участник
Сообщения: 163 Зарегистрирован: 28 июн 2012, 01:02
Репутация: 84
Откуда: Vladivostok
Сообщение
doujin » 28 авг 2013, 13:17
Syllion писал(а): doujin , ваш вариант выдает ошибку
Писал о том, что бы не запутались в бекслешах, и сам запутался. Исправил код в своем предыдущем сообщении. Там в строке
myvar не хватало несколько этих бекслешей.
Syllion
Активный участник
Сообщения: 167 Зарегистрирован: 23 сен 2009, 16:09
Репутация: 0
Сообщение
Syllion » 28 авг 2013, 15:36
всем спасибо большое
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей