private static IFeatureClass CreatStnShp(string shp){//打开工作空间IWorkspaceFactory wsfactory = new ShapefileWorkspaceFactoryClass();string ssss = System.IO.Path.GetDirectoryName(shp);IWorkspace workspace = wsfactory.OpenFromFile(ssss, 0);IFeatureWorkspace pFeatWsp = workspace as IFeatureWorkspace;if (File.Exists(shp)){DialogResult dr = MessageBox.Show("文件已经存在,是否使用该文件?", "提示",MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);if ( dr== DialogResult.Yes){return pFeatWsp.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtension(shp));}else if(dr==DialogResult.No){//删除已有DialogResult ddr = MessageBox.Show("是否删除并替换已有文件", "提示",MessageBoxButtons.YesNo, MessageBoxIcon.Question);if (ddr == DialogResult.Yes){string dbffile = System.IO.Path.ChangeExtension(shp, ".dbf");string shxfile = System.IO.Path.ChangeExtension(shp, ".shx");string prjfile = System.IO.Path.ChangeExtension(shp, ".prj");File.Delete(shp);if (File.Exists(dbffile))File.Delete(dbffile);if (File.Exists(shxfile))File.Delete(shxfile);if (File.Exists(prjfile))File.Delete(prjfile);}else{MessageBox.Show("请重新选择shapfile文件的路径");}}else{return null;}}IGeometryDefEdit pGeoDef = new GeometryDefClass();pGeoDef.GeometryType_2 = esriGeometryType.esriGeometryPoint;//设置空间参考ISpatialReferenceFactory3 spatialReferenceFactory = new SpatialReferenceEnvironmentClass();ISpatialReference pSr = spatialReferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);//设置字段IFieldEdit pField;IFieldsEdit pFieldsEdit = new FieldsClass();//设置几何字段pField = new FieldClass();pField.Type_2 = esriFieldType.esriFieldTypeGeometry;pField.GeometryDef_2 = pGeoDef;pField.Name_2 = "Shape";pFieldsEdit.AddField(pField);//产生唯一索引字段pField = new FieldClass();pField.Name_2 = "OBJECTID";pField.Type_2 = esriFieldType.esriFieldTypeOID;pFieldsEdit.AddField(pField);//添加station相关字段//string[] str = new string[]{"NCDCID","WBAN","NAME","COOPID","COUNTRY","STNTYPE"};string[] str = new string[] { "WBAN", "NAME", "LOCATION", "LAT", "LON"};foreach (string stt in str){pField = new FieldClass();pField.Name_2 = stt;pField.AliasName_2 = stt;pField.Type_2 = esriFieldType.esriFieldTypeString;if (stt == "LOCATION")pField.Length_2 = 60;elsepField.Length_2 = 30;pFieldsEdit.AddField(pField);}pField = new FieldClass();pField.Name_2 = "StnHeight";pField.Type_2 = esriFieldType.esriFieldTypeDouble;pFieldsEdit.AddField(pField);pField = new FieldClass();pField.Name_2 = "GndHeight";pField.Type_2 = esriFieldType.esriFieldTypeDouble;pFieldsEdit.AddField(pField);IFeatureClass pfeatcls =pFeatWsp.CreateFeatureClass(System.IO.Path.GetFileNameWithoutExtension(shp), pFieldsEdit as IFields, null, null, esriFeatureType.esriFTSimple, "Shape", "");IGeoDataset pGeoDs = pfeatcls as IGeoDataset;IGeoDatasetSchemaEdit pGeoDSe = pGeoDs as IGeoDatasetSchemaEdit;if (pGeoDSe.CanAlterSpatialReference){pGeoDSe.AlterSpatialReference(pSr);}return pfeatcls;}

上面是可正常运行的代码。自己写的时候凭着自己的理解做了部分修改,在字段声明的时候略有不同,如下

IFields pfs = new FieldsClass();IFieldsEdit pFieldsEdit = pfs as IFieldsEdit;IField pFieldd = new FieldClass();IFieldEdit pField = pFieldd as IFieldEdit;

结果在运行的时候出现COM异常,仔细核查了CreateFeatureClass的每个参数,多次检查都没有查到结果。后来修改为文中第一段代码声明方式,再运行成功了。

为了找出错误,我又把声明换回第二段代码,令人郁闷的是,又没异常了。

本文只描述现象,不解释原因

转载于:https://www.cnblogs.com/DayDreamEveryWhere/p/3568456.html

CreateFeatureClass COM异常相关推荐

  1. CreateFeatureClass 异常,尝试读取或写入受保护的内存 Access

    在创建要素时出现如下异常,百思不得其解. 后经过多次试验,发现文件名改为其他的就可以了.自出的文件名为"第3条",后将文件名改为"A3"等,则可正常创建. 后再 ...

  2. Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常

    kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized ...

  3. JS Uncaught SyntaxError:Unexpected identifier异常报错原因及其解决方法

    最近在写ajax的时候,调用js方法,遇到了Uncaught SyntaxError:Unexpected identifier异常报错,开始搞不清原因,很苦恼. 以为是js方法参数个数和长度的问题, ...

  4. JVM 常见异常及内存诊断

    栈内存溢出 栈内存大小设置:-Xss size 默认除了window以外的所有操作系统默认情况大小为 1MB,window 的默认大小依赖于虚拟机内存. 栈帧过多导致栈内存溢出 下述示例代码,由于递归 ...

  5. java通过异常处理错误,java基础之通过错误处理异常

    我们在编程过程中,通常需要时刻关注可能遇到的问题,此时可以把问题分为两类:普通问题与异常问题.普通问题:我们可以通过从当前环境中获取到的信息来解决这个问题:而异常问题:在当前环境中获取到的信息并不能解 ...

  6. Ajax接收Java异常_java – 处理来自Servlet的Jquery AJAX响应中的异常

    我的servlet代码是 try{ //something response.setStatus(201); out.print("Data successfully saved" ...

  7. 消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

    消除安卓SDK更新时的"https://dl-ssl.google.com refused"异常的方法 消除安卓SDK更新时的"https://dl-ssl.google ...

  8. java 捕获异常并存入数据库_java异常处理,报异常的话怎么处理对象值,并持久化到数据库中...

    展开全部 //没看到有人回e68a843231313335323631343130323136353331333365646233答你,我还没学到框架,不知道那个是不是可以很便捷操作你说的这样过程 / ...

  9. python异常机制

    python异常处理机制 1.1python的内置异常 当我们在运行代码的时候一旦程序报错,就会终止运行,并且有的异常是不可避免的,但是我们可以对异常进行捕获,防止程序终止. python的内置异常是 ...

最新文章

  1. 《智能数据时代:企业大数据战略与实战》一3.5 步步为营
  2. 算法7-10:拓扑排序
  3. Avalonia跨平台入门第七篇之RadioButton的模板
  4. .NET Core 3.0 新 JSON API - Utf8JsonWriter
  5. MYSQL命令行常用命令
  6. 【个人笔记】OpenCV4 C++ 快速入门 00课
  7. FFT海水模拟(又来了-_-b)
  8. PHP中使用PDO操作MySQL
  9. 职场:如何成为PPT高手【01思维篇】
  10. SparkSQL HiveSQL 常用正则表达式
  11. java打印堆栈信息_Java 打印堆栈的几种方法
  12. JavaScript 基础知识总结(一)
  13. html表格某一行背景颜色设置,HTML表格行背景颜色与浮动属性不一样
  14. 我的世界启动器+账号+密码
  15. 医疗物联网七大应用场景案例解析
  16. 通灵学院|游戏设计研习10:迭代流程★(2000字)
  17. codevs2069 油画 — 动态维护优先队列
  18. CSS 网格 Gird 布局
  19. 什么是DFX测试.md
  20. 各种颜色对应的RGB值

热门文章

  1. [扮演不同的角色 知道不同的成就]2008.06.20 黄桃西米露
  2. 人才认证+奖金,智能分拣挑战赛baseline助力最后冲刺
  3. 比手工模型快10~100倍,谷歌揭秘视频NAS三大法宝
  4. 十年程序员将Python分成7个阶段学习,你会发现Python真的很简单
  5. 综述 | Google团队发布,一文概览Transformer模型的17大高效变种
  6. 22课时、19大主题,CS 231n进阶版课程视频上线!
  7. java软件架构设计方案_Java软件架构设计慨论
  8. sorted函数python_python中排序函数sort,sorted和operator.itemgetter的使用
  9. android.net是哪个jar,【Android Clock Synchronization】Android时钟同步:基于NTP协议的第三方库Apache Commons Net......
  10. 华为mate20pro权限管理_华为钉子户--谈谈Mate20Pro