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

Не определён идентификатор границы для пары идентификаторов

СообщениеДобавлено: Ср дек 04, 2013 5:04 pm
vitte
Что бы не плодить тем, продолжу в этой:
При генерации XML, выдается - "Ошибка! Не определён идентификатор границы для пары идентификаторов точек 27582 27583"
Что это? Как Лечить?

Re: Ошибка при создании XML

СообщениеДобавлено: Ср дек 04, 2013 6:14 pm
dab
Выделил в отдельную тему. Так проще будет ориентироваться и ссылаться на уже рассмотренную проблему.

vitte писал(а):При генерации XML, выдается - "Ошибка! Не определён идентификатор границы для пары идентификаторов точек 27582 27583"
Что это? Как Лечить?

Всё в терминах-названиях PostgreSQL
1. В таблице "msk.tochka" есть две точки с первичными ключами (id) равными 27582 и 27583
2. эти две точки имеют одинаковое значение поля "nomer_chasti", то есть принадлежат одному контуру (внешнему или внутреннему)
3. эти две точки имеют соседние значения (отличающиеся на единицу) поля "poryadok_obhoda"

При формировании XML происходит попытка найти границу ЗУ между этими двумя точками. Поиск осуществляется по таблице соответствий точки-границы "public.granica_tochka". Граница, соответствующая этим двум точкам не находится, то есть идентификатор границы не найден.

Почему? Затрудняюсь ответить - нужно смотреть слой в QGIS. Варианты: не округляли до сантиметров координаты полигонов ЗУ перед созданием точек и границ; импортировали КВЗУ, а потом импортировали геометрию полигонов с внутренними контурами и т.д.

Как лечить? Смотрите по ситуации: для небольшого числа таких пар точек - исправить "вручную", через атрибуты точек значения полей "nomer_chasti" и "poryadok_obhoda"; или создать недостающую границу по двум точкам через специальную функцию модуля.
Для большого числа пар точек - проще удалить все точки/границы контура и создать новые.

Re: Не определён идентификатор границы для пары идентификато

СообщениеДобавлено: Чт дек 05, 2013 8:27 am
vitte
Таких точек у меня много. Не создается граница на внутренних полигонах определенной формы (см. рис.) я, правда, не все ошибочные точки проверил.
Координаты перед генерацией точек и границ округлял.
В логах постгреса выдается:
2013-12-05 10:20:57 NOVT ОШИБКА: повторяющееся значение ключа нарушает ограничение уникальности "granica_idx"
2013-12-05 10:20:57 NOVT ПОДРОБНОСТИ: Ключ "(id_uchastok, dlina, pre, geom)=(6441, 0.02, 0, 0102000000020000000AD7A3A05DDA50419A9999F9E5C85C41000000A05DDA504185EB51F8E5C85C41)" уже существует.
2013-12-05 10:20:57 NOVT ОПЕРАТОР: INSERT INTO "msk"."granica"("geom","id","id_uchastok","id_msk") VALUES (st_geomfromwkb($1::bytea,0),$2,'6441','0e5059fb-75ef-4021-855e-8101aea729bb')

Re: Не определён идентификатор границы для пары идентификато

СообщениеДобавлено: Чт дек 05, 2013 10:32 am
dab
vitte писал(а):В логах постгреса выдается:
2013-12-05 10:20:57 NOVT ОШИБКА: повторяющееся значение ключа нарушает ограничение уникальности "granica_idx"
2013-12-05 10:20:57 NOVT ПОДРОБНОСТИ: Ключ "(id_uchastok, dlina, pre, geom)=(6441, 0.02, 0,

Проблему понял. Разбираюсь.

Re: Не определён идентификатор границы для пары идентификато

СообщениеДобавлено: Чт дек 05, 2013 11:33 am
dab
vitte писал(а):В логах постгреса выдается:
2013-12-05 10:20:57 NOVT ОШИБКА: повторяющееся значение ключа нарушает ограничение уникальности "granica_idx"

Пардон, "перемудрил" с базой данных.
Прежде не приходилось сталкиваться с границами в 1-2 сантиметра.
Выполните удаление этого индекса.
Код: Выделить всё
DROP INDEX msk.granica_idx;

Для нужных полигонов выполните "Создать точки и границы".

Re: Не определён идентификатор границы для пары идентификато

СообщениеДобавлено: Чт дек 05, 2013 4:39 pm
vitte
Заработало. Спасибо.