GDAL——命令使用專題——ogrinfo命令
html
前言sql
GDAL(Geospatial Data Abstraction Library)是一個在X/MIT許可協議下的開源柵格空間數據轉換庫。它利用抽象數據模型來表達所支持的各類文件格式。它還有一系列命令行工具來進行數據轉換和處理。編程
OGR是GDAL項目的一個分支,功能與GDAL相似,只不過它提供對矢量數據的支持。json
這一篇就講講常見的CDAL相關命令操做,使用好GDAL的相關命令,可以讓你事半功倍。有人會說,如今均可視化操做了,還用啥命令。可是當你的機器性能比較低,或者說你在無界面華的操做系統下工做,那麼命令就很是有用了,如:Linux等。架構
主要針對:ogrinfo命令、gdalinfo命令、gdalsrsinfo命令、gdallocationinfo命令、gdal_translate命令、gdaltransform命令 等。這一節討論ogrinfo命令。app
軟件環境:在上次安裝MapServer中,定義環境變量安裝。詳見《MapServer Configuring with IIS》。dom
GDAL通用、常規、多用途命令工具
在cmd中輸入:ogrinfo --help-general 或者 gdalinfo --help-general性能
Generic GDAL utility command options: --version: report version of GDAL in use. --license: report GDAL license info. --formats: report all configured format drivers. --format [format]: details of one format. --optfile filename: expand an option file into the argument list. --config key value: set system configuration option. --debug [on/off/value]: set debug level. --pause: wait for user input, time to attach debugger --locale [locale]: install locale for debugging (i.e. en_US.UTF-8) --help-general: report detailed help on general options.
以上列表中的相關命令爲通用命令。學習
通用命令的部分詳細使用見ogrinfo命令中的相關部分。
ogrinfo命令
用途:列出OGR所支持的數據信息。
官網:https://gdal.org/ogrinfo.html
數據類型:OGR支持的數據類型
在cmd中輸入:ogrinfo --formats
數據應用類型 | 數據類型 | 操做權限 | 說明 |
netCDF | -raster,vector- | (rw+s) | Network Common Data Format |
AmigoCloud | -vector- | (rw+) | AmigoCloud |
OCI | -vector- | (rw+) | Oracle Spatial |
PCIDSK | -raster,vector- | (rw+v) | PCIDSK Database File |
JP2OpenJPEG | -raster,vector- | (rwv) | JPEG-2000 driver based on OpenJPEG library |
-raster,vector- | (rw+vs) | Geospatial PDF | |
MBTiles | -raster,vector- | (rw+v) | MBTiles |
DB2ODBC | -raster,vector- | (rw+) | IBM DB2 Spatial Database |
ESRI Shapefile | -vector- | (rw+v) | ESRI Shapefile |
MapInfo File | -vector- | (rw+v) | MapInfo File |
UK .NTF | -vector- | (rov) | UK .NTF |
OGR_SDTS | -vector- | (rov) | SDTS |
S57 | -vector- | (rw+v) | IHO S-57 (ENC) |
DGN | -vector- | (rw+v) | Microstation DGN |
OGR_VRT | -vector- | (rov) | VRT - Virtual Datasource |
REC | -vector- | (ro) | EPIInfo .REC |
Memory | -vector- | (rw+) | Memory |
BNA | -vector- | (rw+v) | Atlas BNA |
CSV | -vector- | (rw+v) | Comma Separated Value (.csv) |
NAS | -vector- | (rov) | NAS-ALKIS |
GML | -vector- | (rw+v) | Geography Markup Language (GML) |
GPX | -vector- | (rw+v) | GPX |
LIBKML | -vector- | (rw+v) | Keyhole Markup Language (LIBKML) |
KML | -vector- | (rw+v) | Keyhole Markup Language (KML) |
GeoJSON | -vector- | (rw+v) | GeoJSON |
ESRIJSON | -vector- | (rov) | ESRIJSON |
TopoJSON | -vector- | (rov) | TopoJSON |
Interlis 1 | -vector- | (rw+v) | Interlis 1 |
Interlis 2 | -vector- | (rw+v) | Interlis 2 |
OGR_GMT | -vector- | (rw+v) | GMT ASCII Vectors (.gmt) |
GPKG | -raster,vector- | (rw+vs) | GeoPackage |
SQLite | -vector- | (rw+v) | SQLite / Spatialite |
ODBC | -vector- | (rw+) | ODBC |
WAsP | -vector- | (rw+v) | WAsP .map format |
PGeo | -vector- | (ro) | ESRI Personal GeoDatabase |
MSSQLSpatial | -vector- | (rw+) | Microsoft SQL Server Spatial Database |
PostgreSQL | -vector- | (rw+) | PostgreSQL/PostGIS |
MySQL | -vector- | (rw+) | MySQL |
OpenFileGDB | -vector- | (rov) | ESRI FileGDB |
XPlane | -vector- | (rov) | X-Plane/Flightgear aeronautical data |
DXF | -vector- | (rw+v) | AutoCAD DXF |
CAD | -raster,vector- | (rovs) | AutoCAD Driver |
Geoconcept | -vector- | (rw+v) | Geoconcept |
GeoRSS | -vector- | (rw+v) | GeoRSS |
GPSTrackMaker | -vector- | (rw+v) | GPSTrackMaker |
VFK | -vector- | (ro) | Czech Cadastral Exchange Data Format |
PGDUMP | -vector- | (w+v) | PostgreSQL SQL dump |
OSM | -vector- | (rov) | OpenStreetMap XML and PBF |
GPSBabel | -vector- | (rw+) | GPSBabel |
SUA | -vector- | (rov) | Tim Newport-Peace's Special Use Airspace Format |
OpenAir | -vector- | (rov) | OpenAir |
OGR_PDS | -vector- | (rov) | Planetary Data Systems TABLE |
WFS | -vector- | (rov) | OGC WFS (Web Feature Service) |
WFS3 | -vector- | (ro) | OGC WFS 3 client (Web Feature Service) |
HTF | -vector- | (rov) | Hydrographic Transfer Vector |
AeronavFAA | -vector- | (rov) | Aeronav FAA |
Geomedia | -vector- | (ro) | Geomedia .mdb |
EDIGEO | -vector- | (rov) | French EDIGEO exchange format |
GFT | -vector- | (rw+) | Google Fusion Tables |
SVG | -vector- | (rov) | Scalable Vector Graphics |
CouchDB | -vector- | (rw+) | CouchDB / GeoCouch |
Cloudant | -vector- | (rw+) | Cloudant / CouchDB |
Idrisi | -vector- | (rov) | Idrisi Vector (.vct) |
ARCGEN | -vector- | (rov) | Arc/Info Generate |
SEGUKOOA | -vector- | (rov) | SEG-P1 / UKOOA P1/90 |
SEGY | -vector- | (rov) | SEG-Y |
ODS | -vector- | (rw+v) | Open Document/ LibreOffice / OpenOffice Spreadsheet |
XLSX | -vector- | (rw+v) | MS Office Open XML spreadsheet |
ElasticSearch | -vector- | (rw+) | Elastic Search |
Walk | -vector- | (ro) | Walk |
Carto | -vector- | (rw+) | Carto |
SXF | -vector- | (rov) | Storage and eXchange Format |
Selafin | -vector- | (rw+v) | Selafin |
JML | -vector- | (rw+v) | OpenJUMP JML |
PLSCENES | -raster,vector- | (ro) | Planet Labs Scenes API |
CSW | -vector- | (ro) | OGC CSW (Catalog - Service for the Web) |
VDV | -vector- | (rw+v) | VDV-451/VDV-452/INTREST Data Format |
GMLAS | -vector- | (rwv) | Geography Markup Language (GML) driven by application schemas |
MVT | -vector- | (rw+v) | Mapbox Vector Tiles |
TIGER | -vector- | (rw+v) | U.S. Census TIGER/Line |
AVCBin | -vector- | (rov) | Arc/Info Binary Coverage |
AVCE00 | -vector- | (rov) | Arc/Info E00 (ASCII) Coverage |
HTTP | -raster,vector- | (ro) | HTTP Fetching Wrapper |
說明:
用法:
ogrinfo [--help-general] [-ro] [-q] [-where restricted_where|\@filename] [-spat xmin ymin xmax ymax] [-geomfield field] [-fid fid] [-sql statement|\@filename] [-dialect dialect] [-al] [-rl] [-so] [-fields={YES/NO}] [-geom={YES/NO/SUMMARY/WKT/ISO_WKT}] [--formats] [[-oo NAME=VALUE] ...] [-nomd] [-listmdd] [-mdd domain|`all`]* [-nocount] [-noextent] datasource_name [layer [layer ...]]
ogrinfo --help-general
cmd輸入:ogrinfo --help-general
用於獲取CDAL相關命令的通用支持
C:\WINDOWS\system32>ogrinfo --help-general #CDAL多用途命令,通用命令 Generic GDAL utility command options: --version: report version of GDAL in use. #查看版本信息 --license: report GDAL license info. #查看許可信息 --formats: report all configured format drivers. #查看支持的驅動應用,詳情可查看:https://gdal.org/ogr_formats.html --format [format]: details of one format. #查看某一格式支持的詳細信息 ,如:ogrinfo --format "ESRI Shapefile"。注意,在ogrinfo --formats列表中的文件名稱,若是名稱含空格,則必須用雙引號查詢 。 --optfile filename: expand an option file into the argument list. #執行操做文件中的命令,想見:--optfile --config key value: set system configuration option. #全局變量配置 --debug [on/off/value]: set debug level. #設置代開,關閉DEBUG,或者DEBUG的級別 --pause: wait for user input, time to attach debugger #在進行調試的時候,等待用戶輸入 --locale [locale]: install locale for debugging (i.e. en_US.UTF-8) #調試本地化安裝 --help-general: report detailed help on general options.
ogrinfo --optfile操做
在你的shape文件所在文件夾下面新建「states_ugl.opt(名字能夠任意取,後綴名也能夠是txt)」文件。
states_ugl.opt文件中的內容爲:-ro -al -so -rl
在cmd中輸入:cd /d E:\SvnWorkspace\LY_WEB_GIS\branches\Documents\ms4w-mapserver-for-wimdows\release-1911-x64-gdal-2-3-3-mapserver-7-2-1\apps\Example1.1\data 定位到你的shape文件實際路徑。
在cmd中輸入:ogrinfo --optfile states_ugl.opt states_ugl.shp
一般這樣作事爲了執行一些比較連貫和複雜的操做。
--config
GDAL的運行時配置選項,與構建時配置腳本的選項不一樣。運行時配置選項適用於全部平臺,並在運行時進行評估。它們能夠經過編程、命令行開關或用戶在環境中設置。
配置選項一般用於更改gdal和ogr驅動程序的默認行爲,在某些狀況下還用於更改gdal和ogr核心。它們本質上是用戶能夠設置的全局變量。
--config命令格式爲: --config key value 來設置的。詳見:https://trac.osgeo.org/gdal/wiki/ConfigOptions
下面以SHAPE_RESTORE_SHX來說解如何使用。
首先打開你存放shape文件目錄,把shx文件刪除掉,以下圖:
而後再cmd中輸入:cd /d E:\SvnWorkspace\LY_WEB_GIS\branches\Documents\ms4w-mapserver-for-wimdows\release-1911-x64-gdal-2-3-3-mapserver-7-2-1\apps\Example1.1\data
在cmd中輸入:ogrinfo --config SHAPE_RESTORE_SHX YES states_ugl.shp
文件建立成功。
ogrinfo --config SHAPE_RESTORE_SHX YES states_ugl.shp 表示:在打開shp文件時,若是沒有shx文件,則嘗試建立。
其餘操做不一一討論,明白格式以及在實際需求中會使用就好。
--debug
設置debug級別,值爲on、off、0或1
如:ogrinfo db.sqlite --debug on
--pause
在進行調試的時候,等待用戶輸入。
--locale
調試本地化安裝,如:en_US.UTF-8
以上是GDAL的一些通用命令使用方法,下面針對ogrinfo特有命令作相關介紹。
ogrinfo經常使用命令
-ro:read only,以只讀形式打開文件
-al:all layer,獲取全部layer的特徵信息。如在cmd中輸入:ogrinfo -ro -al states_ugl.shp,可看到下圖:
其全部特徵字段信息數據均會展示出來。
-rl:random layer,在GDAL2.2版本開始使用,表示啓用隨機讀取模式,即按在數據集中找到的順序迭代特性,而不是按每層迭代特性。對於像OSM、GMLAS等格式文件讀取速度回快不少。
-so:summary only,僅顯示摘要信息:顯示部分字段類型信息,僅顯示投影、架構、功能計數和範圍等摘要信息。如在cmd中輸入:ogrinfo -ro -al -so states_ugl.shp
-q:quite,顯示主要信息,包括座標系、層模式、範圍和功能計數(可是我的以爲沒這麼多,只有:圖層數量,名稱,層模式,多是個人shp文件問題)。在cmd中輸入:ogrinfo -q states_ugl.shp
#輸入
ogrinfo -ro -q states_ugl.shp
#輸出 1: states_ugl (Polygon)
-where:相似sql語句查詢,只對shape文件的屬性進行匹配查詢。如在cmd中輸入:ogrinfo -ro -al -so -where CLASS='land' states_ugl.shp
或者經過導入文件的方式執行where查詢(GDAL2.1版本之後才支持)
在數據源文件夾中建立一個where.txt文件,內容爲CLASS='water',而後在cmd中運行:ogrinfo -ro -al -so -where @where.txt shates_ugl.shp
-sql:相似sql語句查詢,同時支持單獨指定sql文件(.txt、.sql均可以)。
如在cmd中輸入:ogrinfo -ro -al -so -sql "SELECT CLASS,STATE FROM states_ugl" E:\SvnWorkspace\LY_WEB_GIS\branches\Documents\ms4w-mapserver-for-wimdows\release-1911-x64-gdal-2-3-3-mapserver-7-2-1\apps\tutorial\data
或者在cmd中輸入:ogrinfo -ro -al -where @E:\SvnWorkspace\LY_WEB_GIS\branches\Documents\ms4w-mapserver-for-wimdows\release-1911-x64-gdal-2-3-3-mapserver-7-2-1\apps\Example1.1\data\where.txt -sql @E:\SvnWorkspace\LY_WEB_GIS\branches\Documents\ms4w-mapserver-for-wimdows\release-1911-x64-gdal-2-3-3-mapserver-7-2-1\apps\Example1.1\data\sql.txt E:\SvnWorkspace\LY_WEB_GIS\branches\Documents\ms4w-mapserver-for-wimdows\release-1911-x64-gdal-2-3-3-mapserver-7-2-1\apps\tutorial\data
這個語句有上面的基礎很好理解。文件路徑是絕對路徑,除非你的cmd命令定位的數據源文件夾中存在sql過濾文件和where過濾文件。
-dialect:ogr版本sql語句。不大瞭解,標準sql語句也能使用,並且官網說性能地下。同時,sqlite支持的sql語句都能使用,因此使用通用sql語句就好,不作進一步的嘗試與講解。
-spat xmin ymin xmax ymax:根據數據範圍過濾。
在cmd中輸入:ogrinfo -ro -al -so states_ugl.shp 能夠查看其數據範圍爲「 (-97.238976, 41.619778) - (-82.122902, 49.385620) 」 ,上圖有。
在cmd中輸入:ogrinfo -ro -al -so -spat -90 42 -82 45 states_ugl.shp
-geomfield field:
-fid:OGR支持的一個特殊過濾字段,fid。能夠在 -where 中使用,如: -where "fid in (200,201,202)"
在cmd中輸入:ogrinfo -ro -al -where "fid in (200,201,202)" states_ugl.shp
-fields={YES/NO}:設置是否顯示字段數據,若是是YES,顯示字段數據信息,若是爲NO,不顯示。默認YES。
在cmd中輸入:ogrinfo -ro -al -fields=NO states_ugl.shp
-geom={YES/NO/SUMMARY/WKT/ISO_WKT}:用於控制字段數據、幾何圖形的POLYGON數據顯示以及輸出(GDAL2.1版本的默認格式ISO_WKT)。
YES:默認值,所有顯示,顯示格式爲OGC WKT格式輸出。
NO:不顯示POLYGON數據
如在cmd中輸入:ogrinfo -ro -al -gemo=NO states_ugl.shp
SUMMARY:顯示簡要數據,可是多了點的個數
設置爲WKT、ISO_WKT效果通YES。WKT處其實顯示的是座標信息。
-oo NAME=VALUE:數據集打開操做項。
有點相似 --config KEY VALUE。只是-00 NAME=VALUE 是 名稱=值。表達方式不同。
#data.json的定義
{ "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ 2, 49 ] }, "properties": { "a_property": "foo", "some_object": { "a_property": 1, "another_property": 2 } } } ] }
而後在cmd中輸入:
ogrinfo data.json -al -oo FLATTEN_NESTED_ATTRIBUTES=yes
能夠看到以下轉換:
INFO: Open of `data.json' using driver `GeoJSON' successful. Layer name: data Geometry: Point Feature Count: 1 Extent: (2.000000, 49.000000) - (2.000000, 49.000000) Layer SRS WKT: GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich",0, AUTHORITY["EPSG","8901"]], UNIT["degree",0.0174532925199433, AUTHORITY["EPSG","9122"]], AUTHORITY["EPSG","4326"]] a_property: String (0.0) some_object_a_property: Integer (0.0) some_object_another_property: Integer (0.0) OGRFeature(data):0 a_property (String) = foo some_object_a_property (Integer) = 1 some_object_another_property (Integer) = 2 POINT (2 49)
-nomd:阻止元數據打印。有些數據集可能包含許多元數據字符串。
-listmdd:列出全部的元數據。
-nomd 和 -listmdd 都是針對元數據的。
#metadata 元數據
Metadata: DBF_DATE_LAST_UPDATE=2002-03-07
#在states_ugl.shp 文件查看的時候,大家會發現有這了數據。
#-nomd不顯示這條
#默認顯示, -listmdd顯示有所的。
-mdd domain:從指定的域顯示元數據。all能夠顯示全部域的元數據。
-nocount:沒有Feature數量,即圖形要素數量Feature Count: 204
-noextent:不輸出空間範圍。即沒有 Extent: (-97.238976, 41.619778) - (-82.122902, 49.385620)
--formats:列出OGR支持的數據格式。上面講過。
datasource_name:表示數據源、或者多個數據源文件所在目錄、或者其餘定義的全局虛擬名稱。查看:https://gdal.org/ogr_formats.html 此網頁,瞭解OGR支持的數據格式。
如:在cmd中知己輸入(不定位到數據所在文件夾):ogrinfo -ro -al -so E:\SvnWorkspace\LY_WEB_GIS\branches\Documents\ms4w-mapserver-for-wimdows\release-1911-x64-gdal-2-3-3-mapserver-7-2-1\apps\tutorial\data
會羅列出當前文件下下面全部能夠打開的數據文件的信息。
layer:獲取請求圖層數據信息。
如在cmd中輸入:ogrinfo -ro -al -so E:\SvnWorkspace\LY_WEB_GIS\branches\Documents\ms4w-mapserver-for-wimdows\release-1911-x64-gdal-2-3-3-mapserver-7-2-1\apps\tutorial\data roads_ugl
則是顯示圖層名稱爲roads_ugl的數據信息
或者輸入:ogrinfo -ro -al -so E:\SvnWorkspace\LY_WEB_GIS\branches\Documents\ms4w-mapserver-for-wimdows\release-1911-x64-gdal-2-3-3-mapserver-7-2-1\apps\tutorial\data roads_ugl states_ugl
其餘命令官網
若是想學習而不等待博客更新,能夠先上官網看看。
gdalinfo命令
官網:https://gdal.org/gdalinfo.html
dalsrsinfo命令
官網:https://gdal.org/gdalsrsinfo.html
gdallocationinfo命令
官網:https://gdal.org/gdallocationinfo.html
gdal_translate命令
官網:https://gdal.org/gdal_translate.html
gdaltransform命令
官網:https://gdal.org/gdaltransform.html
後記
寫得很累,每一個命令的做用,效果,一步一步的操做基本都寫得很是詳細。可是這是個學習的過程。行者無疆,讓前面的人累點吧!畢竟也沒人指導,百度下的資料也是很稀缺的。要麼就是個大綱同樣。要麼就是讓人不知所云。
加油各位。