zoukankan      html  css  js  c++  java
  • 【C#】C#中使用GDAL3(一):Windows下超详细编译C#版GDAL3.3.0(VS2015+.NET 4+32位/64位)

      转载请注明原文地址:https://www.cnblogs.com/litou/p/15004877.html

    总目录
    (一)Windows下超详细编译C#版GDAL3.3.0(VS2015+.NET 4+32位/64位)
    (二)Windows下读写Shape文件及超详细解决中文乱码问题

      本文为《C#中使用GDAL3》的第一篇。

    本文目录
    一、介绍
    二、编译准备
    三、编译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:gdalsqlite-3.36)。

      64位:把sqlite-amalgamation-3360000.zip、sqlite-tools-win32-x86-3360000.zip、sqlite-dll-win64-x64-3360000.zip三个压缩包解压至同一目录下(C:gdalsqlite-3.36)。

      

      2、新建VC++项目

      在VS2015中,新建VC++的Win32控制台应用程序,名称为sqlite,位置为"C:gdalsqlite-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:gdalsqlite-3.36"路径中,按如下形式新建三个文件夹并复制相关文件,为后面库的编译处理提供基础。

      1)include:sqlite3.h、sqlite3ext.h

      2)bin:sqlite3.exe

      3)lib:sqlite.lib

    C:gdalsqlite-3.36
    +-- include -- sqlite3.h
    |      |------ sqlite3ext.h
    +-- bin ------ sqllite3.exe
    +-- lib ------ sqlite.lib

      四、编译LibTiff

      1、解压文件

      把tiff-4.3.0.zip解压至C:gdal iff-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 iff-4.3.0uild,用VS2015打开里面的解决方案文件tiff.sln。

      2)选择"解决方案配置"为"Release","解决方案平台"选项,32位的选"x86",64位选"x64"。

      3)分别对项目ALL_BUILD和INSTALL右键生成,结果存放在C:gdal iff-4.3.0output。

      

      

      五、编译PROJ

      1、解压文件

      把proj-7.2.1.tar.gz解压至C:gdalproj-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:gdalproj-7.2.1uild,用VS2015打开里面的解决方案文件PROJ.sln。

      2)选择"解决方案配置"为"Release","解决方案平台"选项,32位的选"x86",64位选"x64"。

      3)分别对项目ALL_BUILD和INSTALL右键生成,结果存放在C:gdalproj-7.2.1output。

      

      

      六、编译GDAL

      1、解压文件

      1)把gdal331.zip解压至C:gdalgdal-3.3.1。

      2)把swigwin-3.0.12.zip解压至C:gdalswigwin-3.0.12。

      

      

      2、修改nmake.opt

      用文本编辑工具,打开C:gdalgdal-3.3.1下的nmake.opt文件,并修改以下键的值:

      1)42行处MSVC_VER,值改为1900,1900代表是VS2015。

      2)66行处GDAL_HOME,值改为"C:gdalgdal-3.3.1output",该键值是指定项目编译后存放文件的位置。

      3)102行处SWIG,值改为"C:gdalswigwin-3.0.12swig.exe",指定swig工具的路径。

      4)240行处DLLBUILD,值改为1,表示编译为dll文件。

      5)260行处PROJ_INCLUDE,去掉前面的#号,值改为"-IC:gdalproj-7.2.1outputinclude"。

      6)264行处PROJ_LIBRARY,去掉前面的#号,值改为"C:gdalproj-7.2.1outputlibproj.lib shell32.lib ole32.lib"

      7)650行处SQLITE_INC,去掉前面的#号,值改为"-IC:gdalsqlite-3.36include"

      8)651行处SQLITE_LIB,去掉前面的#号,值改为"C:gdalsqlite-3.36libsqlite.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:gdalgdal-3.3.1,定位到GDAL的源码目录。

      3)执行下面编译命令,结果存放在C:gdalgdal-3.3.1output。其中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:gdalgdal-3.3.1swigcsharp下的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:gdalgdal-3.3.1swigcsharp,定位到swig下的csharp目录。

      3)执行下面编译命令,结果存放在C:gdalgdal-3.3.1outputcsharp。

        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:gdalgdal-3.3.1output,目录下有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:gdalgdal-3.3.1outputcsharp下的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:gdalgdal-3.3.1outputin把gdal303.dll复制到项目输出目录,再把项目中两个引用的类库对应的wrap文件(gdal_wrap.dll、ogr_wrap.dll)从C:gdalgdal-3.3.1outputcsharp复制到项目输出目录。

      

      再次运行没有报错,控制台输出了已注册的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然后生成即可。

  • 相关阅读:
    新浪微盘又是一个给力的产品啊,
    InfoQ: 百度数据库架构演变与设计
    列式数据库——Sybase IQ
    MapR初体验 淘宝共享数据平台 tbdata.org
    IBM正式发布新一代zEnterprise大型机(组图) 大型机,IBM,BladeCenter,美国,纽约 TechWeb News
    1TB is equal to the number of how many GB? 1PB equal to is equal to the number of TB? 1EB PB? | PCfault.com
    Cassandra vs HBase | WhyNosql
    The Hadoop Community Effect
    雅虎剥离开源软件平台 Hadoop ,与风投新建 Hortonworks 公司 品味雅虎
    RowOriented Database 、ColumnOriented Database 、KeyValue Store Database 、DocumentOriented Database
  • 原文地址:https://www.cnblogs.com/litou/p/15004877.html
Copyright © 2011-2022 走看看