|
阅读:1246回复:0
SDE转换成SHP格式时如何去除SE_ANNO_CAD_DATA字段?
<P>读取SDE数据转换成SHP格式时,SE_ANNO_CAD_DATA字段为blob类型,如何带有这个字段转换就会出错,请教如何去掉?相关代码如下:</P>
<P> //设置导出要素类的参数<BR> IFeatureClassName pOutFeatureClassName = new FeatureClassNameClass();<BR> IDataset pOutDataset = (IDataset)apFeatureClass;<BR> pOutFeatureClassName = (IFeatureClassName)pOutDataset.FullName;<BR> <BR> //创建一个要素集合<BR> IFeatureDatasetName pInFeatureDatasetName = null;<BR> //创建一个要素类<BR> IFeatureClassName pInFeatureClassName = new FeatureClassNameClass();<BR> IDatasetName pInDatasetClassName;<BR> pInDatasetClassName = (IDatasetName)pInFeatureClassName;<BR> pInDatasetClassName.Name = apFeatureClass.AliasName;//ExportFileShortName 作为输出参数<BR> pInDatasetClassName.WorkspaceName = pInWorkspaceName;</P> <P><BR> ////通过FIELDCHECKER检查字段的合法性,为输出SHP获得字段集合<BR> long iCounter;<BR> IFields pOutFields, pInFields;<BR> IFieldChecker pFieldChecker;<BR> IField pGeoField;<BR> IEnumFieldError pEnumFieldError = null;<BR> pInFields = apFeatureClass.Fields;<BR> pFieldChecker = new FieldChecker();<BR> pFieldChecker.Validate(pInFields, out pEnumFieldError, out pOutFields);<BR> //通过循环查找几何字段<BR> pGeoField = null;<BR> for (iCounter = 0; iCounter < pOutFields.FieldCount; iCounter++)<BR> {<BR> if (pOutFields.get_Field((int)iCounter).Type == esriFieldType.esriFieldTypeGeometry)<BR> {<BR> pGeoField = pOutFields.get_Field((int)iCounter);<BR> break;<BR> }<BR> }<BR> //得到几何字段的几何定义<BR> IGeometryDef pOutGeometryDef;<BR> IGeometryDefEdit pOutGeometryDefEdit;<BR> pOutGeometryDef = pGeoField.GeometryDef;<BR> //设置几何字段的空间参考和网格<BR> pOutGeometryDefEdit = (IGeometryDefEdit)pOutGeometryDef;<BR> pOutGeometryDefEdit.GridCount_2 = 1;<BR> pOutGeometryDefEdit.set_GridSize(0, 1500000);</P> <P><BR> try<BR> {<BR> //开始导入<BR> IFeatureDataConverter pShpToClsConverter = new FeatureDataConverterClass();<BR> pShpToClsConverter.ConvertFeatureClass(pOutFeatureClassName, null, pInFeatureDatasetName, pInFeatureClassName, pOutGeometryDef, pOutFields, "", 1000, 0); <BR> //MessageBox.Show("导出成功", "系统提示");<BR> }<BR> catch (Exception ex)<BR> {<BR> //MessageBox.Show("the following exception occurred:" + ex.ToString());<BR> }</P> |
|