ST_union error with no invalid geometry

Аватара пользователя
jerry-maori
Гуру
Сообщения: 585
Зарегистрирован: 22 авг 2012, 17:02
Репутация: 142
Откуда: Нижний Новгород

ST_union error with no invalid geometry

Сообщение jerry-maori » 15 дек 2017, 10:34

Есть полигональный слой (экспорт в shp из DWG и потом через shp2pgsql в PostGIS)

Код: Выделить всё

shp2pgsql -I -S -s 20008 AREA_UTF.shp AREA_UTF >import.sql
psql --host=192.168.10.172 --port=5432 --username=www_adm --password -d EPID_DATA -f import.sql -e
Далее мы его хотим по полю label диссолвить

Код: Выделить всё

CREATE TABLE area_utf_diss AS SELECT ST_UNION(geom),label FROM area_utf group by label
Он ругается:

Код: Выделить всё

psql:diss.sql:1: ОШИБКА:  GEOSUnaryUnion: TopologyException: Input geom 1 is invalid: Self-intersection at or near point 8420369.86913752 6255156.1067206627 at 8420369.86913752 6255156.1067206627
Мы его принуждаем к миру

Код: Выделить всё

UPDATE area_utf
  SET geom=ST_Multi(ST_CollectionExtract(ST_MakeValid(geom), 3))
  WHERE NOT ST_IsValid(geom)
Получаем

Код: Выделить всё

psql:valid.sql:3: ЗАМЕЧАНИЕ:  Self-intersection at or near point 8404634.3606683407 6280887.322793413
UPDATE 0
После этого принуждаем ещё раз

Код: Выделить всё

UPDATE area_utf SET geom=ST_MakeValid(geom)
Получаем

Код: Выделить всё

UPDATE 2984041

Но при диссолве ошибка остаётся.

Код: Выделить всё

SELECT * from area_utf WHERE NOT ST_isvalid(geom)
Возвращает 0 строк.

Чо он ваще:)?

trir
Гуру
Сообщения: 4659
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 876
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: ST_union error with no invalid geometry

Сообщение trir » 15 дек 2017, 10:49

экспорт в shp из DWG и потом через shp2pgsql в PostGIS
я из Civil 3D сразу в postGIS загружал
Возвращает 0 строк.
а если wkt посмотреть?

Аватара пользователя
jerry-maori
Гуру
Сообщения: 585
Зарегистрирован: 22 авг 2012, 17:02
Репутация: 142
Откуда: Нижний Новгород

Re: ST_union error with no invalid geometry

Сообщение jerry-maori » 15 дек 2017, 10:53

Код: Выделить всё

SELECT *,ST_AsText(geom) from area_utf WHERE NOT ST_isvalid(geom)
тоже пусто выдаёт
Или не то смотрю?

trir
Гуру
Сообщения: 4659
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 876
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: ST_union error with no invalid geometry

Сообщение trir » 15 дек 2017, 10:54

без условия

Код: Выделить всё

SELECT *,ST_AsText(geom) from area_utf

Аватара пользователя
jerry-maori
Гуру
Сообщения: 585
Зарегистрирован: 22 авг 2012, 17:02
Репутация: 142
Откуда: Нижний Новгород

Re: ST_union error with no invalid geometry

Сообщение jerry-maori » 15 дек 2017, 11:00

ну все 3 млн строк приводить не буду.
Вот 1

Код: Выделить всё

2899159;"СТРОЕНИЯ_ПЛОЩ";"TIN Face Area";"YES";"Solid";"RGB(234,255,170)";1;"No Fill";"СТРОЕНИЯ_ПЛОЩ             -Solid-RGB(234,255,170)";"0106000020284E00000100000001030000000100000004000000CDCCCC8CA81260418AC384EF39DA574185EB5140A8126041D866A7743BDA5741CDCCCC8CA8126041B81E85AB3BDA5741CDCCCC8CA81260418AC384EF39DA5741";"MULTIPOLYGON(((8426820.4 6252775.74247826,8426818.01 6252781.82271739,8426820.4 6252782.68,8426820.4 6252775.74247826)))"

gamm
Гуру
Сообщения: 3189
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 796
Ваше звание: программист
Откуда: Казань

Re: ST_union error with no invalid geometry

Сообщение gamm » 15 дек 2017, 11:10

jerry-maori писал(а):
15 дек 2017, 11:00
TIN Face Area
вот это смущает. Я не уверен, что это полигон (с точки зрения программы), это треугольник. В том смысле, что у него разных прибамбасов типа label может не быть.

trir
Гуру
Сообщения: 4659
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 876
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: ST_union error with no invalid geometry

Сообщение trir » 15 дек 2017, 11:10

так не валидная итоговая геометрия, а не исходные. Думаю треугольник торчит и касается общей только одной вершиной - вот и получается самопересечение

Аватара пользователя
jerry-maori
Гуру
Сообщения: 585
Зарегистрирован: 22 авг 2012, 17:02
Репутация: 142
Откуда: Нижний Новгород

Re: ST_union error with no invalid geometry

Сообщение jerry-maori » 15 дек 2017, 11:18

Ну тут ещё может косяк в том, что экспорт из DWG был путём GlobalMapper (потому что если через DXF -- в прекрасные дали уходят кодировки) и он там дополнительно придумал всякое. А само AutoCAD MAP -- это, имхо, просто какой-то хтонический выродок...
Попробую щас через ogr2ogr загнать DXF

trir
Гуру
Сообщения: 4659
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 876
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: ST_union error with no invalid geometry

Сообщение trir » 15 дек 2017, 11:36

А само AutoCAD MAP -- это, имхо, просто какой-то хтонический выродок...
замечательная программа - там всё просто и понятно

Аватара пользователя
jerry-maori
Гуру
Сообщения: 585
Зарегистрирован: 22 авг 2012, 17:02
Репутация: 142
Откуда: Нижний Новгород

Re: ST_union error with no invalid geometry

Сообщение jerry-maori » 15 дек 2017, 12:07

В принципе ясно, что проблема в самом методе конвертаций. Всем спасибо за помощь.

Тему, имхо, можно убивать.

trir
Гуру
Сообщения: 4659
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 876
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: ST_union error with no invalid geometry

Сообщение trir » 15 дек 2017, 12:18

Есть полигональный слой
а как он в dwg сделан?

gamm
Гуру
Сообщения: 3189
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 796
Ваше звание: программист
Откуда: Казань

Re: ST_union error with no invalid geometry

Сообщение gamm » 15 дек 2017, 12:28

раз это TIN, я бы развалил его на палки, а потом собрал топологию с подходящим толерансом в Арке или типа того (может и QGIS соберет). У Автокада бывают проблемы с тем, что считать нулем (совпадением) в геометрии.

Аватара пользователя
jerry-maori
Гуру
Сообщения: 585
Зарегистрирован: 22 авг 2012, 17:02
Репутация: 142
Откуда: Нижний Новгород

Re: ST_union error with no invalid geometry

Сообщение jerry-maori » 15 дек 2017, 12:31

А AutoCAD оно рисуется нормально (полигонами). Перекорёжило в TIN его уже, когда через GlobalMapper перегонял в shape. Напрямую из CAD загнать только дома смогу (ибо не можно левое ПО на работе).
Я то хотел его диссолвить по атрибутике именно, чтобы это перекорёживание победить. Но искать в 3млн строк косячную -- чой-то так себе занятие. ArcGIS нет. Я пытался из линейного слоя собрать полигоны -- но фигня получается. Правда без tolerance.

trir
Гуру
Сообщения: 4659
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 876
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: ST_union error with no invalid geometry

Сообщение trir » 15 дек 2017, 12:38

А AutoCAD оно рисуется нормально (полигонами).
да неужели, а какими? (Как бы в AutoCAD нет полигонов)

Аватара пользователя
jerry-maori
Гуру
Сообщения: 585
Зарегистрирован: 22 авг 2012, 17:02
Репутация: 142
Откуда: Нижний Новгород

Re: ST_union error with no invalid geometry

Сообщение jerry-maori » 15 дек 2017, 12:43

ну там оно красиво так;) без фигни.
А вот после конвератции
wfe.png
wfe.png (441.15 КБ) 5929 просмотров

Ответить

Вернуться в «PostGIS/PostgreSQL»

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

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