轉載請註明原文地址:https://www.cnblogs.com/litou/p/15004877.htmlhtml
總目錄 |
(一)Windows下超詳細編譯C#版GDAL3.3.0(VS2015+.NET 4+32位/64位) |
(二)Windows下讀寫Shape文件及超詳細解決中文亂碼問題 |
本文爲《C#中使用GDAL3》的第一篇。git
本目錄 |
1、介紹 |
2、編譯準備 |
3、編譯SQLite |
4、編譯LibTiff |
5、編譯PROJ |
6、編譯GDAL |
7、編譯C#接口 |
8、編譯結果 |
9、C#調用測試 |
10、編譯Debug版GDAL |
1、介紹github
GDAL是一個開源的柵格和矢量空間數據操做庫。它使用單一的抽象數據模型和驅動模式,支持大多數的柵格和矢量空間數據的操做,從而再也不依賴固定的類庫(如ArcEngine等)。sql
官網:https://gdal.orgshell
GitHub:https://github.com/OSGeo/gdalwindows
GDAL只提供了源碼下載,已編譯的版本能夠在https://www.gisinternals.com下載,可是該網站提供的已編譯版本中包含了MapServer等其餘內容,致使庫總文件多(330個)且體積大(共約120M),不利於發佈和使用。要想達到精簡的目的,只能自行編譯。app
2、編譯準備curl
GDAL是基於C++編寫的,故編譯須要必定的依賴庫。依賴關係以下(來自於各庫網站的requirement):工具
1)GDAL最新版3.3.1:依賴PROJ >= 6;依賴VC++ >= 1900(即>=2015);依賴SQLite3測試
2)PROJ 6最新版6.3.2:依賴SQLite3 >= 3.11;依賴CMake >= 3.9
3)PROJ 7最新版7.2.1:依賴SQLite3 >= 3.11;依賴libtiff >= 4.0;CMake >= 3.9;可選curl >= 7.29.0
基於以上狀況,肯定編譯須要的文件以下:
1)GDAL 3.3.1:gdal-3.3.1.tar.gz(https://gdal.org/download.html)
2)PROJ 7.2.1:proj-7.2.1.tar.gz(https://proj.org/download.html)
3)SQLite 3.36(https://www.sqlite.org/download.html)
a)Source Code:sqlite-amalgamation-3360000.zip
b)Precompiled Binaries for Windows:sqlite-dll-win32-x86-3360000.zip(32位dll)、sqlite-dll-win64-x64-3360000(64位dll)、sqlite-tools-win32-x86-3360000.zip(可執行程序)
4)libtiff 4.3.0:tiff-4.3.0.zip(http://download.osgeo.org/libtiff)
5)SWIG:swigwin-3.0.12.zip(用於編譯C#代碼)(https://sourceforge.net/projects/swig/files)
環境及工具
1)安裝VS2015:需含VC++功能
2)安裝CMake:cmake-3.21.0-rc3-windows-i386.msi(https://cmake.org/download)
下載相關文件如圖:(這裏存放在C:\gdal目錄下)
3、編譯SQLite
根據依賴關係,先編譯SQLite3。
一、解壓文件
32位:把sqlite-amalgamation-3360000.zip、sqlite-tools-win32-x86-3360000.zip、sqlite-dll-win32-x86-3360000.zip三個壓縮包解壓至同一目錄下(C:\gdal\sqlite-3.36)。
64位:把sqlite-amalgamation-3360000.zip、sqlite-tools-win32-x86-3360000.zip、sqlite-dll-win64-x64-3360000.zip三個壓縮包解壓至同一目錄下(C:\gdal\sqlite-3.36)。
二、新建VC++項目
在VS2015中,新建VC++的Win32控制檯應用程序,名稱爲sqlite,位置爲"C:\gdal\sqlite-3.36",去掉"爲解決方案建立目錄"選項,附加選項爲"空項目"。
三、項目添加文件
在sqlite項目右鍵->"添加"->"現有項",選擇"sqlite3.h"、"sqlite3ext.h"、"sqlite3.c"、"sqlite3.def"共四個文件。
四、修改sqlite3.def
雙擊sqlite3.def,在文件的最後添加sqlite3_unlock_notify後保存。
五、設置項目屬性
1)右鍵sqlite項目->"屬性",打開項目屬性窗口。
2)頂部"配置"改成"全部配置","平臺"改成"全部平臺"。目的是無論Debug、Release、Win3二、x64,相同部分的設置均一致。
3)左側選擇"配置屬性"->"C/C++"->"預處理器",右側"預處理器定義"點擊最右邊的下拉後選"編輯",在彈出的窗口中,把"<不一樣選項>"改成如下的值後肯定。
_USRDLL
SQLITE_ENABLE_RTREE
SQLITE_ENABLE_COLUMN_METADATA
SQLITE_ENABLE_FTS5
SQLITE_ENABLE_UNLOCK_NOTIFY
4)左側選擇"配置屬性"->"連接器"->"輸入",右側"模塊定義文件"點擊最右邊的下拉後選"編輯",在彈出的窗口中,輸入sqlite3.def後肯定。
5)左側選擇"配置屬性"->"常規",右側"配置類型"改成"靜態庫(.lib)"後肯定,直到關閉項目屬性窗口。
六、編譯生成sqlite.lib
選擇"解決方案配置"爲"Release","解決方案平臺"選項,32位的選"x86",64位選"x64",而後右鍵sqlite項目->"生成",在項目位置的Release文件夾下會生成sqlite.lib。
七、構造結果文件夾
在"C:\gdal\sqlite-3.36"路徑中,按以下形式新建三個文件夾並複製相關文件,爲後面庫的編譯處理提供基礎。
1)include:sqlite3.h、sqlite3ext.h
2)bin:sqlite3.exe
3)lib:sqlite.lib
C:\gdal\sqlite-3.36 +-- include -- sqlite3.h | |------ sqlite3ext.h +-- bin ------ sqllite3.exe +-- lib ------ sqlite.lib
4、編譯LibTiff
一、解壓文件
把tiff-4.3.0.zip解壓至C:\gdal\tiff-4.3.0。
二、生成項目文件
1)打開CMake (cmake-gui)程序。
2)Where is the source code:選擇tiff源碼的目錄,這裏是C:/gdal/tiff-4.3.0。
Where to build the binaries:選擇生成項目文件的目錄,這裏是C:/gdal/tiff-4.3.0/build。
3)第一次點擊Configure按鈕,彈出編譯環境設置窗口。
4)Specify the generator for this project:選擇"Visual Studio 14 2015"。
Optional platform for generator:32位選擇"Win32",64位選擇"x64"。
5)點擊Finish,CMake程序將讀取編譯參數並列出,若是沒有問題日誌欄將顯示Configuring done。
6)將CMAKE_INSTALL_PROFEX的值改成"C:/gdal/tiff-4.3.0/output",再點擊一次Configure按鈕。該鍵值是指定項目編譯後存放文件的位置。
7)最後點擊Generate按鈕,生成項目文件。
三、編譯生成結果
1)打開項目文件輸出目錄C:\gdal\tiff-4.3.0\build,用VS2015打開裏面的解決方案文件tiff.sln。
2)選擇"解決方案配置"爲"Release","解決方案平臺"選項,32位的選"x86",64位選"x64"。
3)分別對項目ALL_BUILD和INSTALL右鍵生成,結果存放在C:\gdal\tiff-4.3.0\output。
5、編譯PROJ
一、解壓文件
把proj-7.2.1.tar.gz解壓至C:\gdal\proj-7.2.1。
二、生成項目文件
1)打開CMake (cmake-gui)程序。
2)Where is the source code:選擇proj源碼的目錄,這裏是C:/gdal/proj-7.2.1。
Where to build the binaries:選擇生成項目文件的目錄,這裏是C:/gdal/proj-7.2.1/build。
3)第一次點擊Configure按鈕,彈出編譯環境設置窗口。
4)Specify the generator for this project:選擇"Visual Studio 14 2015"。
Optional platform for generator:32位選擇"Win32",64位選擇"x64"。
5)點擊Finish,CMake程序將讀取編譯參數並列出,這時日誌欄將顯示Configuring incomplete, errors occurred!,表示配置參數有誤。
6)勾上"Grouped"和"Advanced"多選框,並修改如下鍵的值:
a)Ungrouped Entries.EXE_SQLITE3:C:/gdal/sqlite-3.36/bin/sqlite3.exe
b)SQLITE3.SQLITE3_INCLUDE_DIR:C:/gdal/sqlite-3.36/include
c)SQLITE3.SQLITE3_LIBRARY:C:/gdal/sqlite-3.36/lib/sqlite.lib
d)TIFF.TIFF_INCLUDE_DIR:C:/gdal/tiff-4.3.0/output/include
e)TIFF.TIFF_LIBRARY_RELEASE:C:/gdal/tiff-4.3.0/output/lib/tiff.lib
f)CMAKE.CMAKE_INSTALL_PREFIX:C:/gdal/proj-7.2.1/output
7)再點擊一次Configure按鈕,提示參數有誤,這時把ENABLE.ENABLE_CURL的選項去掉。
8)再點擊一次Configure按鈕,提示參數有誤,這時把BUILD.BUILD_PROJSYNC選項去掉。
9)再點擊一次Configure按鈕,此次沒有提示參數錯誤了,最後點擊Generate按鈕,生成項目文件。
三、編譯生成結果
1)打開項目文件輸出目錄C:\gdal\proj-7.2.1\build,用VS2015打開裏面的解決方案文件PROJ.sln。
2)選擇"解決方案配置"爲"Release","解決方案平臺"選項,32位的選"x86",64位選"x64"。
3)分別對項目ALL_BUILD和INSTALL右鍵生成,結果存放在C:\gdal\proj-7.2.1\output。
6、編譯GDAL
一、解壓文件
1)把gdal331.zip解壓至C:\gdal\gdal-3.3.1。
2)把swigwin-3.0.12.zip解壓至C:\gdal\swigwin-3.0.12。
二、修改nmake.opt
用文本編輯工具,打開C:\gdal\gdal-3.3.1下的nmake.opt文件,並修改如下鍵的值:
1)42行處MSVC_VER,值改成1900,1900表明是VS2015。
2)66行處GDAL_HOME,值改成"C:\gdal\gdal-3.3.1\output",該鍵值是指定項目編譯後存放文件的位置。
3)102行處SWIG,值改成"C:\gdal\swigwin-3.0.12\swig.exe",指定swig工具的路徑。
4)240行處DLLBUILD,值改成1,表示編譯爲dll文件。
5)260行處PROJ_INCLUDE,去掉前面的#號,值改成"-IC:\gdal\proj-7.2.1\output\include"。
6)264行處PROJ_LIBRARY,去掉前面的#號,值改成"C:\gdal\proj-7.2.1\output\lib\proj.lib shell32.lib ole32.lib"
7)650行處SQLITE_INC,去掉前面的#號,值改成"-IC:\gdal\sqlite-3.36\include"
8)651行處SQLITE_LIB,去掉前面的#號,值改成"C:\gdal\sqlite-3.36\lib\sqlite.lib"
三、編譯生成結果
1)打開"VS2015 本機工具命令提示符"
a)32位:開始菜單->"Visual Studio 2015"->"Visual Studio Tools"->"Windows Desktop Command Prompts"->"VS2015 x86 本機工具命令提示符"。
b)64位:開始菜單->"Visual Studio 2015"->"Visual Studio Tools"->"Windows Desktop Command Prompts"->"VS2015 x64 本機工具命令提示符"。
2)執行cd C:\gdal\gdal-3.3.1,定位到GDAL的源碼目錄。
3)執行下面編譯命令,結果存放在C:\gdal\gdal-3.3.1\output。其中bin目錄下的gdal303.dll就是最終生成的GDAL庫文件。
a)32位:先執行nmake -f makefile.vc,再執行nmake -f makefile.vc install。
b)64位:先執行nmake -f makefile.vc WIN64=1,再執行nmake -f makefile.vc install WIN64=1。
c)默認狀況下是Release編譯模式,如須要Debug編譯模式,第一個編譯命令需加上DEBUG=1參數執行編譯。
7、編譯C#接口
經過swig編譯出C#調用GDAL的接口。
一、按需修改makefile.vc
從3.2.0版本開始,默認狀況下使用netstandard2.0編譯C#的接口,但VS2015不支持netstandard2.0,故須要修改makefile.vc文件使C#接口支持.NET 4。
用文本編輯工具,打開C:\gdal\gdal-3.3.1\swig\csharp下的makefile.vc文件,修改內容以下:
1)32行處,!IFNDEF NETSTANDARD 改成 !IFDEF NETSTANDARD。
2)35行處,!IFNDEF NETCORE 改成 !IFDEF NETCORE。
3)40行處,CSC=csc /platform:anycpu 改成 CSC=csc /platform:x64。(64位編譯必需要修改)
二、編譯生成結果
1)打開"VS2015 本機工具命令提示符"
a)32位:開始菜單->"Visual Studio 2015"->"Visual Studio Tools"->"Windows Desktop Command Prompts"->"VS2015 x86 本機工具命令提示符"。
b)64位:開始菜單->"Visual Studio 2015"->"Visual Studio Tools"->"Windows Desktop Command Prompts"->"VS2015 x64 本機工具命令提示符"。
2)執行cd C:\gdal\gdal-3.3.1\swig\csharp,定位到swig下的csharp目錄。
3)執行下面編譯命令,結果存放在C:\gdal\gdal-3.3.1\output\csharp。
a)32位:先執行nmake -f makefile.vc interface,再執行nmake -f makefile.vc,最後執行nmake -f makefile.vc install。
b)64位:先執行nmake -f makefile.vc interface WIN64=1,再執行nmake -f makefile.vc WIN64=1,最後執行nmake -f makefile.vc install WIN64=1。
8、編譯結果
通過以上的編譯操做,最終生成的結果保存在C:\gdal\gdal-3.3.1\output,目錄下有bin、data、csharp三個文件夾。
1)bin:存放GDAL編譯後生成的動態連接庫gdal303.dll及相關的工具。其中gdal303.dll封裝了GDAL的全部功能,C#調用的必要文件。
2)data:存放GDAL處理時須要的描述性文件,如座標系信息、配置信息、模版信息、圖片等,使用時須要設置GDAL_DATA環境變量並指向該文件夾、
3)csharp:存放供C#調用的動態連接庫,分爲4組,分別是gdal、ogr、osr和gdalconst。每組分別由_csharp和_wrap結尾的dll文件組成。在VS中引用的是_csharp結尾的dll文件,引用後須要將對應的_wrap結尾的dll文件複製到輸出的目錄中。
9、C#調用測試
一、編寫調用代碼
在VS2015中,新增控制檯應用程序,引用C:\gdal\gdal-3.3.1\output\csharp下的gdal_csharp.dll和ogr_csharp.dll。代碼以下:
1)Gdal.AllRegister():註冊GDAL全部驅動(柵格數據處理)
2)Ogr.RegisterAll():註冊OGR全部驅動和(矢量數據處理)
3)PrintDriversGdal():打印已加載的GDAL驅動名稱
4)PrintDriversOgr():打印已加載的OGR驅動名稱
using OSGeo.GDAL; using OSGeo.OGR; using System; namespace GdalDemo { class Program { static void Main(string[] args) { Gdal.AllRegister(); Ogr.RegisterAll(); PrintDriversGdal(); PrintDriversOgr(); Console.ReadKey(); } private static void PrintDriversGdal() { int num = Gdal.GetDriverCount(); for (int i = 0; i < num; i++) { var driver = Gdal.GetDriver(i); Console.WriteLine(string.Format("GDAL {0}: {1}-{2}", i, driver.ShortName, driver.LongName)); } } private static void PrintDriversOgr() { int num = Ogr.GetDriverCount(); for (int i = 0; i < num; i++) { var driver = Ogr.GetDriver(i); Console.WriteLine(string.Format("OGR {0}: {1}", i, driver.name)); } } } }
二、運行報錯:"未能加載文件或程序集gdal_csharp或它的某一個依賴項"
報錯的緣由跟操做系統、項目的目標平臺與引用的dll有關,對應關係以下:
1)32位操做系統
目標平臺 | Any CPU | x86 | x64 |
32位DLL | √ | √ | × |
64位DLL | × | × | × |
2)64位操做系統
目標平臺 | Any CPU | x86 | x64 |
32位DLL | × | √ | × |
64位DLL | √ | × | √ |
根據上面兩個表格的內容調整項目目標平臺及引用的dll便可解決。
1)32位操做系統,只能引用32位dll,目標平臺可選Any CPU或x86。
2)64位操做系統,引用32位dll時,目標平臺必須選擇x86;引用64位dll時,目標平臺可選Any CPU或x64。
二、運行報錯:"OSGeo.GDAL.GdalPINVOKE的類型初始值設定項引起異常"
報錯的緣由是找不到依賴的動態連接庫文件,首先從C:\gdal\gdal-3.3.1\output\bin把gdal303.dll複製到項目輸出目錄,再把項目中兩個引用的類庫對應的wrap文件(gdal_wrap.dll、ogr_wrap.dll)從C:\gdal\gdal-3.3.1\output\csharp複製到項目輸出目錄。
再次運行沒有報錯,控制檯輸出了已註冊的GDAL和OGR的驅動名稱,其中已註冊的GDAL驅動175個,已註冊的OGR驅動57個,至此C#初步調用GDAL成功。
默認狀況下GDAL包含驅動清單:
GDAL 0: VRT-Virtual Raster GDAL 1: DERIVED-Derived datasets using VRT pixel functions GDAL 2: GTiff-GeoTIFF GDAL 3: COG-Cloud optimized GeoTIFF generator GDAL 4: NITF-National Imagery Transmission Format GDAL 5: RPFTOC-Raster Product Format TOC format GDAL 6: ECRGTOC-ECRG TOC format GDAL 7: HFA-Erdas Imagine Images (.img) GDAL 8: SAR_CEOS-CEOS SAR Image GDAL 9: CEOS-CEOS Image GDAL 10: JAXAPALSAR-JAXA PALSAR Product Reader (Level 1.1/1.5) GDAL 11: GFF-Ground-based SAR Applications Testbed File Format (.gff) GDAL 12: ELAS-ELAS GDAL 13: ESRIC-Esri Compact Cache GDAL 14: AIG-Arc/Info Binary Grid GDAL 15: AAIGrid-Arc/Info ASCII Grid GDAL 16: GRASSASCIIGrid-GRASS ASCII Grid GDAL 17: ISG-International Service for the Geoid GDAL 18: SDTS-SDTS Raster GDAL 19: DTED-DTED Elevation Raster GDAL 20: PNG-Portable Network Graphics GDAL 21: JPEG-JPEG JFIF GDAL 22: MEM-In Memory Raster GDAL 23: JDEM-Japanese DEM (.mem) GDAL 24: GIF-Graphics Interchange Format (.gif) GDAL 25: BIGGIF-Graphics Interchange Format (.gif) GDAL 26: ESAT-Envisat Image Format GDAL 27: BSB-Maptech BSB Nautical Charts GDAL 28: XPM-X11 PixMap Format GDAL 29: BMP-MS Windows Device Independent Bitmap GDAL 30: DIMAP-SPOT DIMAP GDAL 31: AirSAR-AirSAR Polarimetric Image GDAL 32: RS2-RadarSat 2 XML Product GDAL 33: SAFE-Sentinel-1 SAR SAFE Product GDAL 34: PCIDSK-PCIDSK Database File GDAL 35: PCRaster-PCRaster Raster File GDAL 36: ILWIS-ILWIS Raster Map GDAL 37: SGI-SGI Image File Format 1.0 GDAL 38: SRTMHGT-SRTMHGT File Format GDAL 39: Leveller-Leveller heightfield GDAL 40: Terragen-Terragen heightfield GDAL 41: ISIS3-USGS Astrogeology ISIS cube (Version 3) GDAL 42: ISIS2-USGS Astrogeology ISIS cube (Version 2) GDAL 43: PDS-NASA Planetary Data System GDAL 44: PDS4-NASA Planetary Data System 4 GDAL 45: VICAR-MIPL VICAR file GDAL 46: TIL-EarthWatch .TIL GDAL 47: ERS-ERMapper .ers Labelled GDAL 48: L1B-NOAA Polar Orbiter Level 1b Data Set GDAL 49: FIT-FIT Image GDAL 50: GRIB-GRIdded Binary (.grb, .grb2) GDAL 51: RMF-Raster Matrix Format GDAL 52: MSGN-EUMETSAT Archive native (.nat) GDAL 53: RST-Idrisi Raster A.1 GDAL 54: INGR-Intergraph Raster GDAL 55: GSAG-Golden Software ASCII Grid (.grd) GDAL 56: GSBG-Golden Software Binary Grid (.grd) GDAL 57: GS7BG-Golden Software 7 Binary Grid (.grd) GDAL 58: COSAR-COSAR Annotated Binary Matrix (TerraSAR-X) GDAL 59: TSX-TerraSAR-X Product GDAL 60: COASP-DRDC COASP SAR Processor Raster GDAL 61: R-R Object Data Store GDAL 62: MAP-OziExplorer .MAP GDAL 63: KMLSUPEROVERLAY-Kml Super Overlay GDAL 64: PDF-Geospatial PDF GDAL 65: Rasterlite-Rasterlite GDAL 66: MBTiles-MBTiles GDAL 67: CALS-CALS (Type 1) GDAL 68: SENTINEL2-Sentinel 2 GDAL 69: MRF-Meta Raster Format GDAL 70: PNM-Portable Pixmap Format (netpbm) GDAL 71: DOQ1-USGS DOQ (Old Style) GDAL 72: DOQ2-USGS DOQ (New Style) GDAL 73: PAux-PCI .aux Labelled GDAL 74: MFF-Vexcel MFF Raster GDAL 75: MFF2-Vexcel MFF2 (HKV) Raster GDAL 76: FujiBAS-Fuji BAS Scanner Image GDAL 77: GSC-GSC Geogrid GDAL 78: FAST-EOSAT FAST Format GDAL 79: BT-VTP .bt (Binary Terrain) 1.3 Format GDAL 80: LAN-Erdas .LAN/.GIS GDAL 81: CPG-Convair PolGASP GDAL 82: IDA-Image Data and Analysis GDAL 83: NDF-NLAPS Data Format GDAL 84: EIR-Erdas Imagine Raw GDAL 85: DIPEx-DIPEx GDAL 86: LCP-FARSITE v.4 Landscape File (.lcp) GDAL 87: GTX-NOAA Vertical Datum .GTX GDAL 88: LOSLAS-NADCON .los/.las Datum Grid Shift GDAL 89: NTv2-NTv2 Datum Grid Shift GDAL 90: CTable2-CTable2 Datum Grid Shift GDAL 91: ACE2-ACE2 GDAL 92: SNODAS-Snow Data Assimilation System GDAL 93: KRO-KOLOR Raw GDAL 94: ROI_PAC-ROI_PAC raster GDAL 95: RRASTER-R Raster GDAL 96: BYN-Natural Resources Canada's Geoid GDAL 97: ARG-Azavea Raster Grid format GDAL 98: RIK-Swedish Grid RIK (.rik) GDAL 99: USGSDEM-USGS Optional ASCII DEM (and CDED) GDAL 100: GXF-GeoSoft Grid Exchange Format GDAL 101: NWT_GRD-Northwood Numeric Grid Format .grd/.tab GDAL 102: NWT_GRC-Northwood Classified Grid Format .grc/.tab GDAL 103: ADRG-ARC Digitized Raster Graphics GDAL 104: SRP-Standard Raster Product (ASRP/USRP) GDAL 105: BLX-Magellan topo (.blx) GDAL 106: SAGA-SAGA GIS Binary Grid (.sdat, .sg-grd-z) GDAL 107: XYZ-ASCII Gridded XYZ GDAL 108: HF2-HF2/HFZ heightfield raster GDAL 109: OZI-OziExplorer Image File GDAL 110: CTG-USGS LULC Composite Theme Grid GDAL 111: ZMap-ZMap Plus Grid GDAL 112: NGSGEOID-NOAA NGS Geoid Height Grids GDAL 113: IRIS-IRIS data (.PPI, .CAPPi etc) GDAL 114: PRF-Racurs PHOTOMOD PRF GDAL 115: SIGDEM-Scaled Integer Gridded DEM .sigdem GDAL 116: TGA-TGA/TARGA Image File Format GDAL 117: STACTA-Spatio-Temporal Asset Catalog Tiled Assets GDAL 118: GNMFile-Geographic Network generic file based model GDAL 119: GNMDatabase-Geographic Network generic DB based model GDAL 120: DB2ODBC-IBM DB2 Spatial Database GDAL 121: ESRI Shapefile-ESRI Shapefile GDAL 122: MapInfo File-MapInfo File GDAL 123: UK .NTF-UK .NTF GDAL 124: OGR_SDTS-SDTS GDAL 125: S57-IHO S-57 (ENC) GDAL 126: DGN-Microstation DGN GDAL 127: OGR_VRT-VRT - Virtual Datasource GDAL 128: REC-EPIInfo .REC GDAL 129: Memory-Memory GDAL 130: CSV-Comma Separated Value (.csv) GDAL 131: GML-Geography Markup Language (GML) GDAL 132: GPX-GPX GDAL 133: KML-Keyhole Markup Language (KML) GDAL 134: GeoJSON-GeoJSON GDAL 135: GeoJSONSeq-GeoJSON Sequence GDAL 136: ESRIJSON-ESRIJSON GDAL 137: TopoJSON-TopoJSON GDAL 138: OGR_GMT-GMT ASCII Vectors (.gmt) GDAL 139: GPKG-GeoPackage GDAL 140: SQLite-SQLite / Spatialite GDAL 141: ODBC-ODBC GDAL 142: WAsP-WAsP .map format GDAL 143: PGeo-ESRI Personal GeoDatabase GDAL 144: MSSQLSpatial-Microsoft SQL Server Spatial Database GDAL 145: OpenFileGDB-ESRI FileGDB GDAL 146: DXF-AutoCAD DXF GDAL 147: CAD-AutoCAD Driver GDAL 148: FlatGeobuf-FlatGeobuf GDAL 149: Geoconcept-Geoconcept GDAL 150: GeoRSS-GeoRSS GDAL 151: GPSTrackMaker-GPSTrackMaker GDAL 152: VFK-Czech Cadastral Exchange Data Format GDAL 153: PGDUMP-PostgreSQL SQL dump GDAL 154: OSM-OpenStreetMap XML and PBF GDAL 155: GPSBabel-GPSBabel GDAL 156: OGR_PDS-Planetary Data Systems TABLE GDAL 157: Geomedia-Geomedia .mdb GDAL 158: EDIGEO-French EDIGEO exchange format GDAL 159: SVG-Scalable Vector Graphics GDAL 160: Idrisi-Idrisi Vector (.vct) GDAL 161: ARCGEN-Arc/Info Generate GDAL 162: Walk-Walk GDAL 163: SXF-Storage and eXchange Format GDAL 164: Selafin-Selafin GDAL 165: JML-OpenJUMP JML GDAL 166: VDV-VDV-451/VDV-452/INTREST Data Format GDAL 167: MVT-Mapbox Vector Tiles GDAL 168: MapML-MapML GDAL 169: TIGER-U.S. Census TIGER/Line GDAL 170: AVCBin-Arc/Info Binary Coverage GDAL 171: AVCE00-Arc/Info E00 (ASCII) Coverage GDAL 172: GenBin-Generic Binary (.hdr Labelled) GDAL 173: ENVI-ENVI .hdr Labelled GDAL 174: EHdr-ESRI .hdr Labelled GDAL 175: ISCE-ISCE raster
默認狀況下OGR包含驅動清單:
OGR 0: ESRIC OGR 1: PCIDSK OGR 2: PDS4 OGR 3: VICAR OGR 4: PDF OGR 5: MBTiles OGR 6: DB2ODBC OGR 7: ESRI Shapefile OGR 8: MapInfo File OGR 9: UK .NTF OGR 10: OGR_SDTS OGR 11: S57 OGR 12: DGN OGR 13: OGR_VRT OGR 14: REC OGR 15: Memory OGR 16: CSV OGR 17: GML OGR 18: GPX OGR 19: KML OGR 20: GeoJSON OGR 21: GeoJSONSeq OGR 22: ESRIJSON OGR 23: TopoJSON OGR 24: OGR_GMT OGR 25: GPKG OGR 26: SQLite OGR 27: ODBC OGR 28: WAsP OGR 29: PGeo OGR 30: MSSQLSpatial OGR 31: OpenFileGDB OGR 32: DXF OGR 33: CAD OGR 34: FlatGeobuf OGR 35: Geoconcept OGR 36: GeoRSS OGR 37: GPSTrackMaker OGR 38: VFK OGR 39: PGDUMP OGR 40: OSM OGR 41: GPSBabel OGR 42: OGR_PDS OGR 43: Geomedia OGR 44: EDIGEO OGR 45: SVG OGR 46: Idrisi OGR 47: ARCGEN OGR 48: Walk OGR 49: SXF OGR 50: Selafin OGR 51: JML OGR 52: VDV OGR 53: MVT OGR 54: MapML OGR 55: TIGER OGR 56: AVCBin OGR 57: AVCE00
10、編譯Debug版GDAL
一、編譯方法
GDAL默認狀況下編譯爲Release版,如需編譯爲Debug版,須要在編譯命令行後加上"DEBUG=1"參數。
以32位爲例,先執行nmake -f makefile.vc DEBUG=1,再執行nmake -f makefile.vc install DEBUG=1。
二、編譯報錯:"檢測到_ITERATOR_DEBUG_LEVEL的不匹配項:值0不匹配值2"、"檢測到RuntimeLibrary的不匹配項:值MD_DynamicRelease不匹配值MDd_DynamicDebug"。
報錯的緣由是編譯Debug版的GDAL引用了Release版的PROJ庫(LIB),解決方法是引用Debug版的PROJ庫(LIB)。而Debug版的PROJ庫只須要在VS2015中選擇配置爲Debug而後生成便可。