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

ST_union error with no invalid geometry

Добавлено: 15 дек 2017, 10:34
jerry-maori
Есть полигональный слой (экспорт в 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 строк.

Чо он ваще:)?

Re: ST_union error with no invalid geometry

Добавлено: 15 дек 2017, 10:49
trir
экспорт в shp из DWG и потом через shp2pgsql в PostGIS
я из Civil 3D сразу в postGIS загружал
Возвращает 0 строк.
а если wkt посмотреть?

Re: ST_union error with no invalid geometry

Добавлено: 15 дек 2017, 10:53
jerry-maori

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

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

Re: ST_union error with no invalid geometry

Добавлено: 15 дек 2017, 10:54
trir
без условия

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

SELECT *,ST_AsText(geom) from area_utf

Re: ST_union error with no invalid geometry

Добавлено: 15 дек 2017, 11:00
jerry-maori
ну все 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)))"

Re: ST_union error with no invalid geometry

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

Re: ST_union error with no invalid geometry

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

Re: ST_union error with no invalid geometry

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

Re: ST_union error with no invalid geometry

Добавлено: 15 дек 2017, 11:36
trir
А само AutoCAD MAP -- это, имхо, просто какой-то хтонический выродок...
замечательная программа - там всё просто и понятно

Re: ST_union error with no invalid geometry

Добавлено: 15 дек 2017, 12:07
jerry-maori
В принципе ясно, что проблема в самом методе конвертаций. Всем спасибо за помощь.

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

Re: ST_union error with no invalid geometry

Добавлено: 15 дек 2017, 12:18
trir
Есть полигональный слой
а как он в dwg сделан?

Re: ST_union error with no invalid geometry

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

Re: ST_union error with no invalid geometry

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

Re: ST_union error with no invalid geometry

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

Re: ST_union error with no invalid geometry

Добавлено: 15 дек 2017, 12:43
jerry-maori
ну там оно красиво так;) без фигни.
А вот после конвератции
wfe.png
wfe.png (441.15 КБ) 12366 просмотров