ogr2ogr 是一個地理要素數據格式轉換工具。
示例
追加數據至一個已存在的圖層:
ogr2ogr -update -append -f PostgreSQL PG:dbname=warmerda abc.tab
將數據由 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
選項:源圖層的第一個字段用來填充目標圖層的第三個字段(index2:第三),源圖層的第二個字段忽略,第三個字段用來填充目標圖層的第五個字段:
ogr2ogr -append -fieldmap 2,-1,4 dst.shp src.shp
使用
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] [-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 ...]] 高級選項 : [-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]] [-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]
概述
本程序用於地理要素數據集的文件格式轉換。在處理過程中還可以進行多種轉換操作,如:根據空間和屬性選擇要素,過濾屬性,設置輸出的座標系(座標系轉換),以及重投影(投影轉換)。
選項
此處僅列出常用選項
- -f format_name :
輸出文件的格式,如:
-f "ESRI Shapefile" -f "TIGER" -f "MapInfo File" -f "GML" -f "PostgreSQL"
若沒有指定格式,則基於擴展名推測輸出格式。
自 GDAL 2.3 引入。支持格式列表位於GDAL首頁,矢量格式見 https://www.gdal.org/ogr_formats.html
- -append :追加數據至現有圖層(而不是創建新的圖層)。
- -overwrite :刪除輸出圖層,重新創建一個空的圖層(重寫)。
- -update :以 update 模式打開輸出數據源(而不是創建一個新的文件)。
- -select 字段列表 :
從輸入圖層拷貝到新圖層的字段列表,以逗號分隔。當輸入圖層含有重複字段名時,僅第一個字段會保留,後面重複的字段將被跳過。默認爲 all
。注意:不能和 -append
一起使用,如要在追加模式下的篩選字段,請使用 -fieldmap
或 -sql
。
- -progress :在終端顯示進度。Only works if input layers have the "fast feature count" capability.
- -sql sql語句 :需要執行的 SQL 語句。執行的結果(表、圖層)將被保存到輸出中。
- -where restricted_where :屬性查詢 (類似 SQL WHERE)。
- -skipfailures :發生錯誤時基繼續,跳過失敗要素。
- -lco :圖層創建選項(參考驅動詳情)。
高級選項
- -oo NAME=VALUE:
輸入文件打開選項(各選項詳見各格式驅動的頁面)。 - -doo NAME=VALUE:
輸出目標(Destination)數據集打開選項(見驅動詳情),僅在使用-update
模式時有效。 - -gt n:
每次事務處理的要素數量。當輸出至 DBMS 時可改善性能。 - -forceNullable:
當源數據的字段不能爲NULL時,不再繼承此屬性,使輸出圖層可以爲 NULL。
常用格式驅動
此處介紹驅動的常用選項,請持續更新。
GeoJSON
數據源
- HTTP URL
- .geojson 或 .json 格式的文本文件
- GeoJSON 格式的輸入流
圖層創建選項(lco)
COORDINATE_PRECISION=number :座標的精度,int數字。默認爲15位(GeoJSON2008),一般我們使用7位即可(RFC 7946)。去掉尾部的0時可能不會嚴格遵守該精度("Smart" truncation)。
RFC7946=YES/NO:(OGR >= 2.2)是否使用 RFC 7946 標準,默認爲NO,即GeoJSON2008。最好設爲YES,RFC 7946 爲最新 JSON 標準,且 Mapbox 使用的 RFC 8142 標準也由 RFC 7946 修改,不同之處涉及到座標精度、要素類型、分隔符等。
示例
將 ESRI Shapefile 轉換爲 RFC 7946 GeoJSON 文件:
ogr2ogr -f GeoJSON cities.json cities.shp -lco RFC7946=YES
PostgreSQL / PostGIS
主要用於從 Postgre 數據庫讀數據。在該驅動中,SQL語句直接傳給 數據庫執行,而不是由OGR執行。
連接數據庫
PG:dbname=databasename
或
PG:"dbname='databasename' host='addr' port='5432' user='x' password='y'"
ESRI File GDB
使用內置的 OpenFileGDB 驅動
支持 .gdb 目錄的讀取
示例
從 GDB 中讀取數據並存入 PostGIS:
ogr2ogr -overwrite -f "PostgreSQL" PG:"host=myhost user=myuser dbname=mydb password=mypass" "C:\somefolder\BigFileGDB.gdb" "MyFeatureClass"