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

Проблемка с ST_Union

Добавлено: 13 июн 2016, 19:56
ParysNIK
Здравствуйте. Есть слой с кучей (более 40к) мультиполигонов. Задача - объединить всё в один объект. Использую в PostGIS функцию ST_Union, но вылезает ошибка (см. скриншот). При этом до этого слой на валидность проверил и исправил с помощью ST_MakeValid. Навскидку, в чем может быть проблема? Может, сталкивался кто? В QGis нахожу эту точку - вроде ничего необычного с объектом нет.

Изображение

Re: Проблемка с ST_Union

Добавлено: 13 июн 2016, 20:34
rhot
Сталкивался. Ошибка топологии. Смотрите узлы полигонов вблизи.

См. тему: viewtopic.php?f=14&t=21150

Re: Проблемка с ST_Union

Добавлено: 13 июн 2016, 21:28
ParysNIK
rhot писал(а):Сталкивался. Ошибка топологии. Смотрите узлы полигонов вблизи.

См. тему: viewtopic.php?f=14&t=21150
Смотрю, но вот ничего не вижу. Форма объектов в этом месте близка к прямоугольному, никаких бантиков или треугольников, как показано в Вашем посте, и близко нет. ST_IsValid тоже ничего не видит (все невалидные объекты были исправлены до этого). Очень странно. Есть мысли, как автоматически инструментарием PostGIS'a это можно вылечить? По-моему, просмотрел весь его функционал, но как-то ничего не получается :(
P.S. Ошибку до этого получилось ликвидировать экспортом в шейп через QGIS. При новом импортировании PostGIS ошибок уже не видел.

Изображение

P.S.S. Если вместо ST_Union использовать ST_Collect, слияние проходит, однако при дальнейшей работе (нужно получившийся объект вырезать из другого, более крупного, объекта) падает функция ST_Difference.

Re: Проблемка с ST_Union

Добавлено: 14 июн 2016, 14:28
gamm
обычно такого рода проблемы связаны с определением того, "что есть ноль". Там толерансы какие-нибудь есть для обработке (в глобальных настройках)?

Re: Проблемка с ST_Union

Добавлено: 14 июн 2016, 14:49
Ariki
Укажите версии PostGIS и GEOS.
Проверьте границу на наличие дубликатов узлов.
Экспортируйте проблемные геометрии в WKB, чтобы другие участники могли посмотреть, в чём дело.

Re: Проблемка с ST_Union

Добавлено: 14 июн 2016, 17:29
rhot
Ага, в R это контролируется с помощью rgeos::setScale()

Re: Проблемка с ST_Union

Добавлено: 15 июн 2016, 19:03
Boris
Ariki писал(а):Укажите версии PostGIS и GEOS.
Проверьте границу на наличие дубликатов узлов.
Экспортируйте проблемные геометрии в WKB, чтобы другие участники могли посмотреть, в чём дело.
А я бы попросил MIF или geoCSV, их смотреть удобней.

Re: Проблемка с ST_Union

Добавлено: 16 июн 2016, 12:27
Ariki
Смотреть-то удобнее, но хотелось бы иметь возможность загрузить геометрии в PostGIS в исходном виде. Конвертация координат в десятичное представление и обратно чревата потерей точности.

Понятия толеранса вроде бы в PostGIS нет, если только речь не идёт о топологических слоях (PostGIS Topology).