private IFeatureClass method_2(IFeatureWorkspaceAnno ifeatureWorkspaceAnno_0, IFeatureDataset ifeatureDataset_0, IFeatureClass ifeatureClass_0, double double_1, esriUnits esriUnits_0, IAnnotateLayerPropertiesCollection iannotateLayerPropertiesCollection_0, ISymbolCollection isymbolCollection_0, string string_0) { IObjectClassDescription description = new AnnotationFeatureClassDescriptionClass(); IFields requiredFields = description.RequiredFields; int index = requiredFields.FindField((description as IFeatureClassDescription).ShapeFieldName); if (index != -1) { IField field = requiredFields.get_Field(index); IGeometryDef geometryDef = field.GeometryDef; ISpatialReference spatialReference = geometryDef.SpatialReference; SpatialReferenctOperator.ChangeCoordinateSystem(ifeatureWorkspaceAnno_0 as IGeodatabaseRelease, spatialReference, false); (geometryDef as IGeometryDefEdit).SpatialReference_2 = spatialReference; (field as IFieldEdit).GeometryDef_2 = geometryDef; } IFeatureClassDescription description2 = description as IFeatureClassDescription; IGraphicsLayerScale referenceScale = new GraphicsLayerScaleClass { ReferenceScale = double_1, Units = esriUnits_0 }; UID instanceCLSID = description.InstanceCLSID; UID classExtensionCLSID = description.ClassExtensionCLSID; return(ifeatureWorkspaceAnno_0.CreateAnnotationClass(string_0, requiredFields, instanceCLSID, classExtensionCLSID, description2.ShapeFieldName, "", ifeatureDataset_0, ifeatureClass_0, iannotateLayerPropertiesCollection_0, referenceScale, isymbolCollection_0, true)); }
private void method_1(int int_0, IFieldsEdit ifieldsEdit_2) { IFieldEdit field = new FieldClass(); field.Name_2 = "OBJECTID"; field.AliasName_2 = "OBJECTID"; field.IsNullable_2 = false; field.Type_2 = esriFieldType.esriFieldTypeOID; ifieldsEdit_2.AddField(field); if (int_0 == 1) { field = new FieldClass(); field.Name_2 = "SHAPE"; field.AliasName_2 = "SHAPE"; field.IsNullable_2 = true; field.Type_2 = esriFieldType.esriFieldTypeGeometry; IGeometryDefEdit edit2 = new GeometryDefClass(); edit2.SpatialReference_2 = SpatialReferenctOperator.ConstructCoordinateSystem(this.iworkspace_0 as IGeodatabaseRelease); edit2.GridCount_2 = 1; edit2.set_GridSize(0, 1000.0); edit2.GeometryType_2 = esriGeometryType.esriGeometryPolygon; edit2.HasZ_2 = false; edit2.HasM_2 = false; field.GeometryDef_2 = edit2; ifieldsEdit_2.AddField(field); } }
public static void ExtractSelectFeatureFormLayer(IFeatureLayer ifeatureLayer_0, IFeatureWorkspace ifeatureWorkspace_0, IGeometry igeometry_0) { IEnumFieldError enumFieldError; IFields field; string str; ICursor cursor; try { IFeatureSelection ifeatureLayer0 = (IFeatureSelection)ifeatureLayer_0; if (ifeatureLayer0.SelectionSet.Count != 0) { IFeatureClass featureClass = ifeatureLayer_0.FeatureClass; IFields fields = featureClass.Fields; IFieldChecker fieldCheckerClass = new FieldChecker() { InputWorkspace = (featureClass as IDataset).Workspace, ValidateWorkspace = ifeatureWorkspace_0 as IWorkspace }; fieldCheckerClass.Validate(fields, out enumFieldError, out field); enumFieldError.Reset(); IFieldError fieldError = enumFieldError.Next(); string str1 = ""; while (fieldError != null) { fieldError.FieldError.ToString(); IField field1 = fields.Field[fieldError.FieldIndex]; IField field2 = field.Field[fieldError.FieldIndex]; string str2 = str1; string[] name = new string[] { str2, field2.Name, " reason: ", field1.Name, " " }; str1 = string.Concat(name); fieldError = enumFieldError.Next(); } Hashtable hashtables = new Hashtable(); string name1 = ifeatureLayer_0.Name; char chr = name1[0]; if ((chr < '0' ? false : chr <= '9')) { name1 = string.Concat("A", name1); } fieldCheckerClass.ValidateTableName(name1, out str); name1 = str; string name2 = ""; IFieldsEdit fieldsClass = new Fields() as IFieldsEdit; for (int i = field.FieldCount - 1; i >= 0; i--) { IField field3 = field.Field[i]; if (field3.Type == esriFieldType.esriFieldTypeGeometry) { name2 = field3.Name; IGeometryDef geometryDef = field3.GeometryDef; ISpatialReference spatialReference = (geometryDef.SpatialReference as IClone).Clone() as ISpatialReference; SpatialReferenctOperator.ChangeCoordinateSystem(ifeatureWorkspace_0 as IGeodatabaseRelease, spatialReference, false); (geometryDef as IGeometryDefEdit).SpatialReference_2 = spatialReference; (field3 as IFieldEdit).GeometryDef_2 = geometryDef; } if ((ifeatureWorkspace_0 as IWorkspace).Type != esriWorkspaceType.esriFileSystemWorkspace) { fieldsClass.AddField(field3); } else if (field3.Type != esriFieldType.esriFieldTypeBlob) { fieldsClass.AddField(field3); } } IFeatureClass featureClass1 = null; try { featureClass1 = ifeatureWorkspace_0.CreateFeatureClass(name1, fieldsClass, null, null, esriFeatureType.esriFTSimple, name2, ""); } catch (Exception exception) { MessageBox.Show("无法创建输出要素类!"); return; } IFeatureCursor featureCursor = null; IFeatureCursor featureCursor1 = featureClass1.Insert(true); IFeatureBuffer featureBuffer = featureClass1.CreateFeatureBuffer(); ifeatureLayer0.SelectionSet.Search(null, false, out cursor); featureCursor = (IFeatureCursor)cursor; for (IFeature j = featureCursor.NextFeature(); j != null; j = featureCursor.NextFeature()) { if (j.Shape != null) { Clip.InsertFeature(featureCursor1, featureBuffer, field, j, j.Shape, igeometry_0); } } featureCursor1.Flush(); Marshal.ReleaseComObject(featureBuffer); featureBuffer = null; Marshal.ReleaseComObject(featureCursor1); featureCursor1 = null; } } catch { } }
public static void ExtractSelectFeatureFormFeatureCursor(string string_0, IFeatureCursor ifeatureCursor_0, IFeatureWorkspace ifeatureWorkspace_0, IGeometry igeometry_0) { IEnumFieldError enumFieldError; IFields field; string str; string string0; int num; if (ifeatureCursor_0 != null) { IFields fields = ifeatureCursor_0.Fields; IFieldChecker fieldCheckerClass = new FieldChecker() { ValidateWorkspace = ifeatureWorkspace_0 as IWorkspace }; fieldCheckerClass.Validate(fields, out enumFieldError, out field); char chr = string_0[0]; if ((chr < '0' ? false : chr <= '9')) { string_0 = string.Concat("A", string_0); } fieldCheckerClass.ValidateTableName(string_0, out str); string name = ""; int num1 = 0; while (true) { if (num1 < field.FieldCount) { IField field1 = field.Field[num1]; if (field1.Type == esriFieldType.esriFieldTypeGeometry) { name = field1.Name; IGeometryDef geometryDef = field1.GeometryDef; ISpatialReference spatialReference = geometryDef.SpatialReference; SpatialReferenctOperator.ChangeCoordinateSystem(ifeatureWorkspace_0 as IGeodatabaseRelease, spatialReference, false); (geometryDef as IGeometryDefEdit).SpatialReference_2 = spatialReference; (field1 as IFieldEdit).GeometryDef_2 = geometryDef; break; } else { num1++; } } else { break; } } string_0 = str; if (((ifeatureWorkspace_0 as IWorkspace).Type == esriWorkspaceType.esriLocalDatabaseWorkspace ? false : (ifeatureWorkspace_0 as IWorkspace).Type != esriWorkspaceType.esriRemoteDatabaseWorkspace)) { string str1 = string.Concat((ifeatureWorkspace_0 as IWorkspace).PathName, "\\", string_0); string0 = string.Concat(str1, ".shp"); num = 1; while (File.Exists(string0)) { string0 = string.Concat(str1, "_", num.ToString(), ".shp"); num++; } string_0 = System.IO.Path.GetFileNameWithoutExtension(string0); } else { IWorkspace2 ifeatureWorkspace0 = ifeatureWorkspace_0 as IWorkspace2; string0 = string_0; num = 1; while (ifeatureWorkspace0.NameExists[esriDatasetType.esriDTFeatureClass, string0]) { string0 = string.Concat(string_0, "_", num.ToString()); num++; } string_0 = string0; } try { IFeatureClass featureClass = ifeatureWorkspace_0.CreateFeatureClass(string_0, field, null, null, esriFeatureType.esriFTSimple, name, ""); IFeature feature = ifeatureCursor_0.NextFeature(); IFeatureCursor featureCursor = featureClass.Insert(true); IFeatureBuffer featureBuffer = featureClass.CreateFeatureBuffer(); while (feature != null) { if (feature.Shape != null) { Clip.InsertFeature(featureCursor, featureBuffer, field, feature, feature.Shape, igeometry_0); } feature = ifeatureCursor_0.NextFeature(); } featureCursor.Flush(); Marshal.ReleaseComObject(featureClass); featureClass = null; Marshal.ReleaseComObject(featureBuffer); featureBuffer = null; Marshal.ReleaseComObject(featureCursor); featureCursor = null; } catch { } Marshal.ReleaseComObject(ifeatureCursor_0); ifeatureCursor_0 = null; } }
public static void ExtractSelectFeatureFormFeatureCursor(ILayer ilayer_0, IFeatureCursor ifeatureCursor_0, IFeatureWorkspace ifeatureWorkspace_0, IGeometry igeometry_0, IMap imap_0) { IEnumFieldError enumFieldError; IFields field; string str; string name = ilayer_0.Name; if (ifeatureCursor_0 != null) { IFields fields = ifeatureCursor_0.Fields; IFieldChecker fieldCheckerClass = new FieldChecker() { ValidateWorkspace = ifeatureWorkspace_0 as IWorkspace }; fieldCheckerClass.Validate(fields, out enumFieldError, out field); char chr = name[0]; if ((chr < '0' ? false : chr <= '9')) { name = string.Concat("A", name); } fieldCheckerClass.ValidateTableName(name, out str); string name1 = ""; int num = 0; while (true) { if (num < field.FieldCount) { IField field1 = field.Field[num]; if (field1.Type == esriFieldType.esriFieldTypeGeometry) { name1 = field1.Name; IGeometryDef geometryDef = field1.GeometryDef; ISpatialReference spatialReference = geometryDef.SpatialReference; SpatialReferenctOperator.ChangeCoordinateSystem(ifeatureWorkspace_0 as IGeodatabaseRelease, spatialReference, false); (geometryDef as IGeometryDefEdit).SpatialReference_2 = spatialReference; (field1 as IFieldEdit).GeometryDef_2 = geometryDef; break; } else { num++; } } else { break; } } name = str; IFeatureClass featureClass = ifeatureWorkspace_0.CreateFeatureClass(name, field, null, null, esriFeatureType.esriFTSimple, name1, ""); IFeature feature = ifeatureCursor_0.NextFeature(); if (feature != null) { IFeatureCursor featureCursor = featureClass.Insert(true); IFeatureBuffer featureBuffer = featureClass.CreateFeatureBuffer(); while (feature != null) { if (feature.Shape != null) { try { Clip.InsertFeature(featureCursor, featureBuffer, field, feature, feature.Shape, igeometry_0); } catch (Exception exception) { Logger.Current.Error("", exception, ""); } } feature = ifeatureCursor_0.NextFeature(); } featureCursor.Flush(); IFeatureLayer featureLayerClass = new FeatureLayer(); (featureLayerClass as IGeoFeatureLayer).Renderer = (ilayer_0 as IGeoFeatureLayer).Renderer; featureLayerClass.Name = (featureClass as IDataset).Name; featureLayerClass.FeatureClass = featureClass; imap_0.AddLayer(featureLayerClass); featureBuffer = null; featureCursor = null; } } }
private IFeatureClass method_1(string string_0, int int_0, IntPtr intptr_0, IFeatureWorkspace ifeatureWorkspace_0, out bool bool_0) { IEnumFieldError enumFieldError; IFields field; IFeatureClass featureClass; bool_0 = false; try { IFeatureClass featureClass1 = null; string fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(string_0); IFeatureClassDescription featureClassDescriptionClass = new FeatureClassDescription() as IFeatureClassDescription; string shapeFieldName = featureClassDescriptionClass.ShapeFieldName; IFields requiredFields = (featureClassDescriptionClass as IObjectClassDescription).RequiredFields; this.AddTabField(requiredFields as IFieldsEdit, intptr_0); this.AddTabField(int_0, requiredFields as IFieldsEdit); IFields field1 = requiredFields; IFieldChecker fieldCheckerClass = new FieldChecker() { ValidateWorkspace = ifeatureWorkspace_0 as IWorkspace }; fieldCheckerClass.Validate(field1, out enumFieldError, out field); IFieldEdit fieldEdit = field.Field[field.FindField(shapeFieldName)] as IFieldEdit; IGeometryDefEdit geometryDef = fieldEdit.GeometryDef as IGeometryDefEdit; if (this.ispatialReference_0 == null) { string str = TabRead._mitab_c_get_coordsys_xml(intptr_0); if (str == null) { this.ispatialReference_0 = geometryDef.SpatialReference; } else if (str.Length <= 0) { this.ispatialReference_0 = geometryDef.SpatialReference; } else { string str1 = string.Concat(System.IO.Path.GetTempPath(), "\\temp.prj"); StreamWriter streamWriter = new StreamWriter(str1); try { streamWriter.Write(str); } finally { if (streamWriter != null) { ((IDisposable)streamWriter).Dispose(); } } try { this.ispatialReference_0 = (new SpatialReferenceEnvironment()).CreateESRISpatialReferenceFromPRJFile(str1); } catch { this.ispatialReference_0 = geometryDef.SpatialReference; } try { File.Delete(str1); } catch { } } double num = 0; double num1 = 0; double num2 = 0; double num3 = 0; TabRead._mitab_c_get_mif_bounds(intptr_0, ref num, ref num1, ref num2, ref num3); SpatialReferenctOperator.ChangeCoordinateSystem(ifeatureWorkspace_0 as IGeodatabaseRelease, this.ispatialReference_0, false); num = num - 10; num1 = num1 + 10; num2 = num2 - 10; num3 = num3 + 10; this.ispatialReference_0.SetDomain(num, num1, num2, num3); } geometryDef.SpatialReference_2 = this.ispatialReference_0; TabRead._mitab_c_get_feature_count_bytype(intptr_0, int_0); switch (int_0) { case 1: case 2: case 3: { fileNameWithoutExtension = string.Concat(fileNameWithoutExtension, "_Point"); fileNameWithoutExtension = this.method_0(ifeatureWorkspace_0 as IWorkspace, fileNameWithoutExtension); geometryDef.GeometryType_2 = esriGeometryType.esriGeometryPoint; fieldEdit.GeometryDef_2 = geometryDef; featureClass1 = ifeatureWorkspace_0.CreateFeatureClass(fileNameWithoutExtension, field, null, null, esriFeatureType.esriFTSimple, shapeFieldName, ""); break; } case 4: { fileNameWithoutExtension = string.Concat(fileNameWithoutExtension, "_Anno_Point"); fileNameWithoutExtension = this.method_0(ifeatureWorkspace_0 as IWorkspace, fileNameWithoutExtension); geometryDef.GeometryType_2 = esriGeometryType.esriGeometryPoint; fieldEdit.GeometryDef_2 = geometryDef; featureClass1 = ifeatureWorkspace_0.CreateFeatureClass(fileNameWithoutExtension, field, null, null, esriFeatureType.esriFTSimple, shapeFieldName, ""); break; } case 5: case 6: { fileNameWithoutExtension = string.Concat(fileNameWithoutExtension, "_Line"); fileNameWithoutExtension = this.method_0(ifeatureWorkspace_0 as IWorkspace, fileNameWithoutExtension); geometryDef.GeometryType_2 = esriGeometryType.esriGeometryPolyline; fieldEdit.GeometryDef_2 = geometryDef; featureClass1 = ifeatureWorkspace_0.CreateFeatureClass(fileNameWithoutExtension, field, null, null, esriFeatureType.esriFTSimple, shapeFieldName, ""); break; } case 7: { fileNameWithoutExtension = string.Concat(fileNameWithoutExtension, "_Polygon"); fileNameWithoutExtension = this.method_0(ifeatureWorkspace_0 as IWorkspace, fileNameWithoutExtension); geometryDef.GeometryType_2 = esriGeometryType.esriGeometryPolygon; fieldEdit.GeometryDef_2 = geometryDef; featureClass1 = ifeatureWorkspace_0.CreateFeatureClass(fileNameWithoutExtension, field, null, null, esriFeatureType.esriFTSimple, shapeFieldName, ""); break; } case 8: case 9: { featureClass = null; return(featureClass); } case 10: { fileNameWithoutExtension = string.Concat(fileNameWithoutExtension, "_MultiPoint"); fileNameWithoutExtension = this.method_0(ifeatureWorkspace_0 as IWorkspace, fileNameWithoutExtension); geometryDef.GeometryType_2 = esriGeometryType.esriGeometryMultipoint; fieldEdit.GeometryDef_2 = geometryDef; featureClass1 = ifeatureWorkspace_0.CreateFeatureClass(fileNameWithoutExtension, field, null, null, esriFeatureType.esriFTSimple, shapeFieldName, ""); break; } default: { featureClass = null; return(featureClass); } } featureClass = featureClass1; return(featureClass); } catch (Exception exception) { Logger.Current.Error("", exception, ""); bool_0 = true; } featureClass = null; return(featureClass); }
public void LoadData(IList ilist_0) { IEnumDataset subsets; IDataset j; string str; IFeatureClass dataset; IFeatureLayer cadFeatureLayerClass; ITopologyLayer topologyLayerClass; IEnumFeatureClass classes; IFeatureClass m; IFeatureClass n; IFeatureLayer featureLayerClass; List <object> objs = new List <object>(); foreach (object ilist0 in ilist_0) { if (ilist0 is IGxDataset) { if ((ilist0 as IGxDataset).Type != esriDatasetType.esriDTFeatureDataset) { objs.Add(ilist0); } else { IEnumGxObject children = (ilist0 as IGxObjectContainer).Children; children.Reset(); for (IGxObject i = children.Next(); i != null; i = children.Next()) { objs.Add(i); } } } else if (!(ilist0 is IDataset)) { objs.Add(ilist0); } else { if ((ilist0 as IDataset).Type != esriDatasetType.esriDTFeatureDataset) { continue; } subsets = (ilist0 as IDataset).Subsets; subsets.Reset(); for (j = subsets.Next(); j != null; j = subsets.Next()) { objs.Add(j); } } } ProcessAssist processAssist = new ProcessAssist(); processAssist.InitProgress(); processAssist.SetMaxValue(objs.Count); processAssist.SetMessage("正在加载数据,请稍候..."); processAssist.Start(); try { ILayer layer = null; IMap map = this.GetMap(); this.list_0 = new List <ILayer>(); List <string> strs = new List <string>(); IEnvelope envelope = null; IDataset item = null; IGxDataset gxDataset = null; for (int k = 0; k < objs.Count; k++) { string name = ""; if (objs[k] is IGxObject) { name = (objs[k] as IGxObject).Name; } else if (objs[k] is IDataset) { name = (objs[k] as IDataset).Name; } bool flag = true; str = string.Format("加载图层[{0}],第{1}/{2}个", name, k + 1, objs.Count); processAssist.Increment(1); processAssist.SetMessage(str); if (objs[k] is IGxLayer) { layer = (objs[k] as IGxLayer).Layer; if (layer is IGeoDataset && !SpatialReferenctOperator.ValideFeatureClass(layer as IGeoDataset)) { strs.Add(layer.Name); flag = false; } this.AddLayer(map, layer, ref envelope, flag); } else if (!(objs[k] is IGxAGSObject)) { if (objs[k] is IGxDataset) { gxDataset = objs[k] as IGxDataset; item = gxDataset.Dataset; } else if (ilist_0[k] is IDataset) { item = objs[k] as IDataset; } if (item != null) { if (item is IGeoDataset) { flag = SpatialReferenctOperator.ValideFeatureClass(item as IGeoDataset); } if (item.Type == esriDatasetType.esriDTFeatureClass) { dataset = (IFeatureClass)item; if ((gxDataset as IGxObject).Category.IndexOf("CAD") != -1) { if (dataset.FeatureType != esriFeatureType.esriFTCoverageAnnotation) { cadFeatureLayerClass = new CadFeatureLayerClass(); } else { cadFeatureLayerClass = new CadAnnotationLayerClass(); } cadFeatureLayerClass.FeatureClass = dataset; cadFeatureLayerClass.Name = dataset.AliasName; } else if (dataset.FeatureType == esriFeatureType.esriFTAnnotation) { cadFeatureLayerClass = new FDOGraphicsLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; } else if (dataset.FeatureType != esriFeatureType.esriFTDimension) { cadFeatureLayerClass = new FeatureLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; } else { cadFeatureLayerClass = new DimensionLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; } if (!flag) { strs.Add(cadFeatureLayerClass.Name); } this.AddLayer(map, cadFeatureLayerClass, ref envelope, flag); } else if (item.Type == esriDatasetType.esriDTCadDrawing) { if ((gxDataset as IGxObject).Category != "CAD绘图") { IEnumGxObject enumGxObject = (gxDataset as IGxObjectContainer).Children; enumGxObject.Reset(); for (IGxDataset l = enumGxObject.Next() as IGxDataset; l != null; l = enumGxObject.Next() as IGxDataset) { dataset = l.Dataset as IFeatureClass; if (dataset != null) { if (dataset.FeatureType != esriFeatureType.esriFTAnnotation) { cadFeatureLayerClass = new CadFeatureLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; } else { cadFeatureLayerClass = new FDOGraphicsLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; } flag = true; if (cadFeatureLayerClass is IGeoDataset) { bool flag1 = SpatialReferenctOperator.ValideFeatureClass(cadFeatureLayerClass as IGeoDataset); flag = flag1; if (!flag1) { strs.Add(cadFeatureLayerClass.Name); } } this.AddLayer(map, cadFeatureLayerClass, ref envelope, flag); } } } else { ICadLayer cadLayerClass = new CadLayerClass() { CadDrawingDataset = gxDataset.Dataset as ICadDrawingDataset, Name = gxDataset.Dataset.Name }; if (!flag) { strs.Add(cadLayerClass.Name); } this.AddLayer(map, cadLayerClass, ref envelope, flag); } } else if (item.Type == esriDatasetType.esriDTFeatureDataset) { subsets = item.Subsets; subsets.Reset(); for (j = subsets.Next(); j != null; j = subsets.Next()) { if (j.Type == esriDatasetType.esriDTFeatureClass) { dataset = j as IFeatureClass; if (dataset.FeatureType != esriFeatureType.esriFTAnnotation) { cadFeatureLayerClass = new FeatureLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; flag = true; if (cadFeatureLayerClass is IGeoDataset) { bool flag2 = SpatialReferenctOperator.ValideFeatureClass(cadFeatureLayerClass as IGeoDataset); flag = flag2; if (!flag2) { strs.Add(cadFeatureLayerClass.Name); } } this.AddLayer(map, cadFeatureLayerClass, ref envelope, flag); } else { cadFeatureLayerClass = new FDOGraphicsLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; flag = true; if (cadFeatureLayerClass is IGeoDataset) { bool flag3 = SpatialReferenctOperator.ValideFeatureClass(cadFeatureLayerClass as IGeoDataset); flag = flag3; if (!flag3) { strs.Add(cadFeatureLayerClass.Name); } } this.AddLayer(map, cadFeatureLayerClass, ref envelope, flag); } } else if (j.Type == esriDatasetType.esriDTTopology) { topologyLayerClass = new TopologyLayerClass() { Topology = j as ITopology }; (topologyLayerClass as ILayer).Name = j.Name; this.AddLayer(map, topologyLayerClass as ILayer, ref envelope, true); } } } else if (item.Type == esriDatasetType.esriDTTopology) { if (MessageBox.Show(string.Concat("是否将参加拓扑-", item.Name, "-的所有要素添加到地图中"), "添加拓扑层", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk) == DialogResult.Yes) { classes = (item as IFeatureClassContainer).Classes; classes.Reset(); for (m = classes.Next(); m != null; m = classes.Next()) { cadFeatureLayerClass = new FeatureLayerClass() { FeatureClass = m, Name = m.AliasName }; flag = true; if (cadFeatureLayerClass is IGeoDataset) { bool flag4 = SpatialReferenctOperator.ValideFeatureClass(cadFeatureLayerClass as IGeoDataset); flag = flag4; if (!flag4) { strs.Add(cadFeatureLayerClass.Name); } } this.AddLayer(map, cadFeatureLayerClass, ref envelope, flag); } } topologyLayerClass = new TopologyLayerClass() { Topology = item as ITopology }; (topologyLayerClass as ILayer).Name = item.Name; this.AddLayer(map, topologyLayerClass as ILayer, ref envelope, true); } else if (item.Type == esriDatasetType.esriDTTin) { ITinLayer tinLayerClass = new TinLayerClass() { Dataset = (ITin)item, Name = item.Name }; flag = true; if (tinLayerClass is IGeoDataset) { bool flag5 = SpatialReferenctOperator.ValideFeatureClass(tinLayerClass as IGeoDataset); flag = flag5; if (!flag5) { strs.Add(tinLayerClass.Name); } } this.AddLayer(map, tinLayerClass, ref envelope, flag); } else if (item.Type == esriDatasetType.esriDTRasterCatalog) { IGdbRasterCatalogLayer gdbRasterCatalogLayerClass = null; gdbRasterCatalogLayerClass = new GdbRasterCatalogLayerClass(); if (gdbRasterCatalogLayerClass.Setup((ITable)(item as IRasterCatalog))) { bool flag6 = SpatialReferenctOperator.ValideFeatureClass(gdbRasterCatalogLayerClass as IGeoDataset); flag = flag6; if (!flag6) { strs.Add((gdbRasterCatalogLayerClass as ILayer).Name); } this.AddLayer(map, gdbRasterCatalogLayerClass as ILayer, ref envelope, flag); } } else if (!(item.Type == esriDatasetType.esriDTRasterDataset ? false : item.Type != esriDatasetType.esriDTRasterBand)) { bool flag7 = true; if (!((IRasterPyramid)item).Present) { if (this.m_pApp.PyramidPromptType == PyramidPromptType.AlwaysBuildNoPrompt) { ((IRasterPyramid)item).Create(); } else if (this.m_pApp.PyramidPromptType == PyramidPromptType.AlwaysPrompt) { DialogResult dialogResult = BuildPyramidSet.Show(); if (dialogResult == DialogResult.Yes) { ((IRasterPyramid)item).Create(); } else if (dialogResult == DialogResult.Cancel) { flag7 = false; } } } if (flag7) { IRasterLayer rasterLayerClass = new RasterLayerClass() { Cached = true }; rasterLayerClass.CreateFromDataset((IRasterDataset)item); rasterLayerClass.Name = item.Name; bool flag8 = SpatialReferenctOperator.ValideFeatureClass(rasterLayerClass as IGeoDataset); flag = flag8; if (!flag8) { strs.Add(rasterLayerClass.Name); } this.AddLayer(map, rasterLayerClass, ref envelope, flag); } } else if (item.Type == esriDatasetType.esriDTTable) { try { IStandaloneTableCollection standaloneTableCollection = this.GetMap() as IStandaloneTableCollection; IPropertySet connectionProperties = item.Workspace.ConnectionProperties; bool flag9 = false; int num = 0; while (true) { if (num < standaloneTableCollection.StandaloneTableCount) { ITable table = standaloneTableCollection.StandaloneTable[num].Table; if (!connectionProperties.IsEqual((table as IDataset).Workspace.ConnectionProperties) || !((table as IDataset).Name == item.Name)) { num++; } else { flag9 = true; break; } } else { break; } } if (!flag9) { standaloneTableCollection.AddStandaloneTable(new StandaloneTableClass() { Table = item as ITable }); } } catch (Exception exception) { CErrorLog.writeErrorLog(this, exception, ""); } } else if (item.Type == esriDatasetType.esriDTGeometricNetwork) { IGeometricNetwork geometricNetwork = item as IGeometricNetwork; if (geometricNetwork != null) { IEnumFeatureClass classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTSimpleJunction]; classesByType.Reset(); for (n = classesByType.Next(); n != null; n = classesByType.Next()) { featureLayerClass = new FeatureLayerClass() { FeatureClass = n, Name = (n as IDataset).Name }; this.AddLayer(map, featureLayerClass, ref envelope, true); } classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTComplexJunction]; classesByType.Reset(); for (n = classesByType.Next(); n != null; n = classesByType.Next()) { featureLayerClass = new FeatureLayerClass() { FeatureClass = n, Name = (n as IDataset).Name }; this.AddLayer(map, featureLayerClass, ref envelope, true); } classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTSimpleEdge]; classesByType.Reset(); for (n = classesByType.Next(); n != null; n = classesByType.Next()) { featureLayerClass = new FeatureLayerClass() { FeatureClass = n, Name = (n as IDataset).Name }; this.AddLayer(map, featureLayerClass, ref envelope, true); } classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTComplexEdge]; classesByType.Reset(); for (n = classesByType.Next(); n != null; n = classesByType.Next()) { featureLayerClass = new FeatureLayerClass() { FeatureClass = n, Name = (n as IDataset).Name }; this.AddLayer(map, featureLayerClass, ref envelope, true); } } } else if (item.Type == esriDatasetType.esriDTNetworkDataset) { INetworkLayer networkLayerClass = new NetworkLayerClass() { NetworkDataset = item as INetworkDataset }; this.AddLayer(map, networkLayerClass as ILayer, ref envelope, true); if (MessageBox.Show(string.Concat("是否将参加网络要素集-", item.Name, "-的所有要素添加到地图中"), "添加拓扑层", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk) == DialogResult.Yes) { classes = (item as IFeatureClassContainer).Classes; classes.Reset(); for (m = classes.Next(); m != null; m = classes.Next()) { cadFeatureLayerClass = new FeatureLayerClass() { FeatureClass = m, Name = m.AliasName }; this.AddLayer(map, cadFeatureLayerClass, ref envelope, true); } } } } } else { IMapServerLayer mapServerLayerClass = new MapServerLayerClass(); mapServerLayerClass.ServerConnect((objs[k] as IGxAGSObject).AGSServerObjectName, (objs[k] as IGxAGSObject).DefaultMapName); this.AddLayer(map, mapServerLayerClass as ILayer, ref envelope, false); } } processAssist.End(); bool layerCount = this.GetMap().LayerCount > 0; if (strs.Count > 0) { MessageBox.Show("警告:数据范围不一致。\r\n 一个或多个添加的图层范围与关联的空间坐标系范围不一致。请检查数据问题。存在问题图层信息请查看错误日志!", "管理平台", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); StringBuilder stringBuilder = new StringBuilder(); foreach (string str1 in strs) { if (stringBuilder.Length > 0) { stringBuilder.Append(","); } stringBuilder.Append(str1); } CErrorLog.writeErrorLog(stringBuilder, null, "图层范围不一致!"); } foreach (ILayer list0 in this.list_0) { list0.Visible = true; } if (layerCount && envelope != null) { IMap map1 = this.GetMap(); ISpatialReference spatialReference = map1.SpatialReference; if ((spatialReference is IUnknownCoordinateSystem || envelope.SpatialReference is IUnknownCoordinateSystem || envelope.SpatialReference == null ? false : spatialReference != null)) { envelope.Project(spatialReference); } (map1 as IActiveView).Extent = envelope; (map1 as IActiveView).Refresh(); } if (this.m_pApp != null) { this.m_pApp.MapDocumentChanged(); } else if (ApplicationRef.Application != null) { ApplicationRef.Application.MapDocumentChanged(); } } catch (Exception exception1) { str = exception1.ToString(); } if (this.onLoadCompleteHand_0 != null) { this.onLoadCompleteHand_0(); } }
private IFeatureClass method_1() { IFeatureClass class2 = null; if (this.iname_0 == null) { return(null); } object obj2 = this.iname_0.Open(); IWorkspace workspace = null; IFeatureDataset dataset = null; if (obj2 is IWorkspace) { workspace = obj2 as IWorkspace; } else if (obj2 is IFeatureDataset) { dataset = obj2 as IFeatureDataset; workspace = dataset.Workspace; } IObjectClassDescription description = null; description = new FeatureClassDescriptionClass(); IFieldsEdit requiredFields = description.RequiredFields as IFieldsEdit; IFieldEdit field = null; IFieldEdit edit3 = null; int index = requiredFields.FindField((description as IFeatureClassDescription).ShapeFieldName); edit3 = requiredFields.get_Field(index) as IFieldEdit; IGeometryDefEdit geometryDef = edit3.GeometryDef as IGeometryDefEdit; if (this.cboGeometryType.SelectedIndex == 0) { geometryDef.GeometryType_2 = esriGeometryType.esriGeometryPoint; } else if (this.cboGeometryType.SelectedIndex == 1) { geometryDef.GeometryType_2 = esriGeometryType.esriGeometryMultipoint; } else if (this.cboGeometryType.SelectedIndex == 2) { geometryDef.GeometryType_2 = esriGeometryType.esriGeometryPolyline; } else if (this.cboGeometryType.SelectedIndex == 3) { geometryDef.GeometryType_2 = esriGeometryType.esriGeometryPolygon; } ISpatialReference spatialReference = geometryDef.SpatialReference; if (this.txtCoordinate.Tag is ISpatialReference) { spatialReference = this.txtCoordinate.Tag as ISpatialReference; } geometryDef.HasZ_2 = this.chkHasZ.Checked; geometryDef.HasM_2 = this.chkHasM.Checked; SpatialReferenctOperator.ChangeCoordinateSystem(workspace as IGeodatabaseRelease, spatialReference, false); geometryDef.SpatialReference_2 = spatialReference; esriFeatureType esriFTSimple = esriFeatureType.esriFTSimple; field = new FieldClass(); field.Name_2 = "Code"; field.AliasName_2 = "要素编号"; field.Type_2 = esriFieldType.esriFieldTypeInteger; requiredFields.AddField(field); string name = this.method_0(workspace, this.txtFeatureClassName.Text); try { if (dataset == null) { class2 = (workspace as IFeatureWorkspace).CreateFeatureClass(name, requiredFields, null, null, esriFTSimple, "Shape", ""); } else { class2 = dataset.CreateFeatureClass(name, requiredFields, null, null, esriFTSimple, "Shape", ""); } } catch (Exception exception) { Logger.Current.Error("", exception, ""); } return(class2); }
private void method_0(ILayer ilayer_0) { bool flag; ilayer_0.Visible = false; this.list_1.Add(ilayer_0); bool flag1 = true; if (ilayer_0 is IGeoDataset && !SpatialReferenctOperator.ValideFeatureClass(ilayer_0 as IGeoDataset)) { this.list_0.Add(ilayer_0.Name); flag1 = false; } if (flag1) { bool flag2 = true; if (ilayer_0 is IGeoFeatureLayer) { IFeatureClass featureClass = (ilayer_0 as IGeoFeatureLayer).FeatureClass; flag2 = featureClass.FeatureCount(null) > 0; } else if (ilayer_0 is IFDOGraphicsLayer) { ITable attributeTable = (ilayer_0 as IAttributeTable).AttributeTable; flag2 = attributeTable.RowCount(null) > 0; } if (flag2) { if (this.ienvelope_0 != null) { IEnvelope areaOfInterest = ilayer_0.AreaOfInterest; if ((areaOfInterest.SpatialReference is IUnknownCoordinateSystem || this.ienvelope_0.SpatialReference is IUnknownCoordinateSystem || this.ienvelope_0.SpatialReference == null ? false : areaOfInterest.SpatialReference != null)) { if (!(areaOfInterest.SpatialReference is IUnknownCoordinateSystem) || !(this.ienvelope_0.SpatialReference is IUnknownCoordinateSystem)) { flag = (this.ienvelope_0.SpatialReference != null ? true : areaOfInterest.SpatialReference != null); } else { flag = false; } if (flag) { areaOfInterest.Project(this.ienvelope_0.SpatialReference); this.ienvelope_0.Union(areaOfInterest); } else { this.ienvelope_0.Union(areaOfInterest); } } } else { this.ienvelope_0 = ilayer_0.AreaOfInterest; } } } if (this.object_0 is IMapLayers2) { this.method_2(this.object_0 as IMapLayers2, ilayer_0, flag1); } else if (this.object_0 is IMap) { this.method_3(this.object_0 as IMap, ilayer_0, flag1); } else if (this.object_0 is IGroupLayer) { this.method_5(this.object_0 as IGroupLayer, ilayer_0, flag1); } if (this.InMapCtrl != null && this.iapplication_0.MapControl.Map == this.object_0 && this.iapplication_0.MapControl.Map.LayerCount > this.InMapCtrl.Map.LayerCount) { int layerIndexInMap = CommonHelper.GetLayerIndexInMap(this.iapplication_0.MapControl.Map as IBasicMap, ilayer_0); (this.InMapCtrl.Map as IMapLayers).InsertLayer(ilayer_0, true, layerIndexInMap); } }
private void btnOK_Click(object sender, EventArgs e) { if ((this.string_0 != null) && (this.string_0.Length != 0)) { if (this.bool_0) { MessageBox.Show("输出要素类已存在,请重新指定输出要素类名!"); } else if (this.ispatialReference_0 == null) { MessageBox.Show("请输入投影坐标系!"); } else if (this.ispatialReference_0 is IGeographicCoordinateSystem) { MessageBox.Show("请输入投影坐标系!"); } else if (this.ispatialReference_0 is IUnknownCoordinateSystem) { MessageBox.Show("请输入投影坐标系!"); } else { double num = 1000.0; this.string_0 = System.IO.Path.GetFileName(this.txtOutFeat.Text); ISpatialReference spatialReference = ((IGeoDataset)this.idataset_0).SpatialReference; (this.ispatialReference_0 as IControlPrecision2).IsHighPrecision = (spatialReference as IControlPrecision2).IsHighPrecision; if (spatialReference.HasXYPrecision()) { double num2; double num3; double num4; double num5; spatialReference.GetDomain(out num2, out num3, out num4, out num5); new PointClass(); if (!(spatialReference is IUnknownCoordinateSystem)) { IEnvelope extent; if (spatialReference is IProjectedCoordinateSystem) { extent = ((IGeoDataset)this.idataset_0).Extent; extent.PutCoords(num2, num4, num3, num5); extent.Project(this.ispatialReference_0); if (!extent.IsEmpty) { this.ispatialReference_0.SetDomain(extent.XMin, extent.XMax, extent.YMin, extent.YMax); num = extent.Width / 2.0; } } else if (spatialReference is IGeographicCoordinateSystem) { extent = ((IGeoDataset)this.idataset_0).Extent; extent.Project(this.ispatialReference_0); if (!extent.IsEmpty) { this.ispatialReference_0.SetDomain(extent.XMin, extent.XMax, extent.YMin, extent.YMax); num = extent.Width / 2.0; } } } } if (spatialReference.HasZPrecision()) { double num6; double num7; spatialReference.GetZDomain(out num6, out num7); this.ispatialReference_0.SetZDomain(num6, num7); } if (spatialReference.HasMPrecision()) { double num8; double num9; spatialReference.GetZDomain(out num8, out num9); this.ispatialReference_0.SetZDomain(num8, num9); } SpatialReferenctOperator.ChangeCoordinateSystem(this.iworkspace_0 as IGeodatabaseRelease, this.ispatialReference_0, false); this.progressBar1.Visible = true; this.int_2 = this.int_3; this.progressBar1.Value = this.int_3; SRLibCommonFunc.m_pfrm = this; if (this.idataset_0 is IFeatureClass) { SRLibCommonFunc.Project((IFeatureClass)this.idataset_0, this.ispatialReference_0, this.iworkspace_0, this.string_0, num); } else if (this.idataset_0 is IFeatureDataset) { SRLibCommonFunc.Project((IFeatureDataset)this.idataset_0, this.ispatialReference_0, this.iworkspace_0, this.string_0); } this.progressBar1.Visible = false; this.string_0 = ""; this.idataset_0 = null; this.iworkspace_0 = null; this.txtInputFeat.Text = ""; this.txtOutFeat.Text = ""; } } }
private void method_1(IName iname_2, string string_1) { try { double num = 1000.0; IDataset dataset = iname_2.Open() as IDataset; ISpatialReference spatialReference = ((IGeoDataset)dataset).SpatialReference; (this.ispatialReference_0 as IControlPrecision2).IsHighPrecision = (spatialReference as IControlPrecision2).IsHighPrecision; if (spatialReference.HasXYPrecision()) { double num2; double num3; double num4; double num5; spatialReference.GetDomain(out num2, out num3, out num4, out num5); new PointClass(); if (!(spatialReference is IUnknownCoordinateSystem)) { IEnvelope extent; if (spatialReference is IProjectedCoordinateSystem) { extent = ((IGeoDataset)dataset).Extent; extent.PutCoords(num2, num4, num3, num5); extent.Project(this.ispatialReference_0); if (!extent.IsEmpty) { this.ispatialReference_0.SetDomain(extent.XMin, extent.XMax, extent.YMin, extent.YMax); num = extent.Width / 2.0; } } else if (spatialReference is IGeographicCoordinateSystem) { extent = ((IGeoDataset)dataset).Extent; extent.Project(this.ispatialReference_0); if (!extent.IsEmpty) { this.ispatialReference_0.SetDomain(extent.XMin, extent.XMax, extent.YMin, extent.YMax); num = extent.Width / 2.0; } } } } if (spatialReference.HasZPrecision()) { double num6; double num7; spatialReference.GetZDomain(out num6, out num7); this.ispatialReference_0.SetZDomain(num6, num7); } if (spatialReference.HasMPrecision()) { double num8; double num9; spatialReference.GetZDomain(out num8, out num9); this.ispatialReference_0.SetZDomain(num8, num9); } SpatialReferenctOperator.ChangeCoordinateSystem(this.iworkspace_0 as IGeodatabaseRelease, this.ispatialReference_0, false); this.int_2 = this.int_3; this.progressBar1.Value = this.int_3; SRLibCommonFunc.m_pfrm = this; if (dataset is IFeatureClass) { if (this.iname_0 is IFeatureDatasetName) { SRLibCommonFunc.Project((IFeatureClass)dataset, this.ispatialReference_0, this.iname_0 as IFeatureDatasetName, string_1, num); } else { SRLibCommonFunc.Project((IFeatureClass)dataset, this.ispatialReference_0, this.iworkspace_0, string_1, num); } } else if (dataset is IFeatureDataset) { SRLibCommonFunc.Project((IFeatureDataset)dataset, this.ispatialReference_0, this.iworkspace_0, string_1); } dataset = null; } catch (Exception exception) { MessageBox.Show("无法对" + (iname_2 as IDatasetName).Name + "作变换,请查看错误日志文件!"); Logger.Current.Error("", exception, ""); } }
public static void ExtractSelectFeatureFormLayer(IFeatureLayer ifeatureLayer_0, IFeatureWorkspace ifeatureWorkspace_0, IGeometry igeometry_0) { try { IFeatureSelection featureSelection = (IFeatureSelection)ifeatureLayer_0; if (featureSelection.SelectionSet.Count != 0) { IFeatureClass featureClass = ifeatureLayer_0.FeatureClass; IFields fields = featureClass.Fields; IFieldChecker fieldChecker = new FieldChecker(); fieldChecker.InputWorkspace = (featureClass as IDataset).Workspace; fieldChecker.ValidateWorkspace = (ifeatureWorkspace_0 as IWorkspace); IEnumFieldError enumFieldError; IFields fields2; fieldChecker.Validate(fields, out enumFieldError, out fields2); enumFieldError.Reset(); IFieldError fieldError = enumFieldError.Next(); string text = ""; while (fieldError != null) { fieldError.FieldError.ToString(); IField field = fields.get_Field(fieldError.FieldIndex); IField field2 = fields2.get_Field(fieldError.FieldIndex); string text2 = text; text = string.Concat(new string[] { text2, field2.Name, " reason: ", field.Name, " " }); fieldError = enumFieldError.Next(); } new Hashtable(); string text3 = ifeatureLayer_0.Name; string text4; fieldChecker.ValidateTableName(text3, out text4); text3 = text4; string shapeFieldName = ""; IFieldsEdit fieldsEdit = new Fields() as IFieldsEdit; for (int i = fields2.FieldCount - 1; i >= 0; i--) { IField field3 = fields2.get_Field(i); if (field3.Type == esriFieldType.esriFieldTypeGeometry) { shapeFieldName = field3.Name; IGeometryDef geometryDef = field3.GeometryDef; ISpatialReference spatialReference = (geometryDef.SpatialReference as IClone).Clone() as ISpatialReference; SpatialReferenctOperator.ChangeCoordinateSystem(ifeatureWorkspace_0 as IGeodatabaseRelease, spatialReference, false); (geometryDef as IGeometryDefEdit).SpatialReference_2 = spatialReference; (field3 as IFieldEdit).GeometryDef_2 = geometryDef; } if ((ifeatureWorkspace_0 as IWorkspace).Type == esriWorkspaceType.esriFileSystemWorkspace) { if (field3.Type != esriFieldType.esriFieldTypeBlob) { fieldsEdit.AddField(field3); } } else { fieldsEdit.AddField(field3); } } IFeatureClass featureClass2 = null; try { featureClass2 = ifeatureWorkspace_0.CreateFeatureClass(text3, fieldsEdit, null, null, esriFeatureType.esriFTSimple, shapeFieldName, ""); } catch (Exception) { System.Windows.Forms.MessageBox.Show("无法创建输出要素类!"); return; } IFeatureCursor featureCursor = featureClass2.Insert(true); IFeatureBuffer featureBuffer = featureClass2.CreateFeatureBuffer(); ICursor cursor; featureSelection.SelectionSet.Search(null, false, out cursor); IFeatureCursor featureCursor2 = (IFeatureCursor)cursor; for (IFeature feature = featureCursor2.NextFeature(); feature != null; feature = featureCursor2.NextFeature()) { if (feature.Shape != null) { ClipHelper.InsertFeature(featureCursor, featureBuffer, fields2, feature, feature.Shape, igeometry_0); } } featureCursor.Flush(); Marshal.ReleaseComObject(featureBuffer); Marshal.ReleaseComObject(featureCursor); } } catch { } }
private void method_1(IFeatureClass ifeatureClass_0, IWorkspace iworkspace_0) { IEnumFieldError enumFieldError; IFields field; int i; IField field1; string str; string aliasName = ifeatureClass_0.AliasName; string[] strArrays = aliasName.Split(new char[] { '.' }); aliasName = strArrays[(int)strArrays.Length - 1]; IFields fields = ifeatureClass_0.Fields; IFieldChecker fieldCheckerClass = new FieldChecker() { ValidateWorkspace = iworkspace_0 }; fieldCheckerClass.Validate(fields, out enumFieldError, out field); List <SDEToShapefile.FieldMap> fieldMaps = new List <SDEToShapefile.FieldMap>(); for (i = 0; i < fields.FieldCount; i++) { field1 = fields.Field[i]; if (field1.Type != esriFieldType.esriFieldTypeBlob) { IField field2 = field.Field[i]; fieldMaps.Add(new SDEToShapefile.FieldMap(field1.Name, field2.Name)); } } for (i = field.FieldCount - 1; i >= 0; i--) { field1 = field.Field[i]; if (field1.Type == esriFieldType.esriFieldTypeBlob) { (field as IFieldsEdit).DeleteField(field1); } } fieldCheckerClass.ValidateTableName(aliasName, out str); aliasName = string.Concat(this.string_0, "\\", str); if (File.Exists(string.Concat(aliasName, ".shp"))) { File.Delete(string.Concat(aliasName, ".shp")); } if (File.Exists(string.Concat(aliasName, ".shx"))) { File.Delete(string.Concat(aliasName, ".shx")); } if (File.Exists(string.Concat(aliasName, ".dbf"))) { File.Delete(string.Concat(aliasName, ".dbf")); } int num = field.FindField(ifeatureClass_0.ShapeFieldName); IFieldEdit fieldEdit = field.Field[num] as IFieldEdit; IGeometryDefEdit geometryDef = fieldEdit.GeometryDef as IGeometryDefEdit; if (ifeatureClass_0.FeatureType == esriFeatureType.esriFTAnnotation) { geometryDef.GeometryType_2 = esriGeometryType.esriGeometryPoint; } ISpatialReference spatialReference = geometryDef.SpatialReference; SpatialReferenctOperator.ChangeCoordinateSystem(iworkspace_0 as IGeodatabaseRelease, spatialReference, true); geometryDef.SpatialReference_2 = spatialReference; fieldEdit.GeometryDef_2 = geometryDef; try { IFeatureClass featureClass = (iworkspace_0 as IFeatureWorkspace).CreateFeatureClass(str, field, null, null, esriFeatureType.esriFTSimple, ifeatureClass_0.ShapeFieldName, ""); this.method_2(ifeatureClass_0 as ITable, featureClass as ITable, fieldMaps, 800); } catch { } }
private void method_1(IGeodatabaseRelease igeodatabaseRelease_0, ISpatialReference ispatialReference_2) { SpatialReferenctOperator.ChangeCoordinateSystem(igeodatabaseRelease_0, ispatialReference_2, true); }
private ISpatialReference method_0(IGeodatabaseRelease igeodatabaseRelease_0) { return(SpatialReferenctOperator.ConstructCoordinateSystem(igeodatabaseRelease_0)); }
private void NewDatasetSpatialRefPage_Load(object sender, EventArgs e) { string[] directories; int num; TreeNode node2; string[] files; int num2; TreeNode node3; ISpatialReferenceFactory3 factory = new SpatialReferenceEnvironmentClass(); TreeNode node = new TreeNode("地理坐标系文件夹", 0, 1); this.treeView1.Nodes.Add(node); string startupPath = Application.StartupPath; string path = System.IO.Path.Combine(startupPath, @"Coordinate Systems\Geographic Coordinate Systems"); if (Directory.Exists(path)) { directories = Directory.GetDirectories(path); for (num = 0; num < directories.Length; num++) { node2 = new TreeNode(System.IO.Path.GetFileName(directories[num]), 0, 1); node.Nodes.Add(node2); files = Directory.GetFiles(directories[num]); num2 = 0; while (num2 < files.Length) { if (System.IO.Path.GetExtension(files[num2]).ToLower() == ".prj") { node3 = new TreeNode(System.IO.Path.GetFileName(files[num2]), 2, 2) { Tag = factory.CreateESRISpatialReferenceFromPRJFile(files[num2]) }; node2.Nodes.Add(node3); } num2++; } } } node = new TreeNode("投影坐标系文件夹", 0, 1); this.treeView1.Nodes.Add(node); path = System.IO.Path.Combine(startupPath, @"Coordinate Systems\Projected Coordinate Systems"); if (Directory.Exists(path)) { directories = Directory.GetDirectories(path); for (num = 0; num < directories.Length; num++) { node2 = new TreeNode(System.IO.Path.GetFileName(directories[num]), 0, 1); node.Nodes.Add(node2); string[] strArray3 = Directory.GetDirectories(directories[num]); for (int i = 0; i < strArray3.Length; i++) { TreeNode node4 = new TreeNode(System.IO.Path.GetFileName(strArray3[i]), 0, 1); node2.Nodes.Add(node4); files = Directory.GetFiles(strArray3[i]); for (num2 = 0; num2 < files.Length; num2++) { if (System.IO.Path.GetExtension(files[num2]).ToLower() == ".prj") { node3 = new TreeNode(System.IO.Path.GetFileName(files[num2]), 2, 2) { Tag = factory.CreateESRISpatialReferenceFromPRJFile(files[num2]) }; node4.Nodes.Add(node3); } } } } } node = new TreeNode("未知坐标系统", 2, 2) { Tag = SpatialReferenctOperator.ConstructCoordinateSystem( NewObjectClassHelper.m_pObjectClassHelper.Workspace as IGeodatabaseRelease) }; this.treeView1.Nodes.Add(node); }