当前位置:   article > 正文

基于GDAL的gdb格式数据读写功能实现_gdal gdb

gdal gdb

一、GDAL类库下载:

下载地址:GISInternals Support Site

比如我下载的是release-1930-x64-gdal-3-4-2-mapserver-7-6-4

 

 点击release-1930-x64-gdal-3-4-2-mapserver-7-6-4的链接,下载这两个文件

 

 二、解压文件和安装gdb插件

1.下载好的两个文件,解压其中zip文件,

解压后如图

 

2.将filegdb.msi文件安装,安装后找到对应文件夹,如图

 3.将gdadlplugins文件夹和FileGDBAPI.dll文件拷贝到release-1930-x64-gdal-3-4-2-mapserver-7-6-4文件夹下的bin文件夹下;

4.将D:\release-1930-x64-gdal-3-4-2-mapserver-7-6-4\bin\gdal\csharp下的8个dll拷贝到release-1930-x64-gdal-3-4-2-mapserver-7-6-4文件夹下的bin文件夹下;

5.用vs2019创建windows桌面程序(netframework为4.7.2),一定要注意以x64程序运行;

6.将release-1930-x64-gdal-3-4-2-mapserver-7-6-4文件夹下的bin文件夹内容(除exe)拷贝到debug下;

7.添加引用 包含四个dll  gdal_csharp.dll gdalconst_csharp.dll  ogr_csharp  osr_csharp ,路径为release-1930-x64-gdal-3-4-2-mapserver-7-6-4\bin

8.初始化代码以及读写gdb文件方法

  1. Gdal.AllRegister();
  2. Ogr.RegisterAll();
  3. Gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES");
  4. // 为了使属性表字段支持中文,请添加下面这句
  5. Gdal.SetConfigOption("SHAPE_ENCODING", ""); //避免乱码
  6. Gdal.SetConfigOption("FILEGDB_ENCODING", "UTF-8");
  7. Utils utils = new Utils();
  8. string gdbFile = "D:\\test.gdb";
  9. DataSource sourceDs = utils.ReadVectorFile(gdbFile);
  10. //创建目标数据
  11. String outFileDir = "D:\\OUT";
  12. DataSource targetDs = utils.WriteVectorFile(sourceDs, outFileDir + "\\outData.gdb");
  1. public DataSource WriteVectorFile(DataSource dataSource, string strVectorFile)
  2. {
  3. string strDriverName = "FileGDB";
  4. // 创建一个文件,根据strDriverName扩展名自动判断驱动类型
  5. OSGeo.OGR.Driver oDriver = Ogr.GetDriverByName(strDriverName);
  6. if (oDriver == null)
  7. {
  8. Console.WriteLine(strVectorFile + " 驱动不可用!\n");
  9. return null;
  10. }
  11. DataSource oDS = oDriver.CreateDataSource(strVectorFile, null);
  12. if (oDS == null)
  13. {
  14. Console.WriteLine("创建文件【" + strVectorFile + "】失败!\n");
  15. return null;
  16. }
  17. return oDS;
  18. }
  19. public DataSource ReadVectorFile(string strVectorFile)
  20. {
  21. string strDriverName = "OpenFileGDB";
  22. // 创建一个文件,根据strDriverName扩展名自动判断驱动类型
  23. OSGeo.OGR.Driver oDriver = Ogr.GetDriverByName(strDriverName);
  24. if (oDriver == null)
  25. {
  26. Console.WriteLine(strVectorFile + " 驱动不可用!\n");
  27. return null;
  28. }
  29. DataSource oDS = oDriver.Open(strVectorFile, 0);
  30. if (oDS == null)
  31. {
  32. Console.WriteLine("读取gdb文件【" + strVectorFile + "】失败!\n");
  33. return null;
  34. }
  35. return oDS;
  36. }

9.环境变量设置:

GDAL_HOME   D:\release-1930-x64-gdal-3-4-2-mapserver-7-6-4

GDAL_DRIVER_PATH D:\release-1930-x64-gdal-3-4-2-mapserver-7-6-4\bin\gdalplugins

GDAL_DATA    D:\release-1930-x64-gdal-3-4-2-mapserver-7-6-4\bin\gdal-data

path: %GDAL_HOME%\bin  %GDAL_HOME%\bin\gdal\java  %PROJ_LIB%  %GDAL_DATA%

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/456509
推荐阅读
相关标签
  

闽ICP备14008679号