Python заполнить колонку

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Andrey Zhukov
Гуру
Сообщения: 838
Зарегистрирован: 10 дек 2009, 23:24
Репутация: 169
Ваше звание: старик-гисовик
Откуда: Москва
Контактная информация:

Re: Python заполнить колонку

Сообщение 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

Re: Python заполнить колонку

Сообщение 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
Ваше звание: старик-гисовик
Откуда: Москва
Контактная информация:

Re: Python заполнить колонку

Сообщение Andrey Zhukov » 27 авг 2013, 12:43

doujin , вот это реальная жесть :) Я пока читал - уже запутался.

Syllion
Активный участник
Сообщения: 167
Зарегистрирован: 23 сен 2009, 16:09
Репутация: 0

Re: Python заполнить колонку

Сообщение 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("\"", "")
В поле ниже:

Код: Выделить всё

calcPreview(myVar,!cDataFileN!)

Syllion
Активный участник
Сообщения: 167
Зарегистрирован: 23 сен 2009, 16:09
Репутация: 0

Re: Python заполнить колонку

Сообщение Syllion » 28 авг 2013, 10:02

doujin, ваш вариант выдает ошибку:
Безымянный1.png
Безымянный1.png (19.41 КБ) 6610 просмотров

Andrey Zhukov
Гуру
Сообщения: 838
Зарегистрирован: 10 дек 2009, 23:24
Репутация: 169
Ваше звание: старик-гисовик
Откуда: Москва
Контактная информация:

Re: Python заполнить колонку

Сообщение 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

Re: Python заполнить колонку

Сообщение Syllion » 28 авг 2013, 10:34

О спасибо огромное заработало!

doujin
Активный участник
Сообщения: 163
Зарегистрирован: 28 июн 2012, 01:02
Репутация: 84
Откуда: Vladivostok

Re: Python заполнить колонку

Сообщение doujin » 28 авг 2013, 13:17

Syllion писал(а):doujin, ваш вариант выдает ошибку
Писал о том, что бы не запутались в бекслешах, и сам запутался. Исправил код в своем предыдущем сообщении. Там в строке myvar не хватало несколько этих бекслешей.

Syllion
Активный участник
Сообщения: 167
Зарегистрирован: 23 сен 2009, 16:09
Репутация: 0

Re: Python заполнить колонку

Сообщение Syllion » 28 авг 2013, 15:36

всем спасибо большое

Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя