创建要素的两种方法(多要素)
来源:互联网 发布:淘宝的降价通知 编辑:程序博客网 时间:2024/06/04 10:10
在创建要素并保存为.shp文件的时候,一般采用的是FeatureClass的createFeature方法,具体代码如下:
public static void CreateFeature(IFeatureClass featureClass, IPolyline polyline){ // 创建feature IFeature feature = featureClass.CreateFeature();
//设置shape feature.Shape = polyline; // 对属性字段赋值 int contractorFieldIndex = featureClass.FindField("字段名"); feature.set_Value(contractorFieldIndex, "字段值"); // 重要一步,保存 feature.Store();}
但是在实际开发当中,遇到一次要处理很多条数据,用上述方法循环保存速度及其慢,而且会莫名其妙的出错(没找到原因,可能是内存占用过多吧),查了官方API,发现有提供专门用于创建多条要素的方法,具体代码如下:
public static void InsertFeaturesUsingCursor(IFeatureClass featureClass, List < IGeometry > geometryList){//using中声明的对象,在using语句块结束后会自动释放。C#有垃圾处理,但不可控。comReleaser对象用于 using(ComReleaser comReleaser = new ComReleaser()) { // 创建feature buffer. IFeatureBuffer featureBuffer = featureClass.CreateFeatureBuffer(); comReleaser.ManageLifetime(featureBuffer); // 创建 insert cursor. IFeatureCursor insertCursor = featureClass.Insert(true); comReleaser.ManageLifetime(insertCursor); // 字段赋值 int typeFieldIndex = featureClass.FindField("字段名"); featureBuffer.set_Value(typeFieldIndex, "字段值"); foreach (IGeometry geometry in geometryList) { // 设置shape featureBuffer.Shape = geometry;//使用cursor插入到featureBuffer insertCursor.InsertFeature(featureBuffer); } // 清空insertCursor insertCursor.Flush(); }}用下面的方法创建要素,速度提升不少。但是出现了新的问题,当list中只有一个Geometry时,有时候会出错,还没弄清楚原因。权益之计暂时是根据要素数量采用不同的方法,看后期能不能发现问题所在。详情请参考官方文档:http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/Creating_features/00010000049v000000/
0 0
- 创建要素的两种方法(多要素)
- ArcEngine多要素合并的方法
- 根据要素创建要素类
- arcengine创建要素类、图层的方法
- 要素类的复制方法
- 在要素图层上点选要素的快速方法
- 优秀程序员的两大要素
- 创建数据字典的几个要素
- AE控制图层中要素可见状态的几种方法
- AE控制图层中要素可见状态的几种方法
- AE控制图层中要素可见状态的几种方法
- ArcGIS Engine中删除要素的几种方法总结
- 用例创建要素
- 创建要素类
- 创建注记图层要素
- arcgis之创建要素
- ArcEngine创建要素
- 创建要素FeatureClass
- opencv多通道数据和多维数据的区别
- c语言函数指针的理解与使用
- js如何查看元素类型
- 漫谈网络编程中的容错处理
- Girls' research(已完善的Manacher算法模板:输出最长回文子串)
- 创建要素的两种方法(多要素)
- java TCP/UDP编程
- 深度学习(卷积神经网络)一些问题总结
- C++ 内存对齐
- 安装ssh
- 任意两点之间的最短路径问题(Floyd-Warshall算法)
- 按照特定轨迹遍历字符串图
- Android添加第三方so到APK中
- 常用的命令、小技巧