zoukankan      html  css  js  c++  java
  • shp导入SDE以及遇到的问题

    在将shp文件导入SDE的时候一直报错,说没有权限修改此模块。通过google搜索,发现是权限的问题,通过设置licensecontrol的属性解决了这个问题:

    勾选 ArcGIS Engine Enterprise GeoDatabase即可,同时在初始化里加入以下代码就可以实现向SDE导入数据

    IAoInitialize initAO = new AoInitializeClass();
                initAO.Initialize((esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB));
    目前导出只实现了单个要素类的导入,即右键单击选中导出要素类功能,下一步实现多要素和栅格数据的导入。单个要素类导入代码:

     public void FeatureClassToFeatureClass (IFeatureClass pInputFeatureClass,IWorkspace pOutWorkspace)
            {
                 if(pInputFeatureClass == null || pOutWorkspace == null)
                 {
                     return;
                 } 
                 else
                 {
                     //输入要素类参数设置
                     IFeatureClassName pInputFeatureclassName = new FeatureClassNameClass();
                     IDataset pInputDataSet = pInputFeatureClass as IDataset;
                     pInputFeatureclassName = pInputDataSet.FullName as IFeatureClassName;
    
                     //设置输出要素类参数
                     string featureclassName = pInputFeatureClass.AliasName.Trim().Substring(pInputFeatureClass.AliasName.Trim().IndexOf(".") + 1);
                     IDataset pOutDataset = pOutWorkspace as IDataset;
                     
                     IFeatureClassName pOutFeatureClassName = new FeatureClassNameClass();
                     IDatasetName pOutDatasetName = pOutFeatureClassName as IDatasetName;
                     pOutDatasetName.WorkspaceName = pOutDataset.FullName as IWorkspaceName;
                     pOutDatasetName.Name = featureclassName;
    
                     //删除重名的要素类
                     IWorkspace2 pOutWorkspace2 = (IWorkspace2)pOutWorkspace;
                     if(pOutWorkspace2.get_NameExists(esriDatasetType.esriDTFeatureClass,featureclassName))
                     {
                         IFeatureWorkspace pFWS = pOutWorkspace as IFeatureWorkspace;
                         IFeatureClass pFeatureClass = pFWS.OpenFeatureClass(featureclassName);
                         IDataset pDataset = pFeatureClass as IDataset;
                         pDataset.Delete();
    
                     }
             
                     //通过fieldCheck检查字段的合法性,为输出SHP获得字段集合 
                     IFields pInputFields=new FieldsClass();
                     IFields pOutFields=new FieldsClass(); 
                     IFieldChecker pFieldChecker = new FieldCheckerClass();
                     IEnumFieldError pError;
                     pInputFields = pInputFeatureClass.Fields;
    
                     pFieldChecker.Validate(pInputFields,out pError,out pOutFields);
    
                     //获取几何字段
                     IField geoField = new FieldClass();
                     for(int i = 0;i < pOutFields.FieldCount;i++)
                     {
                         IField pField = pOutFields.get_Field(i);
                         if(pField.Type == esriFieldType.esriFieldTypeOID)
                         {
                             IFieldEdit pFieldEdit = pField as IFieldEdit;
                             pFieldEdit.Name_2 = pField.AliasName;
                         }
                         if(pField.Type == esriFieldType.esriFieldTypeGeometry)
                         {
                             geoField = pField;
                             break;
                         }
                     }
                     IGeometryDef geometryDef = geoField.GeometryDef;
    
                     IFeatureDataConverter featureDataConverter = new FeatureDataConverterClass();
                     if(pOutWorkspace.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace)
                     {
                         featureDataConverter.ConvertFeatureClass(pInputFeatureclassName,null,null,pOutFeatureClassName,geometryDef,
                         pOutFields,"",1000,0);
                     }
                     else
                     {
                         IFeatureDatasetName pOutFeatDSName = new FeatureDatasetNameClass();
                         IDatasetName pDSname = pOutFeatDSName as IDatasetName;
                         pDSname.WorkspaceName = pOutDataset.FullName as IWorkspaceName;
                         pDSname.Name = pInputFeatureClass.FeatureDataset.Name;
                         featureDataConverter.ConvertFeatureClass(pInputFeatureclassName,null,pOutFeatDSName,pOutFeatureClassName,geometryDef,
                         pOutFields,"",1000,0);
                     }
                 }
            }

  • 相关阅读:
    一LWIP学习笔记之数据包管理
    智能家居的发展趋势
    break和continue的区别
    TCP与UDP区别总结
    C语言变量和函数命名规范
    常用电子元件
    php 1018
    php 1016
    mysql 应用查询 三个表(学生表,课程表,学生课程分数表) student, course, score表
    mysql 聚合函数
  • 原文地址:https://www.cnblogs.com/giser-whu/p/3707049.html
Copyright © 2011-2022 走看看