ESRI.ArcGIS.Geodatabase.esriFieldType转换为System.Type

在ArcGIS Engine开发中经常需要将ESRI的数据类型转换为DotNet的数据类型。以下是封装好的转换函数。

更多 ArcGIS Engine开发相关讨论请加QQ群722805168,请注明“ArcGIS Engine开发”。

/// <summary>
        /// 获取esri数据类型
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public static esriFieldType GetEsriType(string type)
        {
            switch (type)//匹配类型选择
            {
                case "System.String":
                    return esriFieldType.esriFieldTypeString;
                case "System.DateTime":
                    return esriFieldType.esriFieldTypeDate;
                case "System.Double":
                    return esriFieldType.esriFieldTypeDouble;
                case "System.Int32":
                case "System.Int16":
                case "System.Int64":
                    return esriFieldType.esriFieldTypeInteger;
                case "System.Date":
                    return esriFieldType.esriFieldTypeDate;
                default:
                    return esriFieldType.esriFieldTypeString;
            }
        }

        /// <summary>
        /// 获取esri对应的datatable数据类型
        /// </summary>
        /// <param name="esritype"></param>
        /// <returns></returns>
        public static Type GetDataType(string esritype)
        {
            //对应格式的字符串转化
            switch (esritype)
            {
                case "esriFieldTypeInteger":
                    return typeof(int);
                case "esriFieldTypeString":
                    return typeof(string);
                case "esriFieldTypeDouble":
                    return typeof(double);
                    break;
                case "esriFieldTypeDate":
                    return typeof(DateTime);
                default:
                    return typeof(string);
            }
        }

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这个问题我可以回答。你可以使用ESRI.ArcGIS.Geodatabase.IWorkspaceFactory接口中的FileGDBWorkspaceFactoryClass类,来打开要素文件并将要素保存在featureClass中。 下面是C#代码示例: ```csharp // 初始化OpenFileDialog OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "要素文件 (*.shp)|*.shp"; if (openFileDialog.ShowDialog() != DialogResult.OK) return; // 获取要素文件路径 string filePath = openFileDialog.FileName; // 打开要素文件工作空间 ESRI.ArcGIS.Geodatabase.IWorkspaceFactory workspaceFactory = new ESRI.ArcGIS.DataSourcesFile.FileGDBWorkspaceFactoryClass(); ESRI.ArcGIS.Geodatabase.IWorkspace workspace = workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(filePath), 0); // 打开要素类 ESRI.ArcGIS.Geodatabase.IFeatureWorkspace featureWorkspace = (ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)workspace; ESRI.ArcGIS.Geodatabase.IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtension(filePath)); // 遍历要素并输出 ESRI.ArcGIS.Geodatabase.IFeatureCursor featureCursor = featureClass.Search(null, false); ESRI.ArcGIS.Geodatabase.IFeature feature = null; while ((feature = featureCursor.NextFeature()) != null) { // TODO: 在这里进行要素处理 } // 释放资源 System.Runtime.InteropServices.Marshal.ReleaseComObject(featureCursor); System.Runtime.InteropServices.Marshal.ReleaseComObject(featureClass); System.Runtime.InteropServices.Marshal.ReleaseComObject(featureWorkspace); System.Runtime.InteropServices.Marshal.ReleaseComObject(workspace); ``` 在这个示例中,我们使用了FileGDBWorkspaceFactoryClass类来打开要素文件工作空间,然后使用IWorkspace接口和IWorkspaceFactory接口来打开要素类。最后,我们遍历要素并进行处理。注意,当使用完COM对象后,我们需要显式地释放资源,以确保这些对象被正确释放。 希望这个答案能够帮到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值