ArcEngine创建内存图层

                //创建内存工作空间
                Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.InMemoryWorkspaceFactory");
                IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);
                IWorkspaceName workspaceName = workspaceFactory.Create("", "MyWorkspace", null, 0);
                IName name = (IName)workspaceName;
                IWorkspace workspace = (IWorkspace)name.Open();
                IFeatureWorkspace pFeatureWorkspace = workspace as IFeatureWorkspace;

                //打开要素数据集,不存在该方法??
                //IFeatureDataset pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset("TOPO");
                //IFeatureDataset pFeatureDataset = pFeatureWorkspace.CreateFeatureDataset("TOPO", baseSR);

                #region 字段
                IFeatureClassDescription pp_fcDescription = new FeatureClassDescriptionClass();
                IObjectClassDescription pp_ocDescription = (IObjectClassDescription)pp_fcDescription;
                IFields pp_fields = pp_ocDescription.RequiredFields;
                IFieldsEdit pp_fieldsEdit = (IFieldsEdit)pp_fields;

                int pp_shapeFieldIndex = pp_fields.FindField(pp_fcDescription.ShapeFieldName);
                IField pp_field = pp_fields.get_Field(pp_shapeFieldIndex);
                IGeometryDef pp_geometryDef = pp_field.GeometryDef;
                IGeometryDefEdit pp_geometryDefEdit = (IGeometryDefEdit)pp_geometryDef;
                pp_geometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolygon;
                pp_geometryDefEdit.SpatialReference_2 = baseSR;
                #endregion

                IFeatureClass pFeatureClass = pFeatureWorkspace.CreateFeatureClass("MemoryFeatureClass", pp_fields, pp_ocDescription.InstanceCLSID, pp_ocDescription.ClassExtensionCLSID, esriFeatureType.esriFTSimple, pp_fcDescription.ShapeFieldName, "");
                //IFeatureClass pFeatureClass = pFeatureDataset.CreateFeatureClass("MemoryFeatureClass", pp_fields, pp_ocDescription.InstanceCLSID, pp_ocDescription.ClassExtensionCLSID, esriFeatureType.esriFTSimple, pp_fcDescription.ShapeFieldName, "");
                IFeatureCursor pFeatCursor = pFeatureClass.Insert(true);

                IFeatureClass pInFeatureClass = DataSourceOpr.GetAFeatureClassFromDB(@"TEST.gdb", "RESA");
                IFeatureCursor pInFeatCursor = pInFeatureClass.Search(null, false);
                IFeature pInFeature = pInFeatCursor.NextFeature();
                while (pInFeature != null)
                {
                    IFeatureBuffer pFeatBuf = pFeatureClass.CreateFeatureBuffer();
                    //pFeatBuf.set_Value(pFeatBuf.Fields.FindField("类型"), (object)"小斑");
                    pFeatBuf.Shape = pInFeature.Shape;
                    pFeatCursor.InsertFeature(pFeatBuf);
                    pFeatCursor.Flush();
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatBuf);

                    pInFeature = pInFeatCursor.NextFeature();
                }

                System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatCursor);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(pInFeature);/
                System.Runtime.InteropServices.Marshal.ReleaseComObject(pInFeatCursor);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(pInFeatureClass);
                MessageBox.Show("检查完毕,结束时间:" + DateTime.Now.ToString("yyyyMMddHHmmss"));

                allErrorInfoList.Clear();

                string timeID = DateTime.Now.ToString("yyyyMMddHHmmss");
                string tarDB = Application.StartupPath + "\\Temp\\" + timeID + ".gdb";
                string srcDB = TEMPDB;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值