GIS-LAB

Географические информационные системы и дистанционное зондирование

Примеры использования ogr2ogr

Перечь примеров для справки

С библиотекой gdal поставляется утилита ogr2ogr, предназначнная для конвертации векторных данных. В данной статье приводятся примеры использования этой утилиты.

GDAL/OGR - библиотека для работы с географическими форматами данных. GDAL представляет собой набор утилит для обработки растровых данных, в то время, как OGR предназначена для работы с векторными форматами. В статье рассматриваются некоторые практические примеры применения одной из утилит этой библиотеки: программы ogr2ogr.

Оглавление

  1. Общие сведения.
  2. Примеры конвертации
  3. Конвертация с перепроецированием
  4. Работа с PostreSQL/PostGIS

1. Общие сведения

Программа ogr2ogr предназначена для конвертации векторных данных из одного формата в другой. Поддерживаемые форматы и используемые ключи можно узнать просто набрав в коммандной строке

ogr2ogr

В результате будет получена справка по использованию этой программы:

ogr2ogr [--help-general] [-skipfailures] [-append] [-update] [-gt n]
               [-select field_list] [-where restricted_where]
               [-sql ]
               [-spat xmin ymin xmax ymax] [-preserve_fid] [-fid FID]
               [-a_srs srs_def] [-t_srs srs_def] [-s_srs srs_def]
               [-f format_name] [-overwrite] [[-dsco NAME=VALUE] ...]
               [-segmentize max_dist]
               dst_datasource_name src_datasource_name
               [-lco NAME=VALUE] [-nln name] [-nlt type] [layer [layer ...]]
		

А также список поддерживаемых форматов (список может отличаться как в большую, так и в меньшую сторону, поскольку зависит от того, были ли подключены/отключены соответствующие модули при компиляции программы):

  • ESRI Shapefile
  • MapInfo File
  • TIGER
  • S57
  • DGN
  • Memory
  • BNA
  • CSV
  • GML
  • GPX
  • KML
  • GeoJSON
  • Interlis 1
  • Interlis 2
  • GMT
  • SQLite
  • ODBC
  • PostgreSQL
  • MySQL
  • Geoconcept

2. Примеры конвертации

Конвертировать ESRI Shapefile в MapInfo tab можно следующим образом:

ogr2ogr -f "MapInfo File" topo2km-rus.tab topo2km-rus.shp

В результате в текущем каталоге появится 4 файла topo2km-rus.* - результат конвертации.

Теперь конвертируем только некоторые объекты из файла topo2km-rus (в поле ZONE которых содержится строка "s"):

ogr2ogr -f "MapInfo File" -where "ZONE=s"  topo2km-rus.tab topo2km-rus.shp

Можно построить и более сложное условие, для этого нужно использовать параметр -sql. При помощи этого параметра можно задать выражение sql, которое необходимо выполнить для того, чтобы произвести выборку данных:

ogr2ogr -f "MapInfo File" -sql "SELECT * FROM topo2km-rus WHERE ZONE='PERVOMAYSK'" topo2km-rus.tab topo2km-rus.shp

Аналогично можно воспользоваться параметрами:

  1. -select для выбора определенных полей таблицы атрибутов
  2. -spat для выбора объектов, лежащих в определенных пространственных границах

Конвертация из CSV в shape-файл и обратно подробно рассмотрена в отдельной статье.

3. Конвертация с перепроецированием

Программа ogr2ogr позволяет не только конвертировать данные из одного формата в другой, но и одновременно произветси перепроецирование данных из одной системы координат в другую. Для этого используются параметры:

  1. -a_srs используется для указания системы координат для данных
  2. -s_srs используется для перезаписи информации о системе координат
  3. -t_srs перепроецирования данных в требуемую ситсему координат

Например, мы знаем, что файл topo2km-rus.shp содержит данные в географической системе координат Пулково 1942, но в комплекте с topo2km-rus.shp нет файла описания проекции (*.prj). Мы можем сгенерировать этот файл, воспользовавшись командой:

ogr2ogr -a_srs "EPSG:4269:4284" -f "ESRI ShapeFile" topo2km-rus2.shp topo2km-rus.shp

Команда:

ogr2ogr -s_srs "EPSG:4326" -t_srs "EPSG:900913" -f "ESRI ShapeFile" topo2km-rus3.shp topo2km-rus2.shp

берет созданный на предыдущем этапе файл topo2km-rus2.shp и перепроецирует его в систему Google Mercator (epsg 900913), при этом опция -s_srs "epsg:4326" говорит о том, что при перепроецировании не нужно обращать внимания на исходную проекцию файла topo2km-rus2.shp, т.е. вести себя так, будто проекция источника - широта/долгота WGS84 (epsg 4326).

В приведенных примерах система координат указвалась на основе кодов epsg, но ее можно указывать и непосредственно в формате WKT или же передавать имя файла, в котором хранится ее описание. Например, если необходимо использовать описания систем координат, хранящихся в файлах input.prj и output.prj, то нужно использовать следующую конструкцию:

ogr2ogr -s_srs ESRI::Input.prj -t_srs ESRI::output.prj  shapeout.shp shapein.shp

4. Работа с PostreSQL/PostGIS

Вставка (добавление) записей в таблицу PostgreSQL данных из файла data.shp. Таблица должна существовать и иметь такие же поля, как и shp-файл.

ogr2ogr -append  -t_srs "+init=epsg:4326" -f PostgreSQL PG:"host=адрес user=имя_пользователя dbname=имя_базы" data.shp

Перезаписывает test таблицу PostgreSQL данными из файла test.tab Таблица не обязана существовать.

ogr2ogr -append -overwrite -s_srs "+init=epsg:4326" -f PostgreSQL PG:"host=адрес user=имя_пользователя dbname=имя_базы" test.tab

Перезаписывает данные из файла data в таблицу PostgreSQL. Таблица будет носить имя не data, а test1. Таблица test1 не обязана существовать.

ogr2ogr -append -overwrite -t_srs "+init=epsg:4326" -f "PostgreSQL"  PG:"host=адрес user=имя_пользователя dbname=test" data.shp -nln test1

Наоборот: из таблицы PostgreSQL "adm" базы ipc конвертирует в allei.tab формата MapInfo.

ogr2ogr -f "MapInfo File" allei.tab  PG:"host=адрес user=пользователь dbname=ipc" "adm"

Из таблицы PostgreSQL "adm" базы ipc конвертирует в shape-файл с использованием выражения sql.

ogr2ogr -f "ESRi Shapefile" output.shp PG:"host=адрес user=пользователь dbname=ipc" -sql "SELECT * from adm"

 

Обсудить в форуме Комментариев — 6

Последнее обновление: December 14 2009

Вход

Рассылка новостей

Новое на форумеRSS

Обратная связь

captcha


(Геокруг)

Если Вы обнаружили на сайте ошибку, выберите фрагмент текста и нажмите Ctrl+Enter