Страница 1 из 1

Как использовать параметр -f в утилите gdal_contour?

Добавлено: 04 окт 2012, 14:21
nextstopsun
По умолчанию на выходе утилита выдает шейпфайл.
Но в описании присутствует параметр -f, который вроде бы позволяет задать выходной формат.

Примеров с этим параметром, к сожалению, нигде не нашел.

Мне нужно результат писать в базу postgresql (postgis).
Что нужно указывать в этом параметре, чтобы результат ушел сразу в базу, а не в шейп?

Re: Как использовать параметр -f в утилите gdal_contour?

Добавлено: 04 окт 2012, 14:25
Voltron

Re: Как использовать параметр -f в утилите gdal_contour?

Добавлено: 04 окт 2012, 14:38
nextstopsun
Статья, конечно, полезная. Как и дока gdal собс-но.

Только вот при задании параметра -f как например в ogr2ogr
gdal_contour -i 1 -f PostgreSQL PG:"host=localhost user=iampg password=iampgpass dbname=iamgis" iamrast.tif

Получаю такую ошибку
ERROR 1: Error browsing database for PostGIS Raster tables:

И что-то мне подсказывает, что это параметр для входного формата, а не выходного.

Но в доке сказано output:
-f format:
create output in a particular format, default is shapefiles.

Re: Как использовать параметр -f в утилите gdal_contour?

Добавлено: 04 окт 2012, 14:46
Voltron
nextstopsun писал(а):Получаю такую ошибку
ERROR 1: Error browsing database for PostGIS Raster tables:
Нескромный вопрос. А вы уверены, что gdal сейчас умеет писать растровые данные в в PostGIS? А то разработчики об этом похоже не знают :-). Пруф
nextstopsun писал(а):И что-то мне подсказывает, что это параметр для входного формата, а не выходного.
Неправильно подсказывает. В документации, конечно, бывают ошибки, но в данном случае все правильно
-f format:
create output in a particular format, default is shapefiles.

Re: Как использовать параметр -f в утилите gdal_contour?

Добавлено: 04 окт 2012, 15:04
nextstopsun
Утилита gdal_contour на вход принимает растровые данные, а на выходе возвращает векторные.
Как я написал, на вход я ей подаю растровый файл iamrast.tif
На выходе получаю по умолчанию шейпфайл, а хочу получить таблицу в базе данных.

"Нескромный вопрос. А вы уверены, что gdal сейчас умеет писать растровые данные в в PostGIS? А то разработчики об этом похоже не знают ."
Вопрос, конечно, к теме не относится (писать-то мне нужно векторные данные), но я в этом не уверен. Хотя может быть кто-то уже сделал патч...))

Re: Как использовать параметр -f в утилите gdal_contour?

Добавлено: 04 окт 2012, 15:17
Voltron
nextstopsun писал(а):Утилита gdal_contour на вход принимает растровые данные, а на выходе возвращает векторные.
Я в курсе :-) Но у вас не указан выходной файл

Код: Выделить всё

gdal_contour -i 1 -f PostgreSQL PG:"host=localhost user=iampg password=iampgpass dbname=iamgis" iamrast.tif -nln contour_out
P.S.: читать посты без форматирования неудобно

Re: Как использовать параметр -f в утилите gdal_contour?

Добавлено: 04 окт 2012, 15:32
nextstopsun
Указываю -nln contour_out и все равно получаю ту же ошибку.

Код: Выделить всё

gdal_contour -i 1 -f PostgreSQL PG:"host=localhost user=iampg password=iampgpass dbname=iamgis" iamrast.tif -nln contour_out
ERROR 1: Error browsing database for PostGIS Raster tables:
В доке GDAL вроде бы этот параметр не обязателен.
-nln outlayername:
Provide a name for the output vector layer. Defaults to "contour".

Re: Как использовать параметр -f в утилите gdal_contour?

Добавлено: 04 окт 2012, 15:52
Александр Мурый
А может таки стоит указывать вначале входной файл, а потом выходной? :)

Код: Выделить всё

gdal_contour -f PostgreSQL iamrast.tif PG:host=localhost user=iampg password=iampgpass dbname=iamgis  -i 1
И заодно стоит, наверное, указывать имя таблицы (флаг "-a").

Re: Как использовать параметр -f в утилите gdal_contour?

Добавлено: 04 окт 2012, 16:31
nextstopsun
И заодно стоит, наверное, указывать имя таблицы (флаг "-a").
Вот что указано в описании утилиты:

Код: Выделить всё

Usage: gdal_contour [-b <band>] [-a <attribute_name>] [-3d] [-inodata]
                    [-snodata n] [-f <formatname>] [-i <interval>]
                    [-off <offset>] [-fl <level> <level>...]
                    [-nln <outlayername>] [-q]
                    <src_filename> <dst_filename>
Как видно из описания, флаг "-a" - это флаг имени поля, в которое будет записано значение контура, а не имя таблицы.
А может таки стоит указывать вначале входной файл, а потом выходной?
Опять же из описания утилиты параметр -nln задается до указания входного файла <src_filename>
Повторюсь: на выходе мне нужен не файл, а таблица базы данных.

Вобщем я пытался менять местами параметры - ошибка от этого остается прежней.
Прошу прощения - готов перефразировать вопрос:
Приведите, пожалуйста, рабочий пример вызова утилиты gdal_contour с выходным форматом PostgreSQL

Re: Как использовать параметр -f в утилите gdal_contour?

Добавлено: 04 окт 2012, 16:36
nextstopsun
Решил.

Код такой:

Код: Выделить всё

gdal_contour -f PostgreSQL -i 1 -nln cont iamrast.tif "PG:host=localhost user=iampg password=iampgpass dbname=iamgis"

Re: Как использовать параметр -f в утилите gdal_contour?

Добавлено: 04 окт 2012, 16:42
Максим Дубинин
не хочешь добавить на страницу рецептов?

UPD: поправил ссылку