Проблемка с ST_Union

Не знаете, где задать вопрос? Задавайте здесь.
Ответить
ParysNIK
Новоприбывший
Сообщения: 5
Зарегистрирован: 06 апр 2015, 01:36
Репутация: 0

Проблемка с ST_Union

Сообщение ParysNIK »

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

Изображение
Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

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

Сообщение rhot »

Сталкивался. Ошибка топологии. Смотрите узлы полигонов вблизи.

См. тему: viewtopic.php?f=14&t=21150
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
ParysNIK
Новоприбывший
Сообщения: 5
Зарегистрирован: 06 апр 2015, 01:36
Репутация: 0

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

Сообщение 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.
gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

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

Сообщение gamm »

обычно такого рода проблемы связаны с определением того, "что есть ноль". Там толерансы какие-нибудь есть для обработке (в глобальных настройках)?
Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

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

Сообщение Ariki »

Укажите версии PostGIS и GEOS.
Проверьте границу на наличие дубликатов узлов.
Экспортируйте проблемные геометрии в WKB, чтобы другие участники могли посмотреть, в чём дело.
Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

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

Сообщение rhot »

Ага, в R это контролируется с помощью rgeos::setScale()
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

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

Сообщение Boris »

Ariki писал(а):Укажите версии PostGIS и GEOS.
Проверьте границу на наличие дубликатов узлов.
Экспортируйте проблемные геометрии в WKB, чтобы другие участники могли посмотреть, в чём дело.
А я бы попросил MIF или geoCSV, их смотреть удобней.
Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

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

Сообщение Ariki »

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

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

Вернуться в «Я новичок!»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя