【C#】C#中使用GDAL3(一):Windows下超详细编译C#版GDAL3.3.0(VS2015+.NET 4+32位/64位)
转载请注明原文地址:https://www.cnblogs.com/litou/p/15004877.html
目录 |
一、介绍 |
二、编译准备 |
三、编译SQLite |
四、编译LibTiff |
五、编译PROJ |
六、编译GDAL |
七、编译C#接口 |
八、编译结果 |
九、C#调用测试 |
十、编译Debug版GDAL |
一、介绍
GDAL是一个开源的栅格和矢量空间数据操作库。它使用单一的抽象数据模型和驱动模式,支持大多数的栅格和矢量空间数据的操作,从而不再依赖固定的类库(如ArcEngine等)。
官网:https://gdal.org
GitHub:https://github.com/OSGeo/gdal
GDAL只提供了源码下载,已编译的版本可以在https://www.gisinternals.com下载,但是该网站提供的已编译版本中包含了MapServer等其他内容,导致库总文件多(330个)且体积大(共约120M),不利于发布和使用。要想达到精简的目的,只能自行编译。
二、编译准备
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目录下)
三、编译SQLite
根据依赖关系,先编译SQLite3。
1、解压文件
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)。
2、新建VC++项目
在VS2015中,新建VC++的Win32控制台应用程序,名称为sqlite,位置为"C:\gdal\sqlite-3.36",去掉"为解决方案创建目录"选项,附加选项为"空项目"。
3、项目添加文件
在sqlite项目右键->"添加"->"现有项",选择"sqlite3.h"、"sqlite3ext.h"、"sqlite3.c"、"sqlite3.def"共四个文件。
4、修改sqlite3.def
双击sqlite3.def,在文件的最后添加sqlite3_unlock_notify后保存。
5、设置项目属性
1)右键sqlite项目->"属性",打开项目属性窗口。
2)顶部"配置"改为"所有配置","平台"改为"所有平台"。目的是不管Debug、Release、Win32、x64,相同部分的设置均一致。
3)左侧选择"配置属性"->"C/C++"->"预处理器",右侧"预处理器定义"点击最右边的下拉后选"编辑",在弹出的窗口中,把"<不同选项>"改为以下的值后确定。
_USRDLL
SQLITE_ENABLE_RTREE
SQLITE_ENABLE_COLUMN_METADATA
SQLITE_ENABLE_FTS5
SQLITE_ENABLE_UNLOCK_NOTIFY
4)左侧选择"配置属性"->"链接器"->"输入",右侧"模块定义文件"点击最右边的下拉后选"编辑",在弹出的窗口中,输入sqlite3.def后确定。
5)左侧选择"配置属性"->"常规",右侧"配置类型"改为"静态库(.lib)"后确定,直到关闭项目属性窗口。
6、编译生成sqlite.lib
选择"解决方案配置"为"Release","解决方案平台"选项,32位的选"x86",64位选"x64",然后右键sqlite项目->"生成",在项目位置的Release文件夹下会生成sqlite.lib。
7、构造结果文件夹
在"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
四、编译LibTiff
1、解压文件
把tiff-4.3.0.zip解压至C:\gdal\tiff-4.3.0。
2、生成项目文件
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按钮,生成项目文件。
3、编译生成结果
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。
五、编译PROJ
1、解压文件
把proj-7.2.1.tar.gz解压至C:\gdal\proj-7.2.1。
2、生成项目文件
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按钮,生成项目文件。
3、编译生成结果
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。
六、编译GDAL
1、解压文件
1)把gdal331.zip解压至C:\gdal\gdal-3.3.1。
2)把swigwin-3.0.12.zip解压至C:\gdal\swigwin-3.0.12。
2、修改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"
3、编译生成结果
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参数执行编译。
七、编译C#接口
通过swig编译出C#调用GDAL的接口。
1、按需修改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位编译必须要修改)
2、编译生成结果
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。
八、编译结果
经过以上的编译操作,最终生成的结果保存在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文件复制到输出的目录中。
九、C#调用测试
1、编写调用代码
在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));
}
}
}
}
2、运行报错:"未能加载文件或程序集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。
2、运行报错:"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
十、编译Debug版GDAL
1、编译方法
GDAL默认情况下编译为Release版,如需编译为Debug版,需要在编译命令行后加上"DEBUG=1"参数。
以32位为例,先执行nmake -f makefile.vc DEBUG=1,再执行nmake -f makefile.vc install DEBUG=1。
2、编译报错:"检测到_ITERATOR_DEBUG_LEVEL的不匹配项:值0不匹配值2"、"检测到RuntimeLibrary的不匹配项:值MD_DynamicRelease不匹配值MDd_DynamicDebug"。
报错的原因是编译Debug版的GDAL引用了Release版的PROJ库(LIB),解决方法是引用Debug版的PROJ库(LIB)。而Debug版的PROJ库只需要在VS2015中选择配置为Debug然后生成即可。
【C#】C#中使用GDAL3(一):Windows下超详细编译C#版GDAL3.3.0(VS2015+.NET 4+32位/64位)的更多相关文章
- Win7 下用 VS2015 编译最新 openssl(1.0.2j)包含32、64位debug和release版本的dll、lib(8个版本)
Win7 64位系统下通过VS2015编译好的最新的OpenSSL(1.0.2j)所有八个版本的链接库, 包含以下八个版本: 1.32位.debug版LIB: 2.32位.release版LIB: 3 ...
- 关于Windows与Linux下32位与64位开发中的数据类型长度的一点汇总
32位与64位的数据类型长度是不一样的,而且windows和linux也有些许区别,下面把64位下的数据长度列表如下(无符号unsigned和有符号的长度一样): linux64 ...
- RPM方式安装MySQL5.6和windows下安装mysql解压版
下载地址: http://cdn.MySQL.com/archives/mysql-5.6/MySQL-server-5.6.13-1.el6.x86_64.rpmhttp://cdn.mysql.c ...
- 手把手教你在Windows下使用MinGW编译libav(参考libx264的编入)
转自:http://www.th7.cn/Program/cp/201407/242762.shtml 手把手教你在Windows下使用MinGW编译libav libav是在Linux下使用纯c语言 ...
- windows 下使用免安裝版MySql5.5
windows 下使用面安裝版MySql5.5步驟如下 1.解壓下載的壓縮文件到指定文件夾.如:F:\DB\mysql-5.5.18-win32\mysql-5.5.18-win32: 2.在根目錄F ...
- 【转】Windows下使用VS2008编译OpenCV 2.1 添加Intel TBB和Python支持
Windows下使用VS2008编译OpenCV2.1 添加Intel TBB和Python支持 步骤: 1.仔细阅读OpenCV官网上的InstallGuide:http://opencv.will ...
- windows(32位 64位)下python安装mysqldb模块
windows(32位 64位)下python安装mysqldb模块 www.111cn.net 编辑:mengchu9 来源:转载 本文章来给各位使用在此windows系统中的python来安装一个 ...
- windows下用vs2010编译ffmpeg
转载自;http://q1q2q3q4q5q6ln.blog.163.com/blog/static/500794332014666536283/ (注意:请务必先阅读:七,后记补充:) ffmpeg ...
- Windows下从源代码编译Skia
在PPAPI里面画图,能够结合第三方的图形库.比方Cairo.Skia. Google Chrome.Chromium和Android都使用Skia作为画图引擎.我也来试试Skia,先过编译关. fo ...
随机推荐
- 远程服务调用RMI框架 演示,和底层原理解析
远程服务调用RMI框架: 是纯java写的, 只支持java服务之间的远程调用,很简单, // 接口要继承 Remote接口 public interface IHelloService extend ...
- Redis系列(五):消息队列
消息队列已经成为现在互联网服务端的标配组件,现在比较常用的消息中间件有RabbitMQ.Kafka.RocketMQ.ActiveMQ.说出来你可能不信,Redis作为一个缓存中间件,居然也提供了消息 ...
- 简单理解数据库连接池(JDBC)
为什么要使用连接池? 在我们写代码的时候,写了很多类,假如这些类都和数据库打交道.这样的话每个类都要去获取数据库连接,操作完了之后就把连接释放了. 要知道,获取数据库连接的操作其实是向操作系统底层去获 ...
- pycharm在虚拟机跑深度学习Mac
1.在PyCharm里配置部署环境 打开PyCharmTools > Deployment > Configuration, 新建一个SFTP服务器,名字自己取: 输入如下图配置,注意这里 ...
- CSS基础知识及其基本语法
一.什么是CSS CSS 是层叠样式表( Cascading Style Sheets ) 的简称. 有时我们也会称之为CSS 样式表或级联样式表. CSS 也是一种标记语言 CSS 主要用于设置HT ...
- 【VBA】读取另一个excel工作簿中的内容
后台打开工作簿读取内容源码: Sub subOpenWorkbook() Dim datebase As String datebase = "... ....xlsx" Appl ...
- kube-controller-manager源码分析-PV controller分析
kubernetes ceph-csi分析目录导航 概述 kube-controller-manager组件中,有两个controller与存储相关,分别是PV controller与AD contr ...
- Kubernetes的认证机制
1.了解认证机制 API服务器可以配置一到多个认证的插件(授权插件同样也可以).API服务器接收到的请求会经过一个认证插件的列表,列表中的每个插件都可以检查这个请求和尝试确定谁在发送这个请求.列表中的 ...
- kubernetes的网络代理模式
在k8s中,如果想ping svc以及ip,发现无法ping通,使用测试环境为k8s 1.6,后来k8s升级到1.12版本,发现ping svc以及ip可以ping通,这里分析一下原因. 后来发现是由 ...
- centos7 system自定义服务
1.介绍 centos中service命令与/etc/init.d的关系 service httpd start 其实是启动了存放在/etc/init.d目录下的脚本. 但是centos7的服务管 ...