将图层导入SDE有两种情况,一种是直接导入到SDE的根目录下,一种是SDE中用户建立了要素集(Dataset),然后往某个要素集中导入数据
第一种情况:直接往SDE根目录下导入图层:
其中,lName是源图层的IName,inWorkspace是源图层所在的工作空间,outWorkspace是要导出到的工作空间,这段代码默认将导出后的图层命名为与源图层一样
第二种情况:往SDE中某个要素集导入图层
// Validate the fields.
fieldChecker.Validate(inFeatureClassFields,out enumFieldError,out outFeatureClassFields);
//featureDataset.CreateFeatureClass("SDE." + ((IDatasetName)lName).Name,outFeatureClassFields,ocDesc.InstanceCLSID,ocDesc.ClassExtensionCLSID,esriFeatureType.esriFTSimple,fcDesc.ShapeFieldName,"");
// Set up the geometry definition.
IField geometryField;
geometryField = outFeatureClassFields.get_Field(outFeatureClassFields.FindField(inFeatureClass.ShapeFieldName));
// Get the geometry field's geometry definition.
IGeometryDef geometryDef = geometryField.GeometryDef;
//Set up the IQueryFilter to convert all the features by leaving a blank WhereClause
IQueryFilter qf = new QueryFilterClass();
qf.WhereClause = "";
//Load the feature class
IFeatureDataConverter fctofc = new FeatureDataConverterClass();
IEnumInvalidObject enumErrors = fctofc.ConvertFeatureClass(inFeatureClassName,qf,(IFeatureDatasetName)featureDataset.FullName,outFeatureClassName,geometryDef,outFeatureClassFields,"",1000,0);
return true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return false;
}
}
其中,lName是源图层的IName,inWorkspace是源图层所在的工作空间,featureDataset是目标数据集,这段代码默认将导出后的图层命名为与源图层一样
附:获取SDE中数据集(Dataset)的方法:
其中outSpace为已经打开的SDE工作空间