Выгрузка геометрии в разные колонки
-
- Участник
- Сообщения: 50
- Зарегистрирован: 27 мар 2014, 16:42
- Репутация: 4
Выгрузка геометрии в разные колонки
Добрый день!
Возник вопрос.Нужно выгрузить данные из *tab через ogr2ogr. В таблице Postgis есть три колонки с геометрией (geom_point geometry(Point),geom_line geometry(LineString),geom_polygon geometry(Polygon)).Данные в *tab смешанные (линейные+точечные+полигоны).
Подскажите, пожалуйста, как правильно прописать все , чтобы при выгрузке данные автоматически разбрасывались по нужным колонкам геометрии.
Возник вопрос.Нужно выгрузить данные из *tab через ogr2ogr. В таблице Postgis есть три колонки с геометрией (geom_point geometry(Point),geom_line geometry(LineString),geom_polygon geometry(Polygon)).Данные в *tab смешанные (линейные+точечные+полигоны).
Подскажите, пожалуйста, как правильно прописать все , чтобы при выгрузке данные автоматически разбрасывались по нужным колонкам геометрии.
-
- Интересующийся
- Сообщения: 49
- Зарегистрирован: 01 июл 2008, 17:33
- Репутация: 1
- Откуда: Moscow
Re: Выгрузка геометрии в разные колонки
http://gis-lab.info/qa/ogr2ogr-examples.html тут есть описание, может пригодится
-
- Участник
- Сообщения: 50
- Зарегистрирован: 27 мар 2014, 16:42
- Репутация: 4
Re: Выгрузка геометрии в разные колонки
Я ознакомлена со статьей, но пока никак не найду решения данного вопроса((((
-
- Активный участник
- Сообщения: 142
- Зарегистрирован: 16 окт 2009, 22:08
- Репутация: 55
- Откуда: Харьков
Re: Выгрузка геометрии в разные колонки
сделайте новые таблицы (point, line, polygon) в PostGIS БД используя запрос "CREATE TABLE point AS SELECT geom_point geometry FROM initialtable" (пример для point, условие WHERE при необходимости), затем экспортируйте созданные таблицы через ogr2ogr
- Дмитрий Барышников
- Гуру
- Сообщения: 2572
- Зарегистрирован: 17 ноя 2009, 19:17
- Репутация: 261
- Откуда: Москва
Re: Выгрузка геометрии в разные колонки
У утилиты 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
Для обхода этого можно попробовать писать через формат 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
-
- Участник
- Сообщения: 50
- Зарегистрирован: 27 мар 2014, 16:42
- Репутация: 4
Re: Выгрузка геометрии в разные колонки
Подскажите как правильно создать этот файл, если я правильно поняла, то нужно еще дополнительно установить GDAL?Дмитрий Барышников писал(а):...вы создаете файл формата VRT, где указыватее таблицу PostGIS и одно поле геометрии из нее (например, points.vrt, lines.vrt, poly.vrt)...
Получается, что у меня в PostGIS будет 2 таблицы: В первой вся общая геометрия в одной колонке, а потом через VRT и ogr2ogr я сконвертирую данные в новую таблицу, которая будет иметь 3 колонки с разной геометрией???
А выбирать что относится к линейным,а что к площадным через колонку id?
- Дмитрий Барышников
- Гуру
- Сообщения: 2572
- Зарегистрирован: 17 ноя 2009, 19:17
- Репутация: 261
- Откуда: Москва
Re: Выгрузка геометрии в разные колонки
1. В постановке задачи в первом посте вы указали что таблица с тремя колонками уже существует в базе и в неё надо только добавить записи из tab. Теперь пишете про две таблицы. Что-то поменялось?
2. Для написания файла vrt gdal ставить не нужно. Нужен блокнот (notepad, gedit и др.) и инструкция, которую я привел в предыдущем посте.
3. Выбирать записи с разными геометриями из tab можно при помощи sql запроса, что я привёл в предыдущем посте.
Я не могу гарантировать что предложенный вариант сработает. Но документация утверждает, что должно работать. Для начала я бы предложил потренироваться на добавлении записей с геометрией point. Если сработает, то тогда и остальные можно добавлять.
[ Сообщение с мобильного устройства ]
2. Для написания файла vrt gdal ставить не нужно. Нужен блокнот (notepad, gedit и др.) и инструкция, которую я привел в предыдущем посте.
3. Выбирать записи с разными геометриями из tab можно при помощи sql запроса, что я привёл в предыдущем посте.
Я не могу гарантировать что предложенный вариант сработает. Но документация утверждает, что должно работать. Для начала я бы предложил потренироваться на добавлении записей с геометрией point. Если сработает, то тогда и остальные можно добавлять.
[ Сообщение с мобильного устройства ]
-
- Участник
- Сообщения: 50
- Зарегистрирован: 27 мар 2014, 16:42
- Репутация: 4
Re: Выгрузка геометрии в разные колонки
Спасибо за ответы!!!
Но в итоге, я просто загрузила все в таблицу с одной колонкой "geom", из которой потом запросами разбрасывала по нужным колонкам геометрию в другой таблице.В запросе указывала, что если объект имеет тип геометрии "Polygon", то геометрия данного слоя будет вноситься в колонку geom_polygon geometry(Polygon).
Способ конечно трудоемкий, особенно если у вас имеется большое количество данных.Но как вариант возможен, проверено!) ) )
Но в итоге, я просто загрузила все в таблицу с одной колонкой "geom", из которой потом запросами разбрасывала по нужным колонкам геометрию в другой таблице.В запросе указывала, что если объект имеет тип геометрии "Polygon", то геометрия данного слоя будет вноситься в колонку geom_polygon geometry(Polygon).
Способ конечно трудоемкий, особенно если у вас имеется большое количество данных.Но как вариант возможен, проверено!) ) )
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость