RUS  ENG 

Объединение баз данных разных слоёв

Страницы: 1
RSS
Объединение баз данных разных слоёв
 
Есть два слоя - расчётный слой с тепловой сетью и слой Повреждения.
Можно ли сделать так, чтобы при нанесении символа повреждения на трубопровод в слой Повреждения подгружалась основная информация из расчётного слоя (наименование камер, протяженность, диаметр)?
 
Идея понятна. ГИС это позволяет.

Пожалуйста подробно опишите действия, которые совершает оператор, который заносит повреждения.
Что означает "подгружалась основная информация" из каких объектов слоя тепловой сети. Какие дальнейшие действия с полученной информацией вы собираетесь предпринимать.
 
На участок тепловой сети (слой "Расчётный") оператор наносит символьное обозначение повреждения (слой "Повреждения"). К данному символу подключена база данных "Повреждения". В данную базу необходимо внести информацию о месте повреждения, характере, прикрепить акт и т.п.
Для того, чтобы можно было работать с базой данных Повреждений (например, выгружать в excel) без обращения к графическому изображению тепловых сетей в символ повреждения вносится следующая информация:
  • район тепловых сетей;
  • наименование начала участка;
  • наименование конца участка;
  • диаметр;
  • протяжённость.
Вышеуказанная информация копируется вручную из слоя "Расчётный" (элемент - трубопровод).. Хотелось бы упростить этот этап. Чтобы данная копировалась автоматически.
 
Уже появилось 2 варианта дальнейшего развития сценария.

Первый вариант
По вашим словам, данные из таблицы участков достаточно скопировать в таблицу повреждений. Это можно сделать вручную, либо SQL запросом либо макросом. вручную вы умеете, SQL запрос может использовать оператор сравнения геометрии, Distance<(расстояние от центра символа повреждение, до участка) и выглядеть так:
Код
UPDATE [defect]
set [defect].[Диаметр участка] = [voda].[Внутренний диаметр трубы, мм]
where[voda].geometry.distance([defect].geometry)<10
and   [voda].typeid = 8

Если говорить о макросе, все немного посложнее, можно использовать метод GetClosestElementByXY – поиск ближайшего объекта (позже добавим на сайт пример использования данного метода).

www.politerm.com/zuludoc/zuluax/index.html#Layer_GetClosestElementByXY.html

Второй вариант.

Копирование данных производиться не будет. Используется механизм связи 2-х и более таблиц (справка). Но необходимо соблюсти несколько условий.

1) Таблицы обоих слоев должны быть размещены в одном источнике данных, желательно в одном источнике ADO или ODBC(Microsofr SQL server или аналоги).

2) Необходимо продумать взаимодействие этих 2 таблиц, к примеру в таблицу повреждений добавить поле, в котором будет храниться идентификатор участка, это может быть поле sys или инвентарный номер участка.

3) Определиться с тем, как будет заполняться идентификатор участка в таблице повреждений: вручную, запросом SQL, скриптом. Описывалось в первом варианте.

4) В базе данных слоя повреждений необходимо создать еще один запрос, в котором произвести связь таблиц повреждений и участков.

 
Цитата
Дмитрий Емельянов написал:
Второй вариант.Копирование данных производиться не будет. Используется механизм связи 2-х и более таблиц ( справка ). Но необходимо соблюсти несколько условий.1) Таблицы обоих слоев должны быть размещены в одном источнике данных, желательно в одном источнике ADO или ODBC(Microsofr SQL server или аналоги).2) Необходимо продумать взаимодействие этих 2 таблиц, к примеру в таблицу повреждений добавить поле, в котором будет храниться идентификатор участка, это может быть поле sys или инвентарный номер участка.3) Определиться с тем, как будет заполняться идентификатор участка в таблице повреждений: вручную, запросом SQL, скриптом. Описывалось в первом варианте.4) В базе данных слоя повреждений необходимо создать еще один запрос, в котором произвести связь таблиц повреждений и участков.
Спасибо. Скорее всего будем использовать второй вариант. Осталось только перевести базы в Microsofr SQL server (сейчас SQLite).

В настоящий момент в расчётном слое у нас имеется несколько запросов по участкам тепловых сетей и дополнительные запросы связаны с основным, т.е. идёт автоматическое заполнение основной информации по участкам. Основная информация в принципе аналогична той, что указана в моём втором сообщении.
Но есть нюанс. Например, для района тепловых сетей подключен справочник и в дополнительном запросе отображается не наименование района (например, РТС-1), а его код из справочника (1). Можно ли сделать так, чтобы отображалось значение из справочника, а не код?
 
Можно. Для этого в запросе, в свойствах поля необходимо будет подключить тот же справочник.

Пункт 8. Свойства полей запроса.
 
Цитата
Дмитрий Емельянов написал:
Можно. Для этого в запросе, в свойствах поля необходимо будет подключить тот же справочник.

Пункт 8. Свойства полей запроса.
Подключила, но ничего не изменилось.
 
Пришлите либо слой, либо галерею скриншотов (настройки запроса, настройки поля, окна информации)
 
В запросе выборка из справочника появилась, в текущей записи отсутствует.
Тип поля "Короткое целое".
Изменено: Carina - 11.10.2019 06:32:14
 
В текущей записи справочник отключен т.к. это поле нередактируемое.
В запросе подключен т.к. справочник должен участвовать при создании фильтров.
Страницы: 1