gdal-ogr2ogr空間數據轉換

 

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"

 

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