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


- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Проблемка с ST_Union
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 06 апр 2015, 01:36
- Репутация: 0
Re: Проблемка с ST_Union
Смотрю, но вот ничего не вижу. Форма объектов в этом месте близка к прямоугольному, никаких бантиков или треугольников, как показано в Вашем посте, и близко нет. ST_IsValid тоже ничего не видит (все невалидные объекты были исправлены до этого). Очень странно. Есть мысли, как автоматически инструментарием PostGIS'a это можно вылечить? По-моему, просмотрел весь его функционал, но как-то ничего не получаетсяrhot писал(а):Сталкивался. Ошибка топологии. Смотрите узлы полигонов вблизи.
См. тему: viewtopic.php?f=14&t=21150

P.S. Ошибку до этого получилось ликвидировать экспортом в шейп через QGIS. При новом импортировании PostGIS ошибок уже не видел.

P.S.S. Если вместо ST_Union использовать ST_Collect, слияние проходит, однако при дальнейшей работе (нужно получившийся объект вырезать из другого, более крупного, объекта) падает функция ST_Difference.
-
- Гуру
- Сообщения: 4168
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
Re: Проблемка с ST_Union
обычно такого рода проблемы связаны с определением того, "что есть ноль". Там толерансы какие-нибудь есть для обработке (в глобальных настройках)?
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Проблемка с ST_Union
Укажите версии PostGIS и GEOS.
Проверьте границу на наличие дубликатов узлов.
Экспортируйте проблемные геометрии в WKB, чтобы другие участники могли посмотреть, в чём дело.
Проверьте границу на наличие дубликатов узлов.
Экспортируйте проблемные геометрии в WKB, чтобы другие участники могли посмотреть, в чём дело.
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Проблемка с ST_Union
Ага, в R это контролируется с помощью rgeos::setScale()
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Проблемка с ST_Union
А я бы попросил MIF или geoCSV, их смотреть удобней.Ariki писал(а):Укажите версии PostGIS и GEOS.
Проверьте границу на наличие дубликатов узлов.
Экспортируйте проблемные геометрии в WKB, чтобы другие участники могли посмотреть, в чём дело.
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Проблемка с ST_Union
Смотреть-то удобнее, но хотелось бы иметь возможность загрузить геометрии в PostGIS в исходном виде. Конвертация координат в десятичное представление и обратно чревата потерей точности.
Понятия толеранса вроде бы в PostGIS нет, если только речь не идёт о топологических слоях (PostGIS Topology).
Понятия толеранса вроде бы в PostGIS нет, если только речь не идёт о топологических слоях (PostGIS Topology).
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей