На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Cемантики-классификаторы (списки)

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » Работа с базами данных в ГИС
Страницы: 1
RSS
Cемантики-классификаторы (списки), Панорама возвращает в таблицу БД код по списку значений вместо ключа.
 
Добрый день.
В ГИС Панорама через dbm открыта карта по таблице из БД PostgreSQL. Одно из полей таблицы в БД это ключ для семантики-классификатора, например, в поле БД указано "003002000000" (соответствует значению "Земли населенных пунктов" классификатора Приказа Росреестра от 24.12.2018 N П/0510), это ключ для кода №2 классификатора семантики 1018 классификатора survey.v5. При изменении значения этой семантики у объекта в карте на другое, например "Земли лесного фонда" в поле таблицы  БД PostgreSQL для этого объекта будет записано значение "5" (код классификатора семантики), а не "003005000000" (ключ классификатора семантики), что приводит к нечитаемости этих значений иными клиентами данной БД.
В "Справке для системы ГИС Панорама" нашел лишь это:
"... в полях таблиц БД, ассоциированных семантикам-классификаторам, могут содержаться либо ключевые значения из списка допустимых значений семантики, либо сами эти значения (раскодированные строки)."
что ситуацию никак не прояснило.
 
Добрый день!

Как правило, все семантики переносятся из БД в объекты карты и обратно "как есть", то есть как хранятся, так и записываются.
Значения семантик-классификаторов в объектах карты хранятся в виде кода. Поэтому и в БД лучше хранить именно код, а не ключ.

Когда выполняется запись из БД на карту, есть возможность анализа значения семантики - в случае, если с заданным значением не найден код семантики-классификатора, будет предпринята попытка поиска нужной записи семантики-классификаторе по ключу, определен код этого значения и код будет сохранен в семантику объекта.
Это, скорее, исключение.
При записи обратно в БД такой анализ не может быть выполнен и в БД будет записан код значения семантики-классификатора, хранящийся в объекте.

В нормализованной БД семантикам-классификаторам должны соответствовать поля-ссылки на справочники. Хранение "раскодированных" значений справочников в таблицах противоречит нормализации БД по первой нормальной форме.
Рекомендуется вынести значения поля "Категория земель" в отдельную таблицу-справочник, первичные ключи в которой сделать в соответствии с кодами значений семантики 1018.
Тем более, что значения ключей семантики "Категория земель" в survey.v5 содержат начальные нули, оставленные в классификаторе для совместимости, но упраздненные в Приказе Росреестра от 24.12.2018, то есть формально значение "3002000000" не равно "003002000000".  Это также может вызывать несостыковку с иными клиентами данной БД, поэтому это поле следует "кодифицировать" как указано выше.
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности