ogr2ogr矢量数据要素格式转换

 

在文件格式之间转换简单要素数据。

概要

ogr2ogr [--help-general] [-skipfailures] [-append] [-update]
        [-select field_list] [-where restricted_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 format_name] [-overwrite] [[-dsco NAME=VALUE] ...]
        dst_datasource_name src_datasource_name
        [-lco NAME=VALUE] [-nln name]
        [-nlt type|PROMOTE_TO_MULTI|CONVERT_TO_LINEAR|CONVERT_TO_CURVE]
        [-dim XY|XYZ|XYM|XYZM|2|3|layer_dim] [layer [layer ...]]

        # Advanced options
        [-gt n]
        [[-oo NAME=VALUE] ...] [[-doo NAME=VALUE] ...]
        [-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]
        [-relaxedFieldNameMatch] [-forceNullable] [-unsetDefault]
        [-fieldTypeToString All|(type1[,type2]*)] [-unsetFieldWidth]
        [-mapFieldType type1|All=type2[,type3=type4]*]
        [-fieldmap identity | index1[,index2]*]
        [-splitlistfields] [-maxsubfields val]
        [-explodecollections] [-zfield field_name]
        [-gcp ungeoref_x ungeoref_y georef_x georef_y [elevation]]* [-order n | -tps]
        [-nomd] [-mo "META-TAG=VALUE"]* [-noNativeData]

描述

ogr2ogr可用于在文件格式之间转换简单要素数据。它还可以在此过程中执行各种操作,例如空间或属性选择,减少属性集,设置输出座标系甚至在转换过程中重新投影要素。

-f <format_name>

输出文件格式的名称,例如,, 。从GDAL 2.3开始,如果未指定,则从扩展名猜测格式(以前是ESRI Shapefile)。ESRI ShapefileMapInfo FilePostgreSQL

-append

附加到现有图层,而不是创建新图层

-overwrite

删除输出图层并重新创建为空

-update

在更新模式下打开现有的输出数据源,而不是尝试创建一个新的数据源

-select <field_list>

输入层中要复制到新层的字段的逗号分隔列表。即使输入层具有重复的字段名称,如果列表中先前已提及,也会跳过该字段。(默认为all;如果找到具有相同名称的后续字段,则将跳过任何字段。)也可以在列表中指定几何字段。

请注意,此设置不能与一起使用-append。要在添加到图层时控制字段的选择,请使用-fieldmap-sql

-progress

在终端上显示进度。仅在输入图层具有“快速要素计数”功能时才有效。

-sql <sql_statement>

要执行的SQL语句。结果表/层将保存到输出中。从GDAL 2.1开始,该@filename语法可用于指示内容位于指向的文件名中。

-dialect <dialect>

SQL方言。在某些情况下,可以通过传递OGRSQL来使用(未优化的)OGR SQL代替RDBMS的本机SQL。“ SQLITE”方言也可以与任何数据源一起使用。

-where restricted_where

属性查询(如SQL WHERE)。从GDAL 2.1开始,该@filename 语法可用于指示内容位于指向的文件名中。

-skipfailures

失败后继续,跳过失败的功能。

-spat <xmin> <ymin> <xmax> <ymax>

空间查询范围,在源层(或用指定的层)的SRS中-spat_srs。仅选择其几何形状与范围相交的要素。除非-clipsrc指定,否则几何不会被裁剪 。

-spat_srs <srs_def>

覆盖空间滤波器SRS。

-geomfield <field>

空间过滤器所基于的几何字段的名称。

-dsco NAME=VALUE

数据集创建选项(特定于格式)

-lco NAME=VALUE

图层创建选项(特定于格式)

-nln <name>

为新图层分配一个备用名称

-nlt <type>

为创建的图层定义几何类型。之一的NONE, GEOMETRYPOINTLINESTRINGPOLYGON, GEOMETRYCOLLECTIONMULTIPOINTMULTIPOLYGON, MULTILINESTRINGCIRCULARSTRINGCOMPOUNDCURVE, CURVEPOLYGONMULTICURVE,和MULTISURFACE非线性几何类型。在类型名称中添加ZMZM以使用高程,量度或高程和量度指定座标。PROMOTE_TO_MULTI可用于自动提升将多边形或多面体混合为多面体的层,以及将线串或多线串混合为多线串的层。将shapefile转换为实现对几何类型的严格检查的PostGIS和其他目标驱动程序时,可能会很有用。 CONVERT_TO_LINEAR可用于通过近似它们的非线性几何类型为线性几何类型进行转换,并CONVERT_TO_CURVE促进非直线型到其广义曲线类型(POLYGON到 CURVEPOLYGONMULTIPOLYGONMULTISURFACELINESTRING到 COMPOUNDCURVEMULTILINESTRINGMULTICURVE)。从版本2.1开始,可以将类型定义为已测量(“ 25D”保留为单个“ Z”的别名)。某些强制的几何转换可能会导致无效的几何,例如,当使用强制转换多部分多多边形时,所得的多边形将违反“简单要素”规则。-nlt POLYGON

从GDAL 3.0.5开始,并且 可以同时使用。-nlt CONVERT_TO_LINEAR-nlt PROMOTE_TO_MULTI

-dim <val>

迫使座标尺寸为val(有效值是XYXYZ, XYM,和XYZM-用于向后兼容性2是一个别名 XY3是一个别名XYZ)。这会影响图层几何类型和要素几何。可以将该值设置为layer_dim 指示将要素几何提升为图层声明的座标尺寸。GDAL 2.1中添加了对M的支持。

-a_srs <srs_def>

分配输出SRS。Srs_def可以是完整的WKT定义(难以正确逃避),也可以是众所周知的定义(即EPSG:4326)或具有WKT定义的文件。

-t_srs <srs_def>

在输出上重新投影/转换为此SRS。

-s_srs <srs_def>

覆盖源SRS。

-ct <string>

PROJ字符串(单步操作或以+ proj = pipeline开头的多步字符串),描述CoordinateOperation的WKT2字符串或 urn:ogc:def:coordinateOperation:EPSG :: XXXX URN覆盖从源到目标的默认转换目标CRS。它必须考虑源CRS和目标CRS的轴顺序。

3.0版中的新功能。

-preserve_fid

使用源功能的FID,而不是让输出驱动程序自动分配一个新的(对于需要FID的格式)。如果不在附加模式下,则此行为是默认行为,如果输出驱动程序具有FID图层创建选项,则在这种情况下将使用源FID列的名称,并尝试保留源要素ID。可以通过设置禁用此行为-unsetFid

-fid fid

如果提供,将仅处理具有指定功能部件ID的功能部件。不包括空间查询或属性查询。注意:如果要基于特征ID选择多个特征,还可以使用'fid'是OGR SQL可以识别的特殊字段这一事实。因此, -哪里“在(1,3,5)中找到”会选择特征1、3和5。

-limit nb_features

限制每层要素的数量。

-oo NAME=VALUE

输入数据集打开选项(特定于格式)。

-doo NAME=VALUE

目标数据集打开选项(特定于格式),仅在-update模式下有效。

-gt n

每笔交易的n组功能(默认为20000)。写入具有事务支持的DBMS驱动程序时,请增加该值以提高性能。n可以设置为无限制,以将数据加载到单个事务中。

-ds_transaction

强制使用数据集级别的事务(对于支持这种机制的驱动程序),尤其是对于FileGDB之类的驱动程序,仅在仿真模式下支持数据集级别的事务。

-clipsrc [xmin ymin xmax ymax]|WKT|datasource|spat_extent

如果使用spat_extent关键字,则将数据源中的几何裁剪到指定的边界框(在源SRS中表示),WKT几何(POLYGON或MULTIPOLYGON),或裁剪到-spa ..选项的空间范围。指定数据源时,通常将其与-clipsrclayer,-clipsrcwhere或-clipsrcsql选项结合使用

-clipsrcsql <sql_statement>

而是使用SQL查询选择所需的几何。

-clipsrclayer <layername>

从源剪辑数据源中选择命名图层。

-clipsrcwhere <expression>

根据属性查询限制所需的几何形状。

-clipdst <xmin> <ymin> <xmax> <ymax>

重新投影到指定的边界框(在dest SRS中表示),WKT几何(POLYGON或MULTIPOLYGON)或从数据源中裁剪几何。指定数据源时,通常需要结合使用-clipdstlayer,-clipdstwhere或-clipdstsq ..选项。

-clipdstsql <sql_statement>

而是使用SQL查询选择所需的几何。

-clipdstlayer <layername>

从目标剪辑数据源中选择命名图层。

-clipdstwhere <expression>

根据属性查询限制所需的几何形状。

-wrapdateline

跨越日期线子午线的分割几何体(长= +/- 180度)

-datelineoffset

与日期线的偏移,以度为单位(默认长。= +/- 10度,将拆分170度至-170度之间的几何形状)

-simplify <tolerance>

距离公差以简化。注意:所使用的算法会保留每个要素的拓扑,尤其是对于多边形几何体,而不是整个图层。

-segmentize <max_dist>

2个节点之间的最大距离。用于创建中间点。

-makevalid

在几何上运行该OGRGeometry::MakeValid()操作,然后运行, OGRGeometryFactory::removeLowerDimensionSubGeoms()以确保它们对于“简单要素”规范的规则有效。

-fieldTypeToString type1,...

将指定类型的任何字段转换为目标图层中string类型的字段。有效类型为:Integer,Integer64,Real,String,Date,Time,DateTime,Binary,IntegerList,Integer64List,RealList,StringList。特殊值All可用于将所有字段转换为字符串。这是使用OGR SQL的CAST运算符的另一种方法,可以避免键入长的SQL查询。请注意,这不会影响源驱动程序使用的字段类型,仅是事后转换。

-mapFieldType srctype|All=dsttype,...

将指定类型的任何字段转换为另一种类型。有效类型为:Integer,Integer64,Real,String,Date,Time,DateTime,Binary,IntegerList,Integer64List,RealList,StringList。类型也可以包括括号之间的子类型,例如Integer(Boolean),Real(Float32),…。特殊值All可用于将所有字段转换为另一种类型。这是使用OGR SQL的CAST运算符的另一种方法,可以避免键入长的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

根据可用的GCP强制使用薄板花键变压器。

-fieldmap

指定要从源复制到目标的字段索引列表。列表中指定的第(n)个值是目标图层定义中该字段的索引,必须在其中复制源图层的第n个字段。索引计数从零开始。要省略字段,请指定值-1。列表中的值必须与源层中字段的数量一样多。我们可以使用“身份”设置来指定应使用相同的顺序来传输字段。此设置应与-append设置一起使用。

-addfields

这是的专用版本-append。与相反-append, -addfields具有将现有源层中找到的新字段添加到现有目标层中的作用。当合并具有非严格相同结构的文件时,此选项很有用。对于不支持将字段添加到现有非空图层的输出格式,这可能不起作用。请注意,如果计划使用-addfields,则可能需要将其与-forceNullable结合使用,包括进行初始导入。

-relaxedFieldNameMatch

如果目标驱动程序有实现,则以更轻松的方式在源和现有目标层之间进行字段名称匹配。

-forceNullable

如果不可空约束存在于源层中,则不要将其传播到目标层。

-unsetDefault

如果默认字段值存在于源层中,则不要将其传播到目标层。

-unsetFid

可以指定以防止源FID列的名称和源要素ID再次用于目标层。例如,如果选择带有ORDER BY子句的源要素,则此选项很有用。

-nomd

当输出驱动程序支持时,禁止将元数据从源数据集和图层复制到目标数据集和图层。

-mo META-TAG=VALUE

当输出驱动程序支持时,传递元数据键和值以在输出数据集上进行设置。

-noNativeData

禁止复制本机数据,即OGR抽象未捕获的源格式的详细信息,否则在转换为相同格式时,某些驱动程序(如GeoJSON)会保留这些格式。

2.1版中的新功能。

性能提示

当写入事务性DBMS(SQLite / PostgreSQL,MySQL等)时,增加在BEGIN TRANSACTION和COMMIT TRANSACTION语句之间执行的INSERT语句的数量可能是有益的。此数字是使用-gt选项指定的。例如,对于SQLite,显式定义-gt 65536可确保最佳性能,同时填充某些包含数十万或数百万行的表。但是,请注意,-skipfailures会覆盖-gt并将事务大小设置为1。

对于PostgreSQL,可以将PG_USE_COPY配置选项设置为YES,以显着提高插入性能。请参阅PG驱动程序文档页面。

通常,请参考输入和输出驱动程序的文档页面以获取性能提示。

C API

也可以使用C从C调用此实用程序GDALVectorTranslate()

例子

从Shapefile到GeoPackage的基本转换:

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

将座标参考系从更改EPSG:4326EPSG: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

在单独的格式页面中提供了更多示例。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章