Инструменты пользователя

Инструменты сайта


notes:gdal:ogr2ogr:help

ogr2ogr

Преобразует данные простых объектов между форматами файлов.

Синопсис

ogr2ogr [--help-general] [-skipfailures] [-append] [-update]
        [-select поле_список] [-where ограничение_где|@filename]
        [-progress] [-sql <sql statement>|@filename] [-dialect dialect]
        [-preserve_fid] [-fid FID] [-limit nb_features]
        [-spat xmin ymin xmax ymax] [-spat_srs srs_def] [-geomfield field]
        [-a_srs srs_def] [-t_srs srs_def] [-s_srs srs_def] [-ct string]
        [-f имя_формата] [-overwrite] [[-dsco ИМЯ=ЗНАЧЕНИЕ] ...]
        dst_datasource_name src_datasource_name
        [-lco ИМЯ=ЗНАЧЕНИЕ] [-nln имя]
        [-nlt тип|PROMOTE_TO_MULTI|CONVERT_TO_LINEAR|CONVERT_TO_CURVE]
        [-dim XY|XYZ|XYM|XYZM|2|3|layer_dim] [layer [layer ...]]

        # Дополнительные параметры
        [-gt n]
        [[-oo ИМЯ=ЗНАЧЕНИЕ] ...] [[-doo ИМЯ=ЗНАЧЕНИЕ] ...]
        [-clipsrc [xmin ymin xmax ymax]|WKT|datasource|spat_extent]
        [-clipsrcsql sql_statement] [-clipsrclayer layer]
        [-clipsrcwhere expression]
        [-clipdst [xmin ymin xmax ymax]|WKT|datasource]
        [-clipdstsql sql_statement] [-clipdstlayer layer]
        [-clipdstwhere expression]
        [-wrapdateline] [-datelineoffset val]
        [[-simplify tolerance] | [-segmentize max_dist]]
        [-makevalid]
        [-addfields] [-unsetFid] [-emptyStrAsNull]
        [-relaxedFieldNameMatch] [-forceNullable] [-unsetDefault]
        [-fieldTypeToString All|(тип1[,тип2]*)] [-unsetFieldWidth]
        [-mapFieldType тип1|All=тип2[,тип3=тип4]*]
        [-fieldmap identity | index1[,index2]*]
        [-splitlistfields] [-maxsubfields val]
        [-resolveDomains]
        [-explodecollections] [-zfield field_name]
        [-gcp ungeoref_x ungeoref_y georef_x georef_y [elevation]]* [-order n | -tps]
        [[-s_coord_epoch epoch] | [-t_coord_epoch epoch] | [-a_coord_epoch epoch]]
        [-nomd] [-mo "META-TAG=VALUE"]* [-noNativeData]

Описание

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

-f <имя_формата>
Имя формата выходного файла, например, ESRI Shapefile, MapInfo File, PostgreSQL. Начиная с GDAL 2.3, если не указано, формат угадывается из расширения (ранее был ESRI Shapefile).

-append
Добавить к существующему слою вместо создания нового.

-overwrite
Удалите выходной слой и создать его заново пустым.

-update
Открывать существующий выходной источник данных в режиме обновления, а не пытайтесь создать новый.

-select <поле_список>
Разделенный запятыми список полей из входного слоя для копирования в новый слой. Поле пропускается, если упоминалось ранее в списке, даже если входной слой имеет повторяющиеся имена полей. (По умолчанию all; любое поле пропускается, если найдено последующее поле с таким же именем). Поля геометрии также могут быть указаны в списке.
Обратите внимание, что этот параметр нельзя использовать вместе с -append. Чтобы управлять выбором полей при добавлении к слою, используйте -fieldmap или -sql.

-progress
Отображение прогресса на терминале. Работает только в том случае, если входные слои имеют возможность «быстрого подсчета объектов».

-dialect <dialect>
Диалект SQL. В некоторых случаях можно использовать (неоптимизированный) диалект SQL OGR вместо собственного SQL RDBMS, передав значение диалекта OGRSQL. Диалект SQL SQLite можно выбрать с помощью значений диалекта SQLITE и INDIRECT_SQLITE , и это можно использовать с любым источником данных.

-where ограничение_где
Запрос атрибутов (например, SQL WHERE). Начиная с GDAL 2.1 @filename синтаксис можно использовать для указания того, что содержимое находится в указанном имени файла.

-skipfailures
Продолжить после сбоя, пропустив сбойный элемент/объект.

-spat <xmin> <ymin> <xmax> <ymax>
Экстенты пространственного запроса в SRS исходного слоя (слоев) (или слоя, указанного с помощью -spat_srs). Будут выбраны только объекты, геометрия которых пересекает экстенты. Геометрия не будет обрезана, если не указано -clipsrc.

-geomfield <field>
Имя поля геометрии, на котором работает пространственный фильтр.

-dsco ИМЯ=ЗНАЧЕНИЕ
Вариант создания набора данных (зависит от формата)

-lco ИМЯ=ЗНАЧЕНИЕ
Опция создания слоя (зависит от формата)

-nln <имя>
Назначение альтернативного имени новому слою.

-nlt <тип>
Определите тип геометрии для созданного слоя. Один из типов NONE, GEOMETRY, POINT, LINESTRING, POLYGON, GEOMETRYCOLLECTION, MULTIPOINT, MULTIPOLYGON, MULTILINESTRING, CIRCULARSTRING, COMPOUNDCURVE, CURVEPOLYGON, MULTICURVE и MULTISURFACE нелинейной геометрии.
Добавление Z, Mили ZM к имени типа указывает координаты с отметкой, мерой или отметкой и мерой. PROMOTE_TO_MULTI может использоваться для автоматического преобразования слоев, которые смешивают полигоны или мультиполигоны в мультиполигоны, и слоев, которые смешивают линии линий или мультилинии в мультилинии. Может быть полезно при преобразовании shapefiles в PostGIS и другие целевые драйверы, реализующие строгие проверки типов геометрии.
CONVERT_TO_LINEAR может использоваться для преобразования типов нелинейной геометрии в типы линейной геометрии путем их аппроксимации и преобразования CONVERT_TO_CURVE нелинейного типа в его обобщенный тип кривой (POLYGON в CURVEPOLYGON, MULTIPOLYGON в MULTISURFACE, LINESTRING в COMPOUNDCURVE, MULTILINESTRING в MULTICURVE). Начиная с версии 2.1 тип может быть определен как измеренный («25D» остается псевдонимом для одиночной «Z»). Некоторые принудительные преобразования геометрии могут привести к недействительной геометрии, например, при принудительном преобразовании мультиполигонов, состоящих из нескольких частей -nlt POLYGON, полученный полигон нарушит правила простых объектов.
Начиная с GDAL 3.0.5, можно использовать -nlt CONVERT_TO_LINEAR и -nlt PROMOTE_TO_MULTI одновременно.

-dim <val>
Принудительно присвоение размеру координат значение val (допустимые значения: XY, XYZ, XYM и XYZM - для обратной совместимости 2 является псевдонимом для XY и 3 является псевдонимом для XYZ). Это влияет как на тип геометрии слоя, так и на геометрию объектов. Можно установить значение layer_dim, чтобы геометрия объектов была переведена в размерность координат, объявленную слоем.
Поддержка M была добавлена ​​в GDAL 2.1.

-a_srs <srs_def>
Назначение выходной SRS, но без перепроецирования (используйте -t_srs для перепроецирования)
Системы координат, которые могут быть переданы, — это все, что поддерживается вызовом OGRSpatialReference.SetFromUserInput(), включая EPSG Projected, Geographic или Compound CRS (например, EPSG:4296), определение CRS (WKT), декларации PROJ.4. или имя файла .prj, содержащего определение WKT CRS.

-a_coord_epoch <epoch>
Новое в версии 3.4.
Назначение координатную эпоху, связанную с выходным SRS. Полезно, когда выходной SRS является динамическим CRS. Учитывается только при использовании -a_srs.

-t_srs <srs_def>
Перепроецировать/преобразовать в этот SRS на выходе и назначьте его как выходной SRS.
Исходный SRS должен быть доступен для повторного проецирования. Исходный SRS будет по умолчанию искаться в исходном слое, когда он доступен, или переопределяться пользователем с помощью -s_srs.
Системы координат, которые могут быть переданы, — это все, что поддерживается вызовом OGRSpatialReference.SetFromUserInput(), включая EPSG Projected, Geographic или Compound CRS (например, EPSG:4296), определение CRS (WKT), декларации PROJ.4. или имя файла .prj, содержащего определение WKT CRS.

-t_coord_epoch <epoch>
Новое в версии 3.4.
Назначение координатной эпохи, связанную с выходным SRS. Полезно, когда выходной SRS является динамическим CRS. Учитывается только при использовании -t_srs. Является взаимоисключающим с -a_coord_epoch.
В настоящее время -s_coord_epoch и -t_coord_epoch являются взаимоисключающими из-за отсутствия поддержки преобразований между двумя динамическими CRS.

-s_srs <srs_def>
Переопределить исходную SRS. Если не указано, будет использоваться SRS, найденный во входном слое. Эта опция имеет эффект, только если используется вместе с -t_srs для повторного проецирования.
Системы координат, которые могут быть переданы, — это все, что поддерживается вызовом OGRSpatialReference.SetFromUserInput(), включая EPSG Projected, Geographic или Compound CRS (например, EPSG:4296), определение CRS (WKT), декларации PROJ.4. или имя файла .prj, содержащего определение WKT CRS.

-s_coord_epoch <epoch>
Новое в версии 3.4.
Назначьте координатную эпоху, связанную с исходным SRS. Полезно, когда исходная SRS является динамической CRS. Учитывается только при использовании -s_srs.
В настоящее время -s_coord_epoch и -t_coord_epoch являются взаимоисключающими из-за отсутствия поддержки преобразований между двумя динамическими CRS.

-ct <string>
Новое в версии 3.0.
Строка PROJ (одноэтапная операция или многоэтапная строка, начинающаяся с +proj=pipeline), строка WKT2, описывающая CoordinateOperation, или urn:ogc:def:coordinateOperation:EPSG::XXXX URN, переопределяющая преобразование по умолчанию из исходной в целевую CRS. Он должен учитывать порядок осей исходной и целевой CRS.

-preserve_fid
Используйте FID исходных объектов вместо того, чтобы позволять выходному драйверу автоматически назначать новый (для форматов, требующих FID). Если не в режиме добавления, это поведение используется по умолчанию, если выходной драйвер имеет параметр создания слоя FID, и в этом случае будет использоваться имя исходного столбца FID, и будет предпринята попытка сохранить идентификаторы исходных объектов. Это поведение можно отключить, установив -unsetFid.

-fid fid
Если указано, будет обработан только объект с указанным идентификатором. Работает без учета пространственных или атрибутивных запросов.
Примечание: если вы хотите выбрать несколько объектов на основе их идентификаторов, вы также можете использовать тот факт, что «fid» — это специальное поле, распознаваемое OGR SQL. Таким образом, -where «fid in (1,3,5)» выберет функции 1, 3 и 5.

-limit nb_features
Ограничьте количество объектов на слой.

-oo ИМЯ=ЗНАЧЕНИЕ
Опция открытия входного набора данных (зависит от формата).

-doo ИМЯ=ЗНАЧЕНИЕ
Опция открытия целевого набора данных (зависит от формата), действительна только в режиме -update.

-gt n
Сгруппировать n объектов на транзакцию (по умолчанию 100 000).
Увеличьте значение для повышения производительности при записи в драйверы СУБД, поддерживающие транзакции.
n можно установить неограниченное, чтобы загружать данные в одну транзакцию.

-ds_transaction
Принудительно использовать транзакцию на уровне набора данных (для драйверов, поддерживающих такой механизм), особенно для таких драйверов, как FileGDB, которые поддерживают транзакцию на уровне набора данных только в режиме эмуляции.

-clipsrc [xmin ymin xmax ymax]|WKT|datasource|spat_extent
Обрезает геометрию до указанной ограничивающей рамки (выраженной в исходном SRS), геометрии WKT (POLYGON или MULTIPOLYGON), из источника данных или до пространственного экстента параметра -spat, если вы используете ключевое слово spat_extent. При указании источника данных вы, как правило, хотите использовать его в сочетании с параметрами -clipsrclayer, -clipsrcwhere или -clipsrcsql.

-clipsrcsql <sql_statement>
Выборка желаемой геометрии с помощью SQL-запроса.

-clipsrclayer <layername>
Выборка именованного слоя из исходного клипа. Например, при чтении из GeoPackage.

-clipsrcwhere <expression>
Ограничить желаемую геометрию на основе атрибутивного запроса.

-clipdst <xmin> <ymin> <xmax> <ymax>
Вырезать геометрию после повторного проецирования в указанную ограничивающую рамку (выраженную в целевом SRS), геометрию WKT (POLYGON или MULTIPOLYGON) или из источника данных.
При указании источника данных вы, как правило, захотите использовать его в сочетании с параметрами -clipdstlayer, -clipdstwhere или -clipdstsql.

