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 КБ) 6610 просмотров
-
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
всем спасибо большое
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя