Страница 1 из 1
					
				Выгрузка геометрии в разные колонки
				Добавлено: 17 ноя 2014, 12:33
				 geod_14
				Добрый день!
Возник вопрос.Нужно выгрузить данные из *tab через ogr2ogr. В таблице Postgis есть три колонки с геометрией (geom_point geometry(Point),geom_line geometry(LineString),geom_polygon geometry(Polygon)).Данные в *tab смешанные (линейные+точечные+полигоны). 
Подскажите, пожалуйста, как правильно прописать все  , чтобы при выгрузке данные автоматически разбрасывались по нужным колонкам геометрии.
			 
			
					
				Re: Выгрузка геометрии в разные колонки
				Добавлено: 17 ноя 2014, 15:55
				 bashir
				
			 
			
					
				Re: Выгрузка геометрии в разные колонки
				Добавлено: 17 ноя 2014, 17:34
				 geod_14
				Я ознакомлена со статьей, но пока никак не найду решения данного вопроса((((
			 
			
					
				Re: Выгрузка геометрии в разные колонки
				Добавлено: 17 ноя 2014, 18:12
				 HasT
				сделайте новые таблицы (point, line, polygon) в PostGIS БД используя запрос "CREATE TABLE point AS SELECT geom_point geometry FROM initialtable" (пример для point, условие WHERE при необходимости), затем экспортируйте созданные таблицы через ogr2ogr
			 
			
					
				Re: Выгрузка геометрии в разные колонки
				Добавлено: 17 ноя 2014, 22:44
				 Дмитрий Барышников
				У утилиты ogr2ogr нет возможности указать поле геометрии в которое необходимо писать геометрии из исходного файла. В случае tab все будет писаться в первое поле.
Для обхода этого можно попробовать писать через формат VRT - вы создаете файл формата VRT, где указыватее таблицу PostGIS и одно поле геометрии из нее (например, points.vrt, lines.vrt, poly.vrt). Далее указываете этот файл в качестве выходного для ogr2ogr. Для исходного tab файла нужно казать SQL запрос или строку фильтрации (WHERE) по типу геометрии: " WHERE OGR_GEOMETRY='POINT' "
Подробнее тут: 
http://gdal.org/drv_vrt.html
Поддержка записи в VRT появилось начиная с GDAL 1.7
 
			
					
				Re: Выгрузка геометрии в разные колонки
				Добавлено: 18 ноя 2014, 12:38
				 geod_14
				Дмитрий Барышников писал(а):...вы создаете файл формата VRT, где указыватее таблицу PostGIS и одно поле геометрии из нее (например, points.vrt, lines.vrt, poly.vrt)... 
Подскажите как правильно создать этот файл, если я правильно поняла, то нужно еще дополнительно установить GDAL?
Получается, что у меня в  PostGIS будет 2 таблицы: В первой вся общая геометрия в одной колонке, а потом через VRT и ogr2ogr я сконвертирую данные в новую таблицу, которая будет иметь 3 колонки с разной геометрией???
А выбирать что относится к линейным,а что к площадным через колонку id?
 
			
					
				Re: Выгрузка геометрии в разные колонки
				Добавлено: 18 ноя 2014, 20:40
				 Дмитрий Барышников
				1. В постановке задачи в первом посте вы указали что таблица с тремя колонками уже существует в базе и в неё надо только добавить записи из tab. Теперь пишете про две таблицы. Что-то поменялось?
2. Для написания файла vrt gdal ставить не нужно. Нужен блокнот (notepad, gedit и др.) и инструкция, которую я привел в предыдущем посте.
3. Выбирать записи с разными геометриями из tab можно при помощи sql запроса, что я привёл в предыдущем посте.
Я не могу гарантировать что предложенный вариант сработает. Но документация утверждает, что должно работать. Для начала я бы предложил потренироваться на добавлении записей с геометрией point. Если сработает, то тогда и остальные можно добавлять.
[ Сообщение с мобильного устройства ]
			 
			
					
				Re: Выгрузка геометрии в разные колонки
				Добавлено: 20 ноя 2014, 14:34
				 geod_14
				Спасибо за ответы!!!
Но в  итоге, я просто загрузила все в  таблицу с одной колонкой "geom", из которой потом запросами разбрасывала по нужным колонкам геометрию в другой таблице.В запросе указывала, что если объект имеет тип геометрии "Polygon", то  геометрия данного слоя будет вноситься в колонку geom_polygon geometry(Polygon). 
Способ конечно трудоемкий, особенно если у вас имеется большое количество данных.Но как вариант возможен, проверено!) ) )