-clipdstsql <sql_statement>
Выборка желаемой геометрии с помощью SQL-запроса.

-clipdstlayer <layername>
Выборка именованного слоя в целевого клипа. Например, при записи в GeoPackage.

-clipdstwhere <expression>
Ограничить желаемую геометрию на основе атрибутивного запроса.

-wrapdateline
Разделенные геометрии, пересекающие меридиан линии перемены дат (долг. = +/- 180 градусов).

-datelineoffset
Смещение от линии даты в градусах (длина по умолчанию = +/- 10 градусов, геометрия в пределах от 170 до -170 градусов будет разделена).

-simplify <tolerance>
Допуск расстояния для упрощения. Примечание: используемый алгоритм сохраняет топологию для каждого объекта, в частности, для полигональной геометрии, но не для всего слоя.

-segmentize <max_dist>
Максимальное расстояние между 2 узлами. Используется для создания промежуточных точек.

-makevalid
Запускает операцию OGRGeometry::MakeValid(), а затем нажмите OGRGeometryFactory::removeLowerDimensionSubGeoms() на геометрии, чтобы убедиться, что они соответствуют правилам спецификации Simple Features.

-fieldTypeToString тип1,…
Преобразует любое поле указанного типа в поле строкового типа в целевом слое. Допустимые типы: Integer, Integer64, Real, String, Date, Time, DateTime, Binary, IntegerList, Integer64List, RealList, StringList. Специальное значение All может использоваться для преобразования всех полей в строки. Это альтернативный способ использования оператора CAST OGR SQL, позволяющий избежать ввода длинного SQL-запроса. Обратите внимание, что это не влияет на типы полей, используемые исходным драйвером, и представляет собой только последующее преобразование.

-mapFieldType srctype|All=dsttype,…
Преобразует любое поле указанного типа в другой тип. Допустимые типы: Integer, Integer64, Real, String, Date, Time, DateTime, Binary, IntegerList, Integer64List, RealList, StringList. Типы также могут включать подтип в скобках, например Integer (Boolean), Real (Float32), … Специальное значение All может использоваться для преобразования всех полей в другой тип. Это альтернативный способ использования оператора CAST OGR SQL, позволяющий избежать ввода длинного SQL-запроса. Это обобщение -fieldTypeToString. Обратите внимание, что это не влияет на типы полей, используемые исходным драйвером, и представляет собой только последующее преобразование.

-unsetFieldWidth
Установите ширину поля и точность на 0.

-splitlistfields
Разделите поля типа StringList, RealList или IntegerList на столько полей типа String, Real или Integer, сколько необходимо.

-maxsubfields <val>
В сочетании с -splitlistfields ограничивает количество подполей, создаваемых для каждого разделенного поля.

-explodecollections
Создание одного объекта для каждой геометрии в любой коллекции геометрии в исходном файле, применяя после любого -sql параметра.

-zfield <field_name>
Использовать указанное поле для заполнения координаты Z геометрии.

-gcp <ungeoref_x> <ungeoref_y> <georef_x> <georef_y> <elevation>
Добавьте указанную опорную точку. Эта опция может быть предоставлена ​​несколько раз для предоставления набора GCP (опорных точек).

-order <n>
Порядок полинома, используемого для деформации (от 1 до 3). По умолчанию используется полиномиальный порядок, основанный на количестве GCP (опорных точек).

-tps
Принудительное использование plate spline transformer на основе доступных GCP (опорных точек).

-fieldmap
Указывает список индексов полей, которые необходимо скопировать из источника в место назначения. (n)-е значение, указанное в списке, является индексом поля в определении целевого слоя, в которое должно быть скопировано n-е(ые) поле исходного слоя. Отсчет индекса начинается с нуля. Чтобы опустить поле, укажите значение -1. В списке должно быть ровно столько значений, сколько полей в исходном слое. Мы можем использовать настройку «идентификация», чтобы указать, что поля должны передаваться в том же порядке. Эту настройку следует использовать вместе с настройкой -append.

-addfields
Это специализированная версия -append. В отличие от -append, -addfields имеет эффект добавления к существующим целевым слоям новых полей, найденных в исходных слоях. Эта опция полезна при объединении файлов, которые имеют не строго идентичную структуру. Это может не работать для форматов вывода, которые не поддерживают добавление полей в существующие непустые слои. Обратите внимание, что если вы планируете использовать -addfields, вам может понадобиться объединить его с -forceNullable, в том числе для первоначального импорта.

