Python + динамический запрос в базу - помогите разобраться

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
lucasalm86
Новоприбывший
Сообщения: 3
Зарегистрирован: 19 авг 2015, 21:30
Репутация: 0

Python + динамический запрос в базу - помогите разобраться

Сообщение lucasalm86 » 19 авг 2015, 23:32

Доброго времени суток!

Прошу помочь разобраться с составлением динамических списков в моделях ModelBuilder с помощью Python'а. Я работаю в ArcGis 10.1 (стандартный Python 2.7).

Задача: разработать "дружелюбную" форму SQL запросов в таблицы баз данных с выводом результатов на экран. Для чего это нужно.. не все понимают принцыпы составления запроса в SQL Exspression или Field Calculator, поэтому пользователю будет предоставлена форма с галочками и динамически меняющимися списками, которые зависят от выбора параметра на предыдущем шаге. Подобных стандартных инструментов хватает в ModelBuilder, но поковыряться в них к сожалению нельзя :( В данной теме постараюсь разобраться в простом, дальше буду развивать форму в более сложную.

Почитал мануалы по созданию скриптов, входных выходных параметров, типы данных. Есть некоторые успехи в использовании стандартных моделей ModelBuilder в связке с Скриптами Python'а, но не во всем могу разобраться сам. С удовольствием почитаю решения подобных проблем в ссылках на литературу или в примерах форумчан.

В общем к сути. В таблице две колонки: Дата (посадки дерева) и Вид (вид дерева - выпадающий список из Домена "Виды деревьев"). Пользователь вызывает мою модель и ему высвечивается форма поиска по таблице с критериями поиска: Искать дату с (тип Date), искать дату по (тип Date), список виды деревьев (тип List - checkBox's), см. рис. 2.

Поля Искать дату с и искать дату по заполняются со стандартного выпадающего календарика. А вот список виды деревьев должен заполняться из CodeValues Домена "Виды деревьев" (назову их Item 1, Item 2 .. Item N). Дальше пользователь убрал галочки с ненужных видов деревьев и нажимает кнопку ОК. Происходит запрос в базу и выделяются найденный записи. Приведу упрощенную схему на рисунке:
Спойлер
Изображение
По пунктам к проблеме:
  1. 1. Беру Домен базы данных в качестве входного параметра в скрипт
  • 2. Генерирую список CodeValues. В данном пункте проблем не возникло (разобрался). Скрипт настроил так, чтобы на выходе был MultiValues
  • 3. Выкидываю обычный список из Скрипта в виде List. Пример скрипта создающий список CodeValues Домена взял из справки ArcGis
  • 4. Дальше начались проблемы: Я незнаю как показать пользователю список, сформированный на шаге 3, так как не срабатывает установка флажка Model Parametr на list. Список приведенный в примере вырвал из стандартной модели Frequency. Он удачно присваивается этому компоненту, но бестолку, дальше с ним ничего нельзя сделать :(
  • 5. Продолжу задуманную идею: Пользователь убирает ненужные галочки
  • 6. Передаю в скрипт 7 только активные названия в виде списка (или в виде строки, чтобы потом разбить split'ом в скрипте 7)
  • 7. Формирую SQL Exspression в блоке скрипта (оставлю эту проблему для самостоятельного разбирательства)
  • 8. Забираю в скрипт 7 даты для формирования запроса
  • 9. Получаю запрос с пункта 7
  • 10. Применяю стандартную модель выделения строк по запросу
Надеюсь приведенная упрощенная модель понятна.

Так вот, суть проблемы: как сделать вывод (сформированного в пункте 4) списка в компонент checkBox-List и так вывести, чтобы после выбора пользователя нужных галочек, весь этот список можно было передать в виде параметра в следующий скрипт?

На выходе я хочу получить форму приведенную на рисунке (пока что работает поиск по датам, checkBox - пустышка):
Спойлер
Изображение
Есть идеи?

Vaska72
Интересующийся
Сообщения: 26
Зарегистрирован: 03 янв 2012, 18:49
Репутация: 13
Откуда: Тюмень

Re: Python + динамический запрос в базу - помогите разобрать

Сообщение Vaska72 » 20 авг 2015, 06:10

Если я правильно понял, то Вам должно помочь это
http://blogs.esri.com/esri/arcgis/2012/ ... oice-list/

lucasalm86
Новоприбывший
Сообщения: 3
Зарегистрирован: 19 авг 2015, 21:30
Репутация: 0

Re: Python + динамический запрос в базу - помогите разобрать

Сообщение lucasalm86 » 09 сен 2015, 22:09

Спасибо, ссылка полностью раскрывает суть решения моей проблемы, даже смысла нет повторять действия из статьи. А еще лучше начать разбираться с этой статьи: Generating a choice list from a field. Ну и конечно же нужно немного почитать про синтаксис Python'a (без навыков программирования будет очень сложно).

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

Re: Python + динамический запрос в базу - помогите разобрать

Сообщение Andrey Zhukov » 10 сен 2015, 08:30

Раз уж начали работать с питоном, забудьте модел билдер как страшный сон :)

lucasalm86
Новоприбывший
Сообщения: 3
Зарегистрирован: 19 авг 2015, 21:30
Репутация: 0

Re: Python + динамический запрос в базу - помогите разобрать

Сообщение lucasalm86 » 10 сен 2015, 09:04

К сожалению, без модел билдер не получится интерфейс склепать для скрипта (пускай он простейший, но все же). По крайней мере я незнаю как его сделать по-другому :-(

[ Сообщение с мобильного устройства ]

Ответить

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

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

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