Страница 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)
Получаем
Но при диссолве ошибка остаётся.
Код: Выделить всё
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
				
			 
			
					
				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
				
вот это смущает. Я не уверен, что это полигон (с точки зрения программы), это треугольник. В том смысле, что у него разных прибамбасов типа 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 (441.15 КБ) 16229 просмотров