-relaxedFieldNameMatch
Выполнять сопоставление имен полей между исходным и существующим целевым слоем более простым способом, если у целевого драйвера есть реализация для этого.

-forceNullable
Не распространять ограничения, не допускающие значения NULL, на целевой уровень, если они существуют на исходном уровне.

-unsetDefault
Не распространяйте значения полей по умолчанию на целевой слой, если они существуют в исходном слое.

-unsetFid
Можно указать, чтобы предотвратить повторное использование имени исходного столбца FID и идентификаторов исходных объектов для целевого слоя. Этот параметр может быть полезен, например, при выборе исходных объектов с предложением ORDER BY.

-emptyStrAsNull
Новое в версии 3.3.
Обрабатывать пустые строковые значения как нулевые.

-resolveDomains
Новое в версии 3.3.
Когда это указано, любое выбранное поле, связанное с доменом кодированного поля, будет сопровождаться дополнительным полем ( {dstfield}_resolved), которое будет содержать описание кодированного значения.

-nomd
Отключить копирование метаданных из исходного набора данных и слоев в целевой набор данных и слои, если это поддерживается выходным драйвером.

-mo META-TAG=VALUE
Передает ключ и значение метаданных для установки в выходном наборе данных, если это поддерживается выходным драйвером.

-noNativeData
Новое в версии 2.1.
Отключить копирование собственных данных, то есть деталей исходного формата, не захваченных абстракцией OGR, которые в противном случае сохраняются некоторыми драйверами (например, GeoJSON) при преобразовании в тот же формат.

Советы по производительности

При записи в транзакционную СУБД (SQLite/PostgreSQL, MySQL и т. д.) может оказаться полезным увеличить количество операторов INSERT, выполняемых между операторами BEGIN TRANSACTION и COMMIT TRANSACTION. Это число указывается с параметром -gt. Например, для SQLite явное определение -gt 65536 обеспечивает оптимальную производительность при заполнении некоторой таблицы, содержащей многие сотни тысяч или миллионы строк. Однако обратите внимание, что -skipfailures переопределяет -gt и устанавливает размер транзакций равным 1.

Для PostgreSQL для параметра конфигурации PG_USE_COPY можно установить значение YES для значительного повышения производительности вставки. См. страницу документации драйвера PG.

В более общем плане обратитесь к странице документации по драйверам ввода и вывода для получения подсказок по производительности.

Примеры

Базовое преобразование из Shapefile в GeoPackage:

ogr2ogr \
  -f GPKG output.gpkg \
  input.shp

Измените систему отсчета координат с EPSG:4326на EPSG:3857:

ogr2ogr \
  -s_srs EPSG:4326 \
  -t_srs EPSG:3857 \
  -f GPKG output.gpkg \
  input.gpkg

Пример добавления к существующему слою (необходимо использовать оба флага -update и -append):

ogr2ogr -update -append -f PostgreSQL PG:dbname=warmerda abc.tab

Вырезать входной слой с ограничивающей рамкой (<xmin> <ymin> <xmax> <ymax>):

ogr2ogr \
  -spat -13.931 34.886 46.23 74.12 \
  -f GPKG output.gpkg \
  natural_earth_vector.gpkg

Фильтрация объектов по -whereпредложению:

ogr2ogr \
  -where "\"POP_EST\" < 1000000" \
  -f GPKG output.gpkg \
  natural_earth_vector.gpkg \
  ne_10m_admin_0_countries

Пример перепроецирования из ETRS_1989_LAEA_52N_10E в EPSG:4326 и обрезки по ограничительной рамке:

ogr2ogr -wrapdateline -t_srs EPSG:4326 -clipdst -5 40 15 55 france_4326.shp europe_laea.shp

Пример использования -fieldmap настройки. Первое поле исходного слоя используется для заполнения третьего поля (индекс 2 = третье поле) целевого слоя, второе поле исходного слоя игнорируется, третье поле исходного слоя используется для заполнения пятого поля целевой слой.

ogr2ogr -append -fieldmap 2,-1,4 dst.shp src.shp

Дополнительные примеры приведены на страницах отдельных форматов.

notes/gdal/ogr2ogr/help.txt · Последнее изменение: 2022/09/15 19:56 — Гуреев Евгений

Яндекс.Метрика ГеоС Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki