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);
}
}
}
转载自:https://blog.csdn.net/giser_whu/article/details/23844791