资源简介

通过gdal打开ArcGIS的File GeoDatabase数据格式,并显示属性。

资源截图

代码片段和文件信息

using OSGeo.OGR;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace GDALTest01
{
    public partial class Form1 : Form
    {
        private OSGeo.OGR.DataSource poDS = null;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender EventArgs e)
        {
            // 为了支持中文路径,请添加下面这句代码         
            OSGeo.GDAL.Gdal.SetConfigOption(“GDAL_FILENAME_IS_UTF8“ “NO“);
            OSGeo.GDAL.Gdal.SetConfigOption(“PGEO_DRIVER_TEMPLATE“ “DRIVER=Microsoft Access Driver (*.mdb *.accdb);DBQ=%s“);
            OSGeo.GDAL.Gdal.SetConfigOption(“MDB_DRIVER_TEMPLATE“ “DRIVER=Microsoft Access Driver (*.mdb *.accdb);DBQ=%s“);
            // 为了使属性表字段支持中文,请添加下面这句         
            OSGeo.GDAL.Gdal.SetConfigOption(“SHAPE_ENCODING“ ““);
            string strVectorFile = @“D:\test.gdb“;
            // 注册所有的驱动      
            Ogr.RegisterAll();
            //创建数据,这里以创建ESRI的shp文件为例     
            string strDriverName = “OpenFileGDB“;
            Driver oDriver = Ogr.GetDriverByName(strDriverName);
            if (oDriver == null)
                MessageBox.Show(“Driver Error“);

            if (System.Environment.GetEnvironmentVariable(“GDAL_DATA“) == null)
                System.Environment.SetEnvironmentVariable(“GDAL_DATA“ Application.StartupPath + “\\gdal-data“);
            if (System.Environment.GetEnvironmentVariable(“GEOTIFF_CSV“) == null)
                System.Environment.SetEnvironmentVariable(“GEOTIFF_CSV“ Application.StartupPath + “\\gdal-data“);
            if (System.Environment.GetEnvironmentVariable(“GDAL_DRIVER_PATH“) == null)
                System.Environment.SetEnvironmentVariable(“GDAL_DRIVER_PATH“ Application.StartupPath + “\\gdalplugins“);

            
            oDriver.Register();
            poDS = oDriver.Open(strVectorFile 0);
            if (poDS == null)
                MessageBox.Show(“DataSource Creation Error“);
            for (int i = 0; i < poDS.GetlayerCount(); i++)
            {
                layer layer = poDS.GetlayerByIndex(i);
                listBox1.Items.Add(layer.GetName());
            }
        }

        private void listBox1_SelectedIndexChanged(object sender EventArgs e)
        {
            if(poDS != null)
            {
                layer layer = poDS.GetlayerByName(listBox1.SelectedItem.ToString());
                FeatureDefn featDefn = layer.GetlayerDefn();
                int pFieldsCount = featDefn.GetFieldCount();
                listView1.Columns.Clear();
                for (int i = 0; i < pFieldsCount; i++)
                {
                    listView1.Columns.Add(featDefn.GetFieldDefn(i).GetName());
                }

                layer.ResetReading();
      

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.     57344  2018-10-02 13:10  GDALTest01\.vs\GDALTest01\v15\.suo

     文件          0  2018-10-02 08:24  GDALTest01\.vs\GDALTest01\v15\Server\sqlite3\db.lock

     文件     598016  2018-10-02 12:52  GDALTest01\.vs\GDALTest01\v15\Server\sqlite3\storage.ide

     文件      32768  2018-10-02 11:39  GDALTest01\.vs\GDALTest01\v15\Server\sqlite3\storage.ide-shm

     文件    4120032  2018-10-02 13:10  GDALTest01\.vs\GDALTest01\v15\Server\sqlite3\storage.ide-wal

     文件        187  2018-10-02 08:23  GDALTest01\GDALTest01\App.config

     文件    2284544  2018-08-30 00:45  GDALTest01\GDALTest01\bin\Debug\cairo.dll

     文件    1043456  2017-09-03 16:15  GDALTest01\GDALTest01\bin\Debug\cfitsio.dll

     文件     111104  2018-08-30 00:45  GDALTest01\GDALTest01\bin\Debug\expat.dll

     文件    9428976  2017-07-26 11:01  GDALTest01\GDALTest01\bin\Debug\FileGDBAPI.dll

     文件      58368  2018-08-30 00:45  GDALTest01\GDALTest01\bin\Debug\freexl.dll

     文件     117760  2018-08-30 00:45  GDALTest01\GDALTest01\bin\Debug\fribidi.dll

     文件   16848384  2018-08-30 00:45  GDALTest01\GDALTest01\bin\Debug\gdal203.dll

     文件      19968  2018-08-30 00:45  GDALTest01\GDALTest01\bin\Debug\gdalconst_csharp.dll

     文件      16384  2018-08-30 00:45  GDALTest01\GDALTest01\bin\Debug\gdalconst_wrap.dll

     文件      11264  2018-10-02 13:05  GDALTest01\GDALTest01\bin\Debug\GDALTest01.exe

     文件        187  2018-10-02 08:23  GDALTest01\GDALTest01\bin\Debug\GDALTest01.exe.config

     文件      30208  2018-10-02 13:05  GDALTest01\GDALTest01\bin\Debug\GDALTest01.pdb

     文件      97280  2018-08-30 00:45  GDALTest01\GDALTest01\bin\Debug\gdal_csharp.dll

     文件      80896  2018-08-30 00:45  GDALTest01\GDALTest01\bin\Debug\gdal_wrap.dll

     文件    1012224  2018-08-30 00:45  GDALTest01\GDALTest01\bin\Debug\geos.dll

     文件     227840  2018-08-30 00:45  GDALTest01\GDALTest01\bin\Debug\geos_c.dll

     文件    2108928  2017-09-03 18:00  GDALTest01\GDALTest01\bin\Debug\hdf5.dll

     文件     235520  2017-09-03 18:00  GDALTest01\GDALTest01\bin\Debug\hdf5_cpp.dll

     文件      97792  2017-09-03 18:00  GDALTest01\GDALTest01\bin\Debug\hdf5_hl.dll

     文件      10240  2017-09-03 18:00  GDALTest01\GDALTest01\bin\Debug\hdf5_hl_cpp.dll

     文件     546816  2017-09-03 18:05  GDALTest01\GDALTest01\bin\Debug\hdfdll.dll

     文件     900608  2018-08-30 00:45  GDALTest01\GDALTest01\bin\Debug\iconv.dll

     文件     291840  2018-08-30 00:45  GDALTest01\GDALTest01\bin\Debug\libcurl.dll

     文件    1175552  2018-08-30 00:45  GDALTest01\GDALTest01\bin\Debug\libeay32.dll

............此处省略93个文件信息

评论

共有 条评论