Проблемка с ST_Union

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

Проблемка с ST_Union

Сообщение ParysNIK » 13 июн 2016, 19:56

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

Изображение

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

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

Сообщение rhot » 13 июн 2016, 20:34

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

См. тему: viewtopic.php?f=14&t=21150
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

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

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

Сообщение ParysNIK » 13 июн 2016, 21:28

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

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

Сообщение gamm » 14 июн 2016, 14:28

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

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

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

Сообщение Ariki » 14 июн 2016, 14:49

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

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

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

Сообщение rhot » 14 июн 2016, 17:29

Ага, в R это контролируется с помощью rgeos::setScale()
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

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

Сообщение Boris » 15 июн 2016, 19:03

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

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

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

Сообщение Ariki » 16 июн 2016, 12:27

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

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

Ответить

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

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

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