ogr2ogr矢量数据要素格式转换
?
在文件格式之間轉(zhuǎn)換簡(jiǎn)單要素?cái)?shù)據(jù)。
概要
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可用于在文件格式之間轉(zhuǎn)換簡(jiǎn)單要素數(shù)據(jù)。它還可以在此過(guò)程中執(zhí)行各種操作,例如空間或?qū)傩赃x擇,減少屬性集,設(shè)置輸出坐標(biāo)系甚至在轉(zhuǎn)換過(guò)程中重新投影要素。
-f?<format_name>
輸出文件格式的名稱,例如,,?。從GDAL 2.3開(kāi)始,如果未指定,則從擴(kuò)展名猜測(cè)格式(以前是ESRI Shapefile)。ESRI?ShapefileMapInfo?FilePostgreSQL
-append
附加到現(xiàn)有圖層,而不是創(chuàng)建新圖層
-overwrite
刪除輸出圖層并重新創(chuàng)建為空
-update
在更新模式下打開(kāi)現(xiàn)有的輸出數(shù)據(jù)源,而不是嘗試創(chuàng)建一個(gè)新的數(shù)據(jù)源
-select?<field_list>
輸入層中要復(fù)制到新層的字段的逗號(hào)分隔列表。即使輸入層具有重復(fù)的字段名稱,如果列表中先前已提及,也會(huì)跳過(guò)該字段。(默認(rèn)為all;如果找到具有相同名稱的后續(xù)字段,則將跳過(guò)任何字段。)也可以在列表中指定幾何字段。
請(qǐng)注意,此設(shè)置不能與一起使用-append。要在添加到圖層時(shí)控制字段的選擇,請(qǐng)使用-fieldmap或-sql。
-progress
在終端上顯示進(jìn)度。僅在輸入圖層具有“快速要素計(jì)數(shù)”功能時(shí)才有效。
-sql?<sql_statement>
要執(zhí)行的SQL語(yǔ)句。結(jié)果表/層將保存到輸出中。從GDAL 2.1開(kāi)始,該@filename語(yǔ)法可用于指示內(nèi)容位于指向的文件名中。
-dialect?<dialect>
SQL方言。在某些情況下,可以通過(guò)傳遞OGRSQL來(lái)使用(未優(yōu)化的)OGR SQL代替RDBMS的本機(jī)SQL。“ SQLITE”方言也可以與任何數(shù)據(jù)源一起使用。
-where?restricted_where
屬性查詢(如SQL WHERE)。從GDAL 2.1開(kāi)始,該@filename?語(yǔ)法可用于指示內(nèi)容位于指向的文件名中。
-skipfailures
失敗后繼續(xù),跳過(guò)失敗的功能。
-spat?<xmin> <ymin> <xmax> <ymax>
空間查詢范圍,在源層(或用指定的層)的SRS中-spat_srs。僅選擇其幾何形狀與范圍相交的要素。除非-clipsrc指定,否則幾何不會(huì)被裁剪?。
-spat_srs?<srs_def>
覆蓋空間濾波器SRS。
-geomfield?<field>
空間過(guò)濾器所基于的幾何字段的名稱。
-dsco?NAME=VALUE
數(shù)據(jù)集創(chuàng)建選項(xiàng)(特定于格式)
-lco?NAME=VALUE
圖層創(chuàng)建選項(xiàng)(特定于格式)
-nln?<name>
為新圖層分配一個(gè)備用名稱
-nlt?<type>
為創(chuàng)建的圖層定義幾何類型。之一的NONE,?GEOMETRY,POINT,LINESTRING,POLYGON,?GEOMETRYCOLLECTION,MULTIPOINT,MULTIPOLYGON,?MULTILINESTRING,CIRCULARSTRING,COMPOUNDCURVE,?CURVEPOLYGON,MULTICURVE,和MULTISURFACE非線性幾何類型。在類型名稱中添加Z,M或ZM以使用高程,量度或高程和量度指定坐標(biāo)。PROMOTE_TO_MULTI可用于自動(dòng)提升將多邊形或多面體混合為多面體的層,以及將線串或多線串混合為多線串的層。將shapefile轉(zhuǎn)換為實(shí)現(xiàn)對(duì)幾何類型的嚴(yán)格檢查的PostGIS和其他目標(biāo)驅(qū)動(dòng)程序時(shí),可能會(huì)很有用。?CONVERT_TO_LINEAR可用于通過(guò)近似它們的非線性幾何類型為線性幾何類型進(jìn)行轉(zhuǎn)換,并CONVERT_TO_CURVE促進(jìn)非直線型到其廣義曲線類型(POLYGON到?CURVEPOLYGON,MULTIPOLYGON到MULTISURFACE,LINESTRING到?COMPOUNDCURVE,MULTILINESTRING到MULTICURVE)。從版本2.1開(kāi)始,可以將類型定義為已測(cè)量(“ 25D”保留為單個(gè)“ Z”的別名)。某些強(qiáng)制的幾何轉(zhuǎn)換可能會(huì)導(dǎo)致無(wú)效的幾何,例如,當(dāng)使用強(qiáng)制轉(zhuǎn)換多部分多多邊形時(shí),所得的多邊形將違反“簡(jiǎn)單要素”規(guī)則。-nlt?POLYGON
從GDAL 3.0.5開(kāi)始,并且?可以同時(shí)使用。-nlt?CONVERT_TO_LINEAR-nlt?PROMOTE_TO_MULTI
-dim?<val>
迫使坐標(biāo)尺寸為val(有效值是XY,XYZ,?XYM,和XYZM-用于向后兼容性2是一個(gè)別名?XY和3是一個(gè)別名XYZ)。這會(huì)影響圖層幾何類型和要素幾何。可以將該值設(shè)置為layer_dim?指示將要素幾何提升為圖層聲明的坐標(biāo)尺寸。GDAL 2.1中添加了對(duì)M的支持。
-a_srs?<srs_def>
分配輸出SRS。Srs_def可以是完整的WKT定義(難以正確逃避),也可以是眾所周知的定義(即EPSG:4326)或具有WKT定義的文件。
-t_srs?<srs_def>
在輸出上重新投影/轉(zhuǎn)換為此SRS。
-s_srs?<srs_def>
覆蓋源SRS。
-ct?<string>
PROJ字符串(單步操作或以+ proj = pipeline開(kāi)頭的多步字符串),描述CoordinateOperation的WKT2字符串或?urn:ogc:def:coordinateOperation:EPSG :: XXXX?URN覆蓋從源到目標(biāo)的默認(rèn)轉(zhuǎn)換目標(biāo)CRS。它必須考慮源CRS和目標(biāo)CRS的軸順序。
3.0版中的新功能。
-preserve_fid
使用源功能的FID,而不是讓輸出驅(qū)動(dòng)程序自動(dòng)分配一個(gè)新的(對(duì)于需要FID的格式)。如果不在附加模式下,則此行為是默認(rèn)行為,如果輸出驅(qū)動(dòng)程序具有FID圖層創(chuàng)建選項(xiàng),則在這種情況下將使用源FID列的名稱,并嘗試保留源要素ID。可以通過(guò)設(shè)置禁用此行為-unsetFid。
-fid?fid
如果提供,將僅處理具有指定功能部件ID的功能部件。不包括空間查詢或?qū)傩圆樵儭W⒁?#xff1a;如果要基于特征ID選擇多個(gè)特征,還可以使用'fid'是OGR SQL可以識(shí)別的特殊字段這一事實(shí)。因此,?-哪里“在(1,3,5)中找到”會(huì)選擇特征1、3和5。
-limit?nb_features
限制每層要素的數(shù)量。
-oo?NAME=VALUE
輸入數(shù)據(jù)集打開(kāi)選項(xiàng)(特定于格式)。
-doo?NAME=VALUE
目標(biāo)數(shù)據(jù)集打開(kāi)選項(xiàng)(特定于格式),僅在-update模式下有效。
-gt?n
每筆交易的n組功能(默認(rèn)為20000)。寫入具有事務(wù)支持的DBMS驅(qū)動(dòng)程序時(shí),請(qǐng)?jiān)黾釉撝狄蕴岣咝阅堋可以設(shè)置為無(wú)限制,以將數(shù)據(jù)加載到單個(gè)事務(wù)中。
-ds_transaction
強(qiáng)制使用數(shù)據(jù)集級(jí)別的事務(wù)(對(duì)于支持這種機(jī)制的驅(qū)動(dòng)程序),尤其是對(duì)于FileGDB之類的驅(qū)動(dòng)程序,僅在仿真模式下支持?jǐn)?shù)據(jù)集級(jí)別的事務(wù)。
-clipsrc?[xmin ymin xmax ymax]|WKT|datasource|spat_extent
如果使用spat_extent關(guān)鍵字,則將數(shù)據(jù)源中的幾何裁剪到指定的邊界框(在源SRS中表示),WKT幾何(POLYGON或MULTIPOLYGON),或裁剪到-spa ..選項(xiàng)的空間范圍。指定數(shù)據(jù)源時(shí),通常將其與-clipsrclayer,-clipsrcwhere或-clipsrcsql選項(xiàng)結(jié)合使用
-clipsrcsql?<sql_statement>
而是使用SQL查詢選擇所需的幾何。
-clipsrclayer?<layername>
從源剪輯數(shù)據(jù)源中選擇命名圖層。
-clipsrcwhere?<expression>
根據(jù)屬性查詢限制所需的幾何形狀。
-clipdst?<xmin> <ymin> <xmax> <ymax>
重新投影到指定的邊界框(在dest SRS中表示),WKT幾何(POLYGON或MULTIPOLYGON)或從數(shù)據(jù)源中裁剪幾何。指定數(shù)據(jù)源時(shí),通常需要結(jié)合使用-clipdstlayer,-clipdstwhere或-clipdstsq ..選項(xiàng)。
-clipdstsql?<sql_statement>
而是使用SQL查詢選擇所需的幾何。
-clipdstlayer?<layername>
從目標(biāo)剪輯數(shù)據(jù)源中選擇命名圖層。
-clipdstwhere?<expression>
根據(jù)屬性查詢限制所需的幾何形狀。
-wrapdateline
跨越日期線子午線的分割幾何體(長(zhǎng)= +/- 180度)
-datelineoffset
與日期線的偏移,以度為單位(默認(rèn)長(zhǎng)。= +/- 10度,將拆分170度至-170度之間的幾何形狀)
-simplify?<tolerance>
距離公差以簡(jiǎn)化。注意:所使用的算法會(huì)保留每個(gè)要素的拓?fù)?#xff0c;尤其是對(duì)于多邊形幾何體,而不是整個(gè)圖層。
-segmentize?<max_dist>
2個(gè)節(jié)點(diǎn)之間的最大距離。用于創(chuàng)建中間點(diǎn)。
-makevalid
在幾何上運(yùn)行該OGRGeometry::MakeValid()操作,然后運(yùn)行,?OGRGeometryFactory::removeLowerDimensionSubGeoms()以確保它們對(duì)于“簡(jiǎn)單要素”規(guī)范的規(guī)則有效。
-fieldTypeToString?type1,...
將指定類型的任何字段轉(zhuǎn)換為目標(biāo)圖層中string類型的字段。有效類型為:Integer,Integer64,Real,String,Date,Time,DateTime,Binary,IntegerList,Integer64List,RealList,StringList。特殊值A(chǔ)ll可用于將所有字段轉(zhuǎn)換為字符串。這是使用OGR SQL的CAST運(yùn)算符的另一種方法,可以避免鍵入長(zhǎng)的SQL查詢。請(qǐng)注意,這不會(huì)影響源驅(qū)動(dòng)程序使用的字段類型,僅是事后轉(zhuǎn)換。
-mapFieldType?srctype|All=dsttype,...
將指定類型的任何字段轉(zhuǎn)換為另一種類型。有效類型為:Integer,Integer64,Real,String,Date,Time,DateTime,Binary,IntegerList,Integer64List,RealList,StringList。類型也可以包括括號(hào)之間的子類型,例如Integer(Boolean),Real(Float32),…。特殊值A(chǔ)ll可用于將所有字段轉(zhuǎn)換為另一種類型。這是使用OGR SQL的CAST運(yùn)算符的另一種方法,可以避免鍵入長(zhǎng)的SQL查詢。這是-fieldTypeToString的概括。請(qǐng)注意,這不會(huì)影響源驅(qū)動(dòng)程序使用的字段類型,僅是事后轉(zhuǎn)換。
-unsetFieldWidth
將字段寬度和精度設(shè)置為0。
-splitlistfields
根據(jù)需要將StringList,RealList或IntegerList類型的字段拆分為多個(gè)String,Real或Integer類型的字段。
-maxsubfields?<val>
與組合-splitlistfields以限制為每個(gè)拆分字段創(chuàng)建的子字段的數(shù)量。
-explodecollections
為源文件中任何種類的幾何圖形集合中的每個(gè)幾何圖形生成一個(gè)特征,并在任何-sql選項(xiàng)之后應(yīng)用。
-zfield?<field_name>
使用指定的字段填充幾何的Z坐標(biāo)。
-gcp?<ungeoref_x> <ungeoref_y> <georef_x> <georef_y> <elevation>
添加指示的地面控制點(diǎn)。可以多次提供此選項(xiàng)以提供一組GCP。
-order?<n>
用于翹曲的多項(xiàng)式的階數(shù)(1到3)。默認(rèn)設(shè)置是根據(jù)GCP的數(shù)量選擇多項(xiàng)式順序。
-tps
根據(jù)可用的GCP強(qiáng)制使用薄板花鍵變壓器。
-fieldmap
指定要從源復(fù)制到目標(biāo)的字段索引列表。列表中指定的第(n)個(gè)值是目標(biāo)圖層定義中該字段的索引,必須在其中復(fù)制源圖層的第n個(gè)字段。索引計(jì)數(shù)從零開(kāi)始。要省略字段,請(qǐng)指定值-1。列表中的值必須與源層中字段的數(shù)量一樣多。我們可以使用“身份”設(shè)置來(lái)指定應(yīng)使用相同的順序來(lái)傳輸字段。此設(shè)置應(yīng)與-append設(shè)置一起使用。
-addfields
這是的專用版本-append。與相反-append,?-addfields具有將現(xiàn)有源層中找到的新字段添加到現(xiàn)有目標(biāo)層中的作用。當(dāng)合并具有非嚴(yán)格相同結(jié)構(gòu)的文件時(shí),此選項(xiàng)很有用。對(duì)于不支持將字段添加到現(xiàn)有非空?qǐng)D層的輸出格式,這可能不起作用。請(qǐng)注意,如果計(jì)劃使用-addfields,則可能需要將其與-forceNullable結(jié)合使用,包括進(jìn)行初始導(dǎo)入。
-relaxedFieldNameMatch
如果目標(biāo)驅(qū)動(dòng)程序有實(shí)現(xiàn),則以更輕松的方式在源和現(xiàn)有目標(biāo)層之間進(jìn)行字段名稱匹配。
-forceNullable
如果不可空約束存在于源層中,則不要將其傳播到目標(biāo)層。
-unsetDefault
如果默認(rèn)字段值存在于源層中,則不要將其傳播到目標(biāo)層。
-unsetFid
可以指定以防止源FID列的名稱和源要素ID再次用于目標(biāo)層。例如,如果選擇帶有ORDER BY子句的源要素,則此選項(xiàng)很有用。
-nomd
當(dāng)輸出驅(qū)動(dòng)程序支持時(shí),禁止將元數(shù)據(jù)從源數(shù)據(jù)集和圖層復(fù)制到目標(biāo)數(shù)據(jù)集和圖層。
-mo?META-TAG=VALUE
當(dāng)輸出驅(qū)動(dòng)程序支持時(shí),傳遞元數(shù)據(jù)鍵和值以在輸出數(shù)據(jù)集上進(jìn)行設(shè)置。
-noNativeData
禁止復(fù)制本機(jī)數(shù)據(jù),即OGR抽象未捕獲的源格式的詳細(xì)信息,否則在轉(zhuǎn)換為相同格式時(shí),某些驅(qū)動(dòng)程序(如GeoJSON)會(huì)保留這些格式。
2.1版中的新功能。
性能提示
當(dāng)寫入事務(wù)性DBMS(SQLite / PostgreSQL,MySQL等)時(shí),增加在BEGIN TRANSACTION和COMMIT TRANSACTION語(yǔ)句之間執(zhí)行的INSERT語(yǔ)句的數(shù)量可能是有益的。此數(shù)字是使用-gt選項(xiàng)指定的。例如,對(duì)于SQLite,顯式定義-gt 65536可確保最佳性能,同時(shí)填充某些包含數(shù)十萬(wàn)或數(shù)百萬(wàn)行的表。但是,請(qǐng)注意,-skipfailures會(huì)覆蓋-gt并將事務(wù)大小設(shè)置為1。
對(duì)于PostgreSQL,可以將PG_USE_COPY配置選項(xiàng)設(shè)置為YES,以顯著提高插入性能。請(qǐng)參閱PG驅(qū)動(dòng)程序文檔頁(yè)面。
通常,請(qǐng)參考輸入和輸出驅(qū)動(dòng)程序的文檔頁(yè)面以獲取性能提示。
C API
也可以使用C從C調(diào)用此實(shí)用程序GDALVectorTranslate()。
例子
從Shapefile到GeoPackage的基本轉(zhuǎn)換:
ogr2ogr -f GPKG output.gpkg input.shp將坐標(biāo)參考系從更改EPSG:4326為EPSG:3857:
ogr2ogr -s_srs EPSG:4326 -t_srs EPSG:3857 -f GPKG output.gpkg input.gpkg附加到現(xiàn)有層的示例(需要同時(shí)使用標(biāo)志-update和-append標(biāo)志):
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子句過(guò)濾功能:
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設(shè)置的示例。源層的第一字段用于填充目標(biāo)層的第三字段(索引2 =第三字段),源層的第二字段被忽略,源層的第三字段用于填充目標(biāo)層的第五字段目標(biāo)層。
ogr2ogr -append -fieldmap 2,-1,4 dst.shp src.shp更多示例。
shp轉(zhuǎn)geojson
合并geojson
?
合并篩選
ogr2ogr -select "MESH_CODE,ROAD_ID" Road_out.shp Road.shp總結(jié)
以上是生活随笔為你收集整理的ogr2ogr矢量数据要素格式转换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 为什么OFDM抗多径?
- 下一篇: python OGR库读取矢量文件——O