Выгрузка геометрии в разные колонки

Ответить
geod_14
Участник
Сообщения: 50
Зарегистрирован: 27 мар 2014, 16:42
Репутация: 4

Выгрузка геометрии в разные колонки

Сообщение geod_14 » 17 ноя 2014, 12:33

Добрый день!
Возник вопрос.Нужно выгрузить данные из *tab через ogr2ogr. В таблице Postgis есть три колонки с геометрией (geom_point geometry(Point),geom_line geometry(LineString),geom_polygon geometry(Polygon)).Данные в *tab смешанные (линейные+точечные+полигоны).
Подскажите, пожалуйста, как правильно прописать все , чтобы при выгрузке данные автоматически разбрасывались по нужным колонкам геометрии.

bashir
Интересующийся
Сообщения: 49
Зарегистрирован: 01 июл 2008, 17:33
Репутация: 1
Откуда: Moscow

Re: Выгрузка геометрии в разные колонки

Сообщение bashir » 17 ноя 2014, 15:55

http://gis-lab.info/qa/ogr2ogr-examples.html тут есть описание, может пригодится

geod_14
Участник
Сообщения: 50
Зарегистрирован: 27 мар 2014, 16:42
Репутация: 4

Re: Выгрузка геометрии в разные колонки

Сообщение geod_14 » 17 ноя 2014, 17:34

Я ознакомлена со статьей, но пока никак не найду решения данного вопроса((((

HasT
Активный участник
Сообщения: 142
Зарегистрирован: 16 окт 2009, 22:08
Репутация: 55
Откуда: Харьков

Re: Выгрузка геометрии в разные колонки

Сообщение HasT » 17 ноя 2014, 18:12

сделайте новые таблицы (point, line, polygon) в PostGIS БД используя запрос "CREATE TABLE point AS SELECT geom_point geometry FROM initialtable" (пример для point, условие WHERE при необходимости), затем экспортируйте созданные таблицы через ogr2ogr

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

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

geod_14
Участник
Сообщения: 50
Зарегистрирован: 27 мар 2014, 16:42
Репутация: 4

Re: Выгрузка геометрии в разные колонки

Сообщение geod_14 » 18 ноя 2014, 12:38

Дмитрий Барышников писал(а):...вы создаете файл формата VRT, где указыватее таблицу PostGIS и одно поле геометрии из нее (например, points.vrt, lines.vrt, poly.vrt)...
Подскажите как правильно создать этот файл, если я правильно поняла, то нужно еще дополнительно установить GDAL?
Получается, что у меня в PostGIS будет 2 таблицы: В первой вся общая геометрия в одной колонке, а потом через VRT и ogr2ogr я сконвертирую данные в новую таблицу, которая будет иметь 3 колонки с разной геометрией???
А выбирать что относится к линейным,а что к площадным через колонку id?

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Выгрузка геометрии в разные колонки

Сообщение Дмитрий Барышников » 18 ноя 2014, 20:40

1. В постановке задачи в первом посте вы указали что таблица с тремя колонками уже существует в базе и в неё надо только добавить записи из tab. Теперь пишете про две таблицы. Что-то поменялось?
2. Для написания файла vrt gdal ставить не нужно. Нужен блокнот (notepad, gedit и др.) и инструкция, которую я привел в предыдущем посте.
3. Выбирать записи с разными геометриями из tab можно при помощи sql запроса, что я привёл в предыдущем посте.

Я не могу гарантировать что предложенный вариант сработает. Но документация утверждает, что должно работать. Для начала я бы предложил потренироваться на добавлении записей с геометрией point. Если сработает, то тогда и остальные можно добавлять.

[ Сообщение с мобильного устройства ]

geod_14
Участник
Сообщения: 50
Зарегистрирован: 27 мар 2014, 16:42
Репутация: 4

Re: Выгрузка геометрии в разные колонки

Сообщение geod_14 » 20 ноя 2014, 14:34

Спасибо за ответы!!!
Но в итоге, я просто загрузила все в таблицу с одной колонкой "geom", из которой потом запросами разбрасывала по нужным колонкам геометрию в другой таблице.В запросе указывала, что если объект имеет тип геометрии "Polygon", то геометрия данного слоя будет вноситься в колонку geom_polygon geometry(Polygon).
Способ конечно трудоемкий, особенно если у вас имеется большое количество данных.Но как вариант возможен, проверено!) ) )

Ответить

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

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

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