Помогите написать часть скрипта на Python'e

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
JGBoBBy
Интересующийся
Сообщения: 17
Зарегистрирован: 03 июл 2008, 09:43
Репутация: 0

Помогите написать часть скрипта на Python'e

Сообщение JGBoBBy »

Задача такая: нужно делать выборку из таблицы по определенному значению, которое должен задавать пользователь вводя данные в инструмент.

Вот строка которая делает выборку:

gp.SelectLayerByAttribute_management(feature, "NEW_SELECTION", "\"NAME\" <> 111111")
- данные - feature, поле NAME, значение 111111.

Эта строка появилась, когда я экспортровал модель с инструментом SelectLayerByAttribute.

Необходимо чтобы при старте тула, человек забивал значение, которое будет искаться в поле NAME.

Например создаем переменную:
value = sys.argv[1]

Но как потом эту переменную впихнуть в это -
"\"NAME\" <> 111111"

Вся проблема в том, что выражение должно быть написано в ковычках.
Поделитесь опытом плиз. Спасибо
KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: Помогите написать часть скрипта на Python'e

Сообщение KolesovDmitry »

JGBoBBy писал(а): Вот строка которая делает выборку:

gp.SelectLayerByAttribute_management(feature, "NEW_SELECTION", ""NAME" <> 111111")
Необходимо чтобы при старте тула, человек забивал значение, которое будет искаться в поле NAME.
Например создаем переменную:
value = sys.argv[1]

Но как потом эту переменную впихнуть в это -
""NAME" <> 111111"
Попробуйте что-нибудь вроде:

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

'"Name"<>'+str(value)
Тогда, если vauee=546, то результатом выражения будет строка "NAME"<>546
Можно попробовать

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

'"Name"<>'+'"'+str(value)+'"'
Результат: "NAME"<>"546"
JGBoBBy
Интересующийся
Сообщения: 17
Зарегистрирован: 03 июл 2008, 09:43
Репутация: 0

Сообщение JGBoBBy »

Спасибо.
Но так не покатывает...
Выражение должно быть точно:

"\"NAME\" <> 111111" - в кавычках снаружи.

Либо "[NAME] <> 111111" - вроде такое тоже должно прокатить. Как поставить внешние кавычки?
JGBoBBy
Интересующийся
Сообщения: 17
Зарегистрирован: 03 июл 2008, 09:43
Репутация: 0

Сообщение JGBoBBy »

Так?
'"[Name]<>'+str(value)+'"'
JGBoBBy
Интересующийся
Сообщения: 17
Зарегистрирован: 03 июл 2008, 09:43
Репутация: 0

Сообщение JGBoBBy »

Точно так.. Спасибо, я не знал про одинарные кавычки...
Все работает
JGBoBBy
Интересующийся
Сообщения: 17
Зарегистрирован: 03 июл 2008, 09:43
Репутация: 0

Re: Помогите написать часть скрипта на Python'e

Сообщение JGBoBBy »

KolesovDmitry писал(а):
JGBoBBy писал(а): Вот строка которая делает выборку:

gp.SelectLayerByAttribute_management(feature, "NEW_SELECTION", ""NAME" <> 111111")
Необходимо чтобы при старте тула, человек забивал значение, которое будет искаться в поле NAME.
Например создаем переменную:
value = sys.argv[1]

Но как потом эту переменную впихнуть в это -
""NAME" <> 111111"
Попробуйте что-нибудь вроде:

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

'"Name"<>'+str(value)
Тогда, если vauee=546, то результатом выражения будет строка "NAME"<>546
Можно попробовать

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

'"Name"<>'+'"'+str(value)+'"'
Результат: "NAME"<>"546"
Все-таки нужно выражение именно такого вида:

""NAME" =111111"

в ковычках и со слешами... Как сделать?

Делаю так:

print '""NAME"'

результат

""NAME"

А как слеши сделать???
Спасибо
KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: Помогите написать часть скрипта на Python'e

Сообщение KolesovDmitry »

JGBoBBy писал(а): Все-таки нужно выражение именно такого вида:
""NAME" =111111"
в ковычках и со слешами... Как сделать?
Если нужно именно в кавычках и со слешами, то попробуйте

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

print '"\"NAME\"=87768"'
Результатом должно быть

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

""NAME"=87768"
Того же результата можно добиться и так:

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

print r'""NAME"=87768"'
JGBoBBy
Интересующийся
Сообщения: 17
Зарегистрирован: 03 июл 2008, 09:43
Репутация: 0

Сообщение JGBoBBy »

Не могу понять в чем проблема. Нужно получить следующее:

gp.SelectLayerByAttribute_management(feature, "NEW_SELECTION", "\"NAME\" = 555")

Пытаюсь так:
value = 555
print '"\\"NAME\\" =' + str(value) + '"'
gp.SelectLayerByAttribute_management(feature, "NEW_SELECTION", '"\\"NAME\\" =' + str(value) + '"')

результат print - "\"NAME\" = 555" - т.е. эта часть правильна, но результат выборки -

Traceback (most recent call last):
File "***", line 62, in <module>
gp.SelectLayerByAttribute_management(feature, "NEW_SELECTION", '"\\"NAME\\" = ' + str(value) + '"')
ExecuteError: ERROR 000358: Invalid expression
Failed to execute (SelectLayerByAttribute).

Пытался так:

value = 555
exp = '"\\"NAME\\" =' + str(value) + '"'
print exp
gp.SelectLayerByAttribute_management(feature, "NEW_SELECTION", exp)

Таже ошибка.

А вот если пишу так:
gp.SelectLayerByAttribute_management(feature, "NEW_SELECTION", "\"NAME\" = 555")

то выборка делается.
Видимо так нельзя параметр задавать для этого инструмнта. Подскажите пожалуйста как правильно писать. Спасибо
Ответить

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

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

Сейчас этот форум просматривают: Ahrefs [Bot] и 1 гость