gdal在vs2017中配置(c#版 两种方法)

方法一:

1.下载编译好的gdal文件 链接地址为 http://www.gisinternals.com/release.php  可以选择32位或64位的类包。也可以在older versions下载旧版本。

2.配置环境变量:

将下载的zip文件放到e盘,路径为E:\release-1911-x64-gdal-2-3-2-mapserver-7-2-1

1)新增环境变量GDAL32_DLL

值为:E:\release-1911-x64-gdal-2-3-2-mapserver-7-2-1\bin;E:\release-1911-x64-gdal-2-3-2-mapserver-7-2-1\bin\gdal\csharp;E:\release-1911-x64-gdal-2-3-2-mapserver-7-2-1\bin\gdal\java
2)新增环境变量GDAL_DATA
值为:E:\release-1911-x64-gdal-2-3-2-mapserver-7-2-1\bin\gdal-data
3)在path下添加 %GDAL32_DLL%

3.在vs2017新建项目中添加引用 这四个dll文件即可。

方法二:

1.在vs中找到项目->管理NutGet程序包,下载并安装gdal 、gdal.native。

2.安装完之后会在项目中产生一个文件,将代码替换到此文件。



using System;
using System.IO;
using System.Reflection;
using Gdal = OSGeo.GDAL.Gdal;
using Ogr = OSGeo.OGR.Ogr;

namespace trans
{
    public static partial class GdalConfiguration
    {
        private static bool _configuredOgr;
        private static bool _configuredGdal;

        /// <summary>
        /// Function to determine which platform we're on
        /// </summary>
        private static string GetPlatform()
        {
            return IntPtr.Size == 4 ? "x86" : "x64";
        }

        /// <summary>
        /// Construction of Gdal/Ogr
        /// </summary>
        static GdalConfiguration()
        {
            var executingAssemblyFile = new Uri(Assembly.GetExecutingAssembly().GetName().CodeBase).LocalPath;
            var executingDirectory = Path.GetDirectoryName(executingAssemblyFile);

            if (string.IsNullOrEmpty(executingDirectory))
                throw new InvalidOperationException("cannot get executing directory");


            var gdalPath = Path.Combine(executingDirectory, "gdal");
            var nativePath = Path.Combine(gdalPath, GetPlatform());

            // Prepend native path to environment path, to ensure the
            // right libs are being used.
            var path = Environment.GetEnvironmentVariable("PATH");
            path = nativePath + ";" + Path.Combine(nativePath, "plugins") + ";" + path;
            Environment.SetEnvironmentVariable("PATH", path);

            // Set the additional GDAL environment variables.
            var gdalData = Path.Combine(gdalPath, "data");
            Environment.SetEnvironmentVariable("GDAL_DATA", gdalData);
            Gdal.SetConfigOption("GDAL_DATA", gdalData);

            var driverPath = Path.Combine(nativePath, "plugins");
            Environment.SetEnvironmentVariable("GDAL_DRIVER_PATH", driverPath);
            Gdal.SetConfigOption("GDAL_DRIVER_PATH", driverPath);

            Environment.SetEnvironmentVariable("GEOTIFF_CSV", gdalData);
            Gdal.SetConfigOption("GEOTIFF_CSV", gdalData);

            var projSharePath = Path.Combine(gdalPath, "share");
            Environment.SetEnvironmentVariable("PROJ_LIB", projSharePath);
            Gdal.SetConfigOption("PROJ_LIB", projSharePath);
        }

        /// <summary>
        /// Method to ensure the static constructor is being called.
        /// </summary>
        /// <remarks>Be sure to call this function before using Gdal/Ogr/Osr</remarks>
        public static void ConfigureOgr()
        {
            if (_configuredOgr) return;

            // Register drivers
            Ogr.RegisterAll();
            _configuredOgr = true;
        }

        /// <summary>
        /// Method to ensure the static constructor is being called.
        /// </summary>
        /// <remarks>Be sure to call this function before using Gdal/Ogr/Osr</remarks>
        public static void ConfigureGdal()
        {
            if (_configuredGdal) return;

            // Register drivers
            Gdal.AllRegister();
            _configuredGdal = true;
        }
    }
}

3.添加同方法一的四个引用文件 文件路径在此路径下

4.最后,在主程序方法中添加三个方法即可。

发布了48 篇原创文章 · 获赞 24 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/xlp789/article/details/89922762