1 公共 ブール fc2fc(IFeatureClass pInFeatureClass、IWorkspace pOutWorkspace、文字列 pOutDataSName、文字列 poutFatureName、IQueryFilter queryFilter = ヌル) 2 { 3 IDataset pIndataset = NULL ; 4 IDataset pOutDataset = NULL ; 5 試みる 6 { 7 場合(pInFeatureClass == NULL || pOutWorkspace == NULL || 列 .IsNullOrEmpty(poutFatureName))リターン 偽; 8 IFeatureClassName pInFeatureclassName。 9 pIndataset = (IDataset)pInFeatureClass。 10 pInFeatureclassName = (IFeatureClassName)pIndataset.FullName。 11 IFeatureClassName pOutFeatureClassName。 12 IDatasetName pOutDatasetName。 13 pOutDataset = (IDataset)pOutWorkspace。 14 pOutFeatureClassName = 新しいFeatureClassNameClass()。 15 pOutDatasetName = (IDatasetName)pOutFeatureClassName。 16 pOutDatasetName.WorkspaceName = (IWorkspaceName)pOutDataset.FullName。 17 pOutDatasetName.Name = poutFatureName。 18 IFields pInFields、pOutFields。 19 IFieldChecker pFieldChecker = 新しいFieldCheckerClass()。 20 IEnumFieldError PERROR。 21 pInFields =のpInFeatureClass.Fields。 22 列pShapeFieldName = pInFeatureClass.ShapeFieldName。 23 INT pFieldIndex = pInFeatureClass.FindField(pShapeFieldName)。 24 IField内pShapeField = pInFields.get_Field(pFieldIndex)。 25 IGeometryDef pTargetGeometryDef = pShapeField.GeometryDef。 26 であれば(pTargetGeometryDef.HasZ || pTargetGeometryDef.HasM) 27 { 28 IGeometryDefEdit pGeoDefEdit = pTargetGeometryDef としてIGeometryDefEdit。 29 pGeoDefEdit.HasZ_2 = 偽; 30 pGeoDefEdit.HasM_2 = 偽。 31 } 32 pFieldChecker.Validate(pInFields、アウト perrorは、アウトpOutFields)。 33 Console.WriteLineを(PERROR)。 34 IEnumDatasetName pEnumDatasetName =(pOutWorkspace としてIWorkspace).get_DatasetNames(esriDatasetType.esriDTFeatureDataset)。 35 pEnumDatasetName.Reset()。 36 IDatasetName pDatasetName = pEnumDatasetName.Next()。 37 IFeatureDatasetName datasetName = NULL ; 38 一方(pDatasetName!= NULL ) 39 { 40 であれば(pDatasetName.Type ==esriDatasetType.esriDTFeatureDataset) 41 { 42 であれば(pDatasetName.Name == pOutDataSName) 43 { 44 datasetName = pDatasetName としてIFeatureDatasetName。 45 ブレーク; 46 } 47 } 48 } 49 50 51 IFeatureDataConverter one2another = 新しいFeatureDataConverterClass()。 52は 試す 53 { 54 場合を(pOutWorkspace.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace) 55 { 56 one2another.ConvertFeatureClass(pInFeatureclassName、ヌル、datasetName、pOutFeatureClassName、pTargetGeometryDef、 57 pOutFields、"" 、1000年、0 ); 58 } 59 他の 60 { 61 one2another.ConvertFeatureClass(pInFeatureclassName、queryFilter、datasetName、pOutFeatureClassName、pTargetGeometryDef、pOutFields、""、1000年、0 ); 62 } 63 } 64 最後に 65 { 66 であれば(one2another!= NULL ) 67 Marshal.ReleaseComObject(one2another)。 68 } 69 リターン 真。 70 } 71 キャッチ(例外EX) 72 { 73 LogAPI.Debug(EX)。 74 試みる 75 { 76 InsertFeatureToFeature(pInFeatureClass、(pOutWorkspace としてIFeatureWorkspace).OpenFeatureClass(poutFatureName)、queryFilter)。 77 } 78 キャッチ(例外EX2) 79 { 80 LogAPI.Debug(EX2)。 81 } 82 リターン 偽。 83 } 84 最後に 85 { 86 // 場合(pIndataset = NULL!) 87 // Marshal.FinalReleaseComObject(pIndataset)。 88 //(もし!pOutDataset =ヌル) 89 // Marshal.FinalReleaseComObject(pOutDataset)。 90 } 91 }