Страница 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
http://gis-lab.info/qa/ogr2ogr-examples.html тут есть описание, может пригодится

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).
Способ конечно трудоемкий, особенно если у вас имеется большое количество данных.Но как вариант возможен, проверено!) ) )