Страница 1 из 1

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

Добавлено: 19 авг 2015, 23:32
lucasalm86
Доброго времени суток!

Прошу помочь разобраться с составлением динамических списков в моделях 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 - пустышка):
Спойлер
Изображение
Есть идеи?

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

Добавлено: 20 авг 2015, 06:10
Vaska72
Если я правильно понял, то Вам должно помочь это
http://blogs.esri.com/esri/arcgis/2012/ ... oice-list/

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

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

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

Добавлено: 10 сен 2015, 08:30
Andrey Zhukov
Раз уж начали работать с питоном, забудьте модел билдер как страшный сон :)

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

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

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