public void TestXYResolution() { // Map layer. IMap map = (ArcMap.Application.Document as IMxDocument).FocusMap; // Map spatial reference and domain extent values. ISpatialReference mapSpatialReference = map.SpatialReference as ISpatialReference; double mapXMin1, mapXMax1, mapYMin1, mapYMax1; mapSpatialReference.GetDomain(out mapXMin1, out mapXMax1, out mapYMin1, out mapYMax1); // Map resolution ISpatialReferenceResolution mapSpatialReferenceResolution = mapSpatialReference as ISpatialReferenceResolution; double mapResolution = mapSpatialReferenceResolution.XYResolution[false]; // Get feature class for map layers IEnumLayer enumLayer = map.Layers; ILayer layer = enumLayer.Next(); IFeatureLayer featureLayer = layer as IFeatureLayer; IFeatureClass featureClass = featureLayer.FeatureClass; IGeoDataset geoDataset = featureClass as IGeoDataset; // Feature class spatial reference and domain extent values. ISpatialReference datasetSpatialReference = geoDataset.SpatialReference as ISpatialReference; double fClassXMin, fClassXMax, fClassYMin, fClassYMax; datasetSpatialReference.GetDomain(out fClassXMin, out fClassXMax, out fClassYMin, out fClassYMax); // Feature class resolution ISpatialReferenceResolution datasetSRResolution = datasetSpatialReference as ISpatialReferenceResolution; double datasetResolution = datasetSRResolution.XYResolution[false]; // Set map spatial reference domain extent to the feature class domain extent values mapSpatialReference.SetDomain(fClassXMin, fClassXMax, fClassYMin, fClassYMax); double mapXMin2, mapXMax2, mapYMin2, mapYMax2; mapSpatialReference.GetDomain(out mapXMin2, out mapXMax2, out mapYMin2, out mapYMax2); // New map resolution mapSpatialReferenceResolution = mapSpatialReference as ISpatialReferenceResolution; double mapResolution2 = mapSpatialReferenceResolution.XYResolution[false]; // Show results in a message box. MessageBox.Show( $"Map Resolution Before: {mapResolution}\n" + $"Dataset Resolution: {datasetResolution}\n" + $"Map Resolution After: {mapResolution2}\n" + $"Map Domain Before -> Xmin: {mapXMin1}, XMax: {mapXMax1}, YMin: {mapYMin1}, YMax: {mapYMax1}\n" + $"Data Domain -> Xmin: {fClassXMin}, XMax: {fClassXMax}, YMin: {fClassYMin}, YMax: {fClassYMax}\n" + $"Map Domain After -> Xmin: {mapXMin2}, XMax: {mapXMax2}, YMin: {mapYMin2}, YMax: {mapYMax2}"); }
public static void ChangeCoordinateSystem(IGeodatabaseRelease igeodatabaseRelease_0, ISpatialReference ispatialReference_0, bool bool_0) { if (ispatialReference_0 != null) { bool geoDatasetPrecision = GeodatabaseTools.GetGeoDatasetPrecision(igeodatabaseRelease_0); IControlPrecision2 controlPrecision = ispatialReference_0 as IControlPrecision2; if (controlPrecision.IsHighPrecision != geoDatasetPrecision) { controlPrecision.IsHighPrecision = geoDatasetPrecision; double num; double num2; double num3; double num4; ispatialReference_0.GetDomain(out num, out num2, out num3, out num4); if (bool_0) { ISpatialReferenceResolution spatialReferenceResolution = ispatialReference_0 as ISpatialReferenceResolution; spatialReferenceResolution.ConstructFromHorizon(); spatialReferenceResolution.SetDefaultXYResolution(); ISpatialReferenceTolerance spatialReferenceTolerance = ispatialReference_0 as ISpatialReferenceTolerance; spatialReferenceTolerance.SetDefaultXYTolerance(); } } } }
/// <summary> /// Initializes a new instance of the <see cref="PolylineGraphConnectivity"/> class. /// </summary> /// <param name="spatialReference"></param> /// <param name="areaOfInterest">An optional area of interest which is used to /// filter connectivities at points outside the AoI. This can be important if the /// node degree must be determined correctly (Example: two of three line features /// intersect the AoI and are connected -> the node is incorrectly determined to /// have degree 2 because the third line has never been added to the graph.</param> public PolylineGraphConnectivity(ISpatialReference spatialReference, [CanBeNull] IGeometry areaOfInterest = null) { SpatialReference = spatialReference; AreaOfInterest = areaOfInterest; _queryPointFrom = new PointClass { SpatialReference = SpatialReference }; _queryPointTo = new PointClass { SpatialReference = SpatialReference }; if (spatialReference != null) { double xMax, yMax; spatialReference.GetDomain(out _originX, out xMax, out _originY, out yMax); _resolution = SpatialReferenceUtils.GetXyResolution(spatialReference); } NodeIndexesByNode = new Dictionary <Node, int>(); EdgeReferences = new List <GdbObjectReference>(); // Two lists with corresponding indexes: The nodes and the list of connections for each node: Nodes = new List <Node>(); Connections = new List <List <AdjacentNode> >(); EdgeInteriorNodesByEdge = new Dictionary <GdbObjectReference, List <int> >(); }
private ISpatialReference CloneSpatialReference(ISpatialReference pSrcSpatialReference) { double xmin, xmax, ymin, ymax; pSrcSpatialReference.GetDomain(out xmin, out xmax, out ymin, out ymax); ISpatialReference pSR = new UnknownCoordinateSystemClass(); pSR.SetDomain(xmin, xmax, ymin, ymax); return(pSR); }
private IEnvelope GetDomain() { double xMin; double yMin; double xMax; double yMax; _spatialReference.GetDomain(out xMin, out xMax, out yMin, out yMax); return(GeometryFactory.CreateEnvelope(xMin, yMin, xMax, yMax)); }
private static void CanReduceTolerance([NotNull] ISpatialReference spatialReference, double toleranceFactor, bool allowResolutionChange) { var origTolerance = (ISpatialReferenceTolerance)spatialReference; var origResolution = (ISpatialReferenceResolution)spatialReference; double xmin; double xmax; double ymin; double ymax; spatialReference.GetDomain(out xmin, out xmax, out ymin, out ymax); Console.WriteLine(@"Original tolerance: {0}", origTolerance.XYTolerance); Console.WriteLine(@"Original resolution: {0}", origResolution.XYResolution[true]); Console.WriteLine(@"Original domain: {0} {1} {2} {3}", xmin, ymin, xmax, ymax); ISpatialReference reduced = GetReducedToleranceSpatialReference(spatialReference, toleranceFactor); var reducedTolerance = (ISpatialReferenceTolerance)reduced; var reducedResolution = (ISpatialReferenceResolution)reduced; double xmin2; double xmax2; double ymin2; double ymax2; reduced.GetDomain(out xmin2, out xmax2, out ymin2, out ymax2); Console.WriteLine(@"Reduced tolerance: {0}", reducedTolerance.XYTolerance); Console.WriteLine(@"Reduced resolution: {0}", reducedResolution.XYResolution[true]); Console.WriteLine(@"Reduced domain: {0} {1} {2} {3}", xmin2, ymin2, xmax2, ymax2); Assert.AreEqual(origTolerance.XYTolerance * toleranceFactor, reducedTolerance.XYTolerance); Assert.IsTrue(reducedTolerance.XYToleranceValid == esriSRToleranceEnum.esriSRToleranceOK); Assert.AreEqual(xmin, xmin2); Assert.AreEqual(ymin, ymin2); if (!allowResolutionChange) { Assert.AreEqual(origResolution.get_XYResolution(true), reducedResolution.XYResolution[true]); Assert.AreEqual(xmax, xmax2); Assert.AreEqual(ymax, ymax2); } }
private static ISpatialReference GetBoxSpatialReference( [NotNull] ISpatialReference sref, double xMin, double yMin, double xMax, double yMax) { double domainXMin; double domainYMin; double domainXMax; double domainYMax; sref.GetDomain(out domainXMin, out domainXMax, out domainYMin, out domainYMax); double xyResolution = SpatialReferenceUtils.GetXyResolution(sref); var outOfBounds = false; double epsilon = xyResolution * 10; if (xMin < domainXMin + epsilon) { domainXMin = xMin - epsilon; outOfBounds = true; } if (yMin < domainYMin + epsilon) { domainYMin = yMin - epsilon; outOfBounds = true; } if (xMax > domainXMax - epsilon) { domainXMax = xMax + epsilon; outOfBounds = true; } if (yMax > domainYMax - epsilon) { domainYMax = yMax + epsilon; outOfBounds = true; } if (!outOfBounds) { return(sref); } var copy = (ISpatialReference)((IClone)sref).Clone(); // TODO round to resolution --> no odd grid origins copy.SetDomain(domainXMin, domainXMax, domainYMin, domainYMax); return(copy); }
private bool method_0(IName iname_2, string string_1) { try { IDataset dataset = iname_2.Open() as IDataset; ISpatialReference spatialReference = ((IGeoDataset)dataset).SpatialReference; if (spatialReference.HasXYPrecision()) { double num; double num2; double num3; double num4; spatialReference.GetDomain(out num, out num2, out num3, out num4); new PointClass(); if (!(spatialReference is IUnknownCoordinateSystem)) { IEnvelope extent; if (spatialReference is IProjectedCoordinateSystem) { extent = ((IGeoDataset)dataset).Extent; extent.PutCoords(num, num3, num2, num4); extent.Project(this.ispatialReference_0); if (extent.IsEmpty) { return (MessageBox.Show(dataset.Name + "不能向该投影转换,是否继续后续要素类投影变换?", "投影", MessageBoxButtons.YesNo) == DialogResult.Yes); } } else if (spatialReference is IGeographicCoordinateSystem) { extent = ((IGeoDataset)dataset).Extent; extent.Project(this.ispatialReference_0); if (extent.IsEmpty) { return (MessageBox.Show(dataset.Name + "不能向该投影转换,是否继续后续要素类投影变换?", "投影", MessageBoxButtons.YesNo) == DialogResult.Yes); } } } } return(true); } catch (Exception exception) { MessageBox.Show("无法对" + (iname_2 as IDatasetName).Name + "作变换,请查看错误日志文件!"); Logger.Current.Error("", exception, ""); } return(false); }
public Node(double x, double y, ISpatialReference spatialReference) { Assert.ArgumentNotNull(spatialReference, nameof(spatialReference)); double originX, originY; double xMax, yMax; spatialReference.GetDomain(out originX, out xMax, out originY, out yMax); double scale = 1 / SpatialReferenceUtils.GetXyResolution(spatialReference); X = SnapCoordinate(x, originX, scale); Y = SnapCoordinate(y, originY, scale); }
public WKSPointZComparer(double xyTolerance, double zTolerance, [NotNull] ISpatialReference spatialReference) { double xMin; double yMin; double zMin; double xMax; double yMax; double zMax; spatialReference.GetDomain(out xMin, out xMax, out yMin, out yMax); spatialReference.GetZDomain(out zMin, out zMax); Initialize(xyTolerance, zTolerance, xMin, yMin, zMin); }
public string GetDomainInfo(ISpatialReference ispatialReference_1) { double num5; double num6; string str = ""; if (ispatialReference_1.HasXYPrecision()) { double num; double num2; double num3; double num4; ispatialReference_1.GetDomain(out num, out num2, out num3, out num4); str = ((((str + "X/Y Domain: \r\n") + " Min X:" + num.ToString("#.######") + "\r\n") + " Min Y:" + num3.ToString("#.######") + "\r\n") + " Max X:" + num2.ToString("#.######") + "\r\n") + " Max Y:" + num4.ToString("#.######") + "\r\n"; num5 = ((num2 - num) > (num4 - num3)) ? (num2 - num) : (num4 - num3); num6 = 2147483645.0 / num5; str = str + " Scale:" + num6.ToString("#.######") + "\r\n"; } if (ispatialReference_1.HasZPrecision()) { double num7; double num8; str = str + "\r\n"; ispatialReference_1.GetZDomain(out num7, out num8); str = ((str + "Z Domain: \r\n") + " Min :" + num7.ToString("#.######") + "\r\n") + " Max :" + num8.ToString("#.######") + "\r\n"; num5 = num8 - num7; num6 = 2147483645.0 / num5; str = str + " Scale:" + num6.ToString("#.######") + "\r\n"; } if (ispatialReference_1.HasMPrecision()) { double num9; double num10; str = str + "\r\n"; ispatialReference_1.GetMDomain(out num9, out num10); str = ((str + "M Domain: \r\n") + " Min :" + num9.ToString("#.######") + "\r\n") + " Max :" + num10.ToString("#.######") + "\r\n"; num5 = num10 - num9; str = str + " Scale:" + ((2147483645.0 / num5)).ToString("#.######") + "\r\n"; } return(str); }
private static string GetXyPrecisionString( [NotNull] ISpatialReference spatialReference) { if (!spatialReference.HasXYPrecision()) { return(LocalizableStrings.QaSchemaSpatialReference_NotDefined); } double xmin; double xmax; double ymin; double ymax; spatialReference.GetDomain(out xmin, out xmax, out ymin, out ymax); var resolution = (ISpatialReferenceResolution)spatialReference; double xyResolution = resolution.get_XYResolution(true); return(string.Format(LocalizableStrings.QaSchemaSpatialReference_XYPrecision, xmin, ymin, xmax, ymax, xyResolution)); }
//** 功能描述: 通过一个字段集,创建另外一个字段集,直接添加传入的字段集中的所有字段的话 // 会产生高版本和低版本不兼容的问题, public static IFields GetFieldsByFields(IFields pFields, ref ISpatialReference pDesSpatialReference, Dictionary <string, string> pDicField) { //pDesSpatialReference = null; //pDicField = null; int i = 0; IField pField = default(IField); IFieldEdit pFieldEdit = default(IFieldEdit); IFieldsEdit pFieldsEdit = default(IFieldsEdit); IField pCreateField = default(IField); ISpatialReference pOriSpatialReference = default(ISpatialReference); IGeometryDef pGeometryDef = default(IGeometryDef); IGeometryDefEdit pGeometryDefEdit = default(IGeometryDefEdit); double ymin = 0; double xmin = 0; double xmax = 0; double ymax = 0; double mMin = 0; double zmin = 0; double zmax = 0; double mMax = 0; IEnvelope pEnvelop = default(IEnvelope); IGeometry pGeometry = default(IGeometry); IClone pClone = default(IClone); //标识该字段是否被添加 bool bIsAddField = false; //应该把OID字段添加进去,否则会产生错误 pFieldsEdit = new FieldsClass(); for (i = 0; i <= pFields.FieldCount - 1; i++) { pField = pFields.get_Field(i); if (pField.Editable | pField.Type == esriFieldType.esriFieldTypeOID | pField.Type == esriFieldType.esriFieldTypeGlobalID | pField.Type == esriFieldType.esriFieldTypeGUID) { pClone = (IClone)pField; pCreateField = (IField)pClone.Clone(); //如果更改字段名称:如果是OID字段的话,即便不在dic中也要进行添加 if ((pDicField != null)) { if (pDicField.ContainsKey(Strings.Trim(pField.Name))) { bIsAddField = true; //修改字段的名称 pFieldEdit = (IFieldEdit)pCreateField; pFieldEdit.Name_2 = pDicField[Strings.Trim(pField.Name)]; //需不需要把别名赋过去,根据需要再看吧,现在看的话应该不要赋过去,因此一般字段名和别名是一样的 //如果赋过去的话,显示的是原字段的别名,即不是用户想看到的字段名 //pFieldEdit.AliasName = pField.AliasName } else if (pField.Type == esriFieldType.esriFieldTypeOID | pField.Type == esriFieldType.esriFieldTypeGlobalID | pField.Type == esriFieldType.esriFieldTypeGUID) { bIsAddField = true; } else { bIsAddField = false; } } else { bIsAddField = true; } if (pField.Type == esriFieldType.esriFieldTypeGeometry) { pGeometryDef = pCreateField.GeometryDef; pGeometryDefEdit = (IGeometryDefEdit)pGeometryDef; if ((pDesSpatialReference != null)) { pOriSpatialReference = pGeometryDef.SpatialReference; //从原来的空间参考中得到domain if (pOriSpatialReference.HasXYPrecision()) { pOriSpatialReference.GetDomain(out xmin, out xmax, out ymin, out ymax); } pEnvelop = new EnvelopeClass(); pEnvelop.PutCoords(xmin, ymin, xmax, ymax); pGeometry = pEnvelop; pGeometry.SpatialReference = pOriSpatialReference; pGeometry.Project(pDesSpatialReference); xmax = pEnvelop.XMax; xmin = pEnvelop.XMin; ymax = pEnvelop.YMax; ymin = pEnvelop.YMin; pDesSpatialReference.SetDomain(xmin, xmax, ymin, ymax); if (pOriSpatialReference.HasZPrecision()) { pOriSpatialReference.GetZDomain(out zmin, out zmax); pDesSpatialReference.SetZDomain(zmin, zmax); } if (pOriSpatialReference.HasMPrecision()) { pOriSpatialReference.GetMDomain(out mMin, out mMax); pDesSpatialReference.SetMDomain(mMin, mMax); } pGeometryDefEdit.SpatialReference_2 = pDesSpatialReference; } //修改grid的大小 if (pGeometryDef.GridCount != 0) { if (pGeometryDef.get_GridSize(0) < 100) { pGeometryDefEdit.set_GridSize(0, 100); } } bIsAddField = true; } if (bIsAddField == true) { pFieldsEdit.AddField(pCreateField); bIsAddField = false; } } } return(pFieldsEdit); }
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 = ""; } } }
public static void Project(IFeatureClass ifeatureClass_0, ISpatialReference ispatialReference_0, IWorkspace iworkspace_0, string string_0, double double_0) { string str2; double num3; double num4; double num5; double num6; IEnumFieldError error; IFields fields2; IWorkspace workspace = ((IDataset)ifeatureClass_0).Workspace; IFeatureDataConverter converter = new FeatureDataConverterClass(); IWorkspaceName name = new WorkspaceNameClass { ConnectionProperties = workspace.ConnectionProperties, WorkspaceFactoryProgID = workspace.WorkspaceFactory.GetClassID().Value.ToString() }; IWorkspaceName name2 = new WorkspaceNameClass(); new PropertySetClass(); name2.ConnectionProperties = iworkspace_0.ConnectionProperties; name2.WorkspaceFactoryProgID = iworkspace_0.WorkspaceFactory.GetClassID().Value.ToString(); IDatasetName name3 = new FeatureClassNameClass(); string aliasName = ifeatureClass_0.AliasName; int index = aliasName.LastIndexOf("."); if (index != -1) { aliasName = aliasName.Substring(index + 1); } name3.Name = aliasName; name3.WorkspaceName = name; IDatasetName name4 = new FeatureClassNameClass { WorkspaceName = name2 }; IFieldChecker checker = new FieldCheckerClass { ValidateWorkspace = iworkspace_0 }; string[] strArray = string_0.Split(new char[] { '.' }); string_0 = strArray[strArray.Length - 1] + "_Project"; checker.ValidateTableName(string_0, out str2); string str3 = str2; int num2 = 1; if ((iworkspace_0.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace) || (iworkspace_0.Type == esriWorkspaceType.esriLocalDatabaseWorkspace)) { while (((IWorkspace2)iworkspace_0).get_NameExists(esriDatasetType.esriDTFeatureClass, str3)) { str3 = str2 + "_" + num2.ToString(); num2++; } } else if (iworkspace_0.Type == esriWorkspaceType.esriFileSystemWorkspace) { while (File.Exists(str3 + ".shp")) { str3 = str2 + "_" + num2.ToString(); num2++; } } name4.Name = str3; IFields inputField = new FieldsClass(); index = ifeatureClass_0.Fields.FindField(ifeatureClass_0.ShapeFieldName); IField field = ifeatureClass_0.Fields.get_Field(index); IGeometryDef geometryDef = field.GeometryDef; ISpatialReference spatialReference = geometryDef.SpatialReference; ispatialReference_0.GetDomain(out num3, out num4, out num5, out num6); ((IGeometryDefEdit)geometryDef).GridCount_2 = 1; ((IGeometryDefEdit)geometryDef).set_GridSize(0, double_0); ((IGeometryDefEdit)geometryDef).SpatialReference_2 = ispatialReference_0; ((IFieldEdit)field).GeometryDef_2 = geometryDef; for (int i = 0; i < ifeatureClass_0.Fields.FieldCount; i++) { if (i == index) { ((IFieldsEdit)inputField).AddField(field); } else { IField field2 = ifeatureClass_0.Fields.get_Field(i); ((IFieldsEdit)inputField).AddField(field2); } } checker.Validate(inputField, out error, out fields2); if (m_pfrm != null) { m_pfrm.FeatureProgress = converter; } try { converter.ConvertFeatureClass((IFeatureClassName)name3, null, null, (IFeatureClassName)name4, geometryDef, fields2, "", 1000, 0); } catch (Exception exception) { MessageBox.Show(exception.Message); } }
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 string FormatSpatialReference(ISpatialReference sr) { try { if (sr == null) { return(""); } StringBuilder builder = new StringBuilder(); if (sr is UnknownCoordinateSystemClass) { builder.Append("UnknownCoordinateSystem"); } else { if (sr.Name == "Unknown") { builder.Append("UnknownCoordinateSystem"); } else { IGeographicCoordinateSystem system2; if (sr is IProjectedCoordinateSystem) { Exception exception; IProjectedCoordinateSystem system = sr as IProjectedCoordinateSystem; builder.Append("投影坐标系:\n"); builder.Append(" Name:").Append(system.Name).Append("\n"); builder.Append(" Alias:").Append(system.Alias).Append("\n"); builder.Append(" Abbreviation:").Append(system.Abbreviation).Append("\n"); builder.Append(" Remarks:").Append(system.Remarks).Append("\n"); builder.Append("投影:").Append(system.Projection.Name).Append("\n"); builder.Append("投影参数:\n"); builder.Append(" False_Easting:").Append(system.FalseEasting).Append("\n"); builder.Append(" False_Northing:").Append(system.FalseNorthing).Append("\n"); builder.Append(" Central_Meridian:").Append(system.get_CentralMeridian(true)).Append("\n"); try { builder.Append(" Scale_Factor:").Append(system.ScaleFactor).Append("\n"); } catch { } builder.Append(" Latitude_Of_Origin:0\n"); builder.Append("Linear Unit:").Append(system.CoordinateUnit.Name).Append("(").Append(system.CoordinateUnit.MetersPerUnit).Append(")\n"); builder.Append("Geographic Coordinate System:\n"); system2 = system.GeographicCoordinateSystem; builder.Append(" Name:").Append(system2.Name).Append("\n"); builder.Append(" Alias:").Append(system2.Alias).Append("\n"); builder.Append(" Abbreviation:").Append(system2.Abbreviation).Append("\n"); builder.Append(" Remarks:").Append(system2.Remarks).Append("\n"); builder.Append(" Angular Unit:").Append(system2.CoordinateUnit.Name).Append("(").Append(system2.CoordinateUnit.RadiansPerUnit).Append(")\n"); builder.Append(" Prime Meridian:").Append(system2.PrimeMeridian.Name).Append("(").Append(system2.PrimeMeridian.Longitude).Append(")\n"); builder.Append(" Datum:").Append(system2.Datum.Name).Append("\n"); builder.Append(" Spheroid:").Append(system2.Datum.Spheroid.Name).Append("\n"); builder.Append(" Semimajor Axis:").Append(system2.Datum.Spheroid.SemiMajorAxis).Append("\n"); builder.Append(" Semiminor Axis:").Append(system2.Datum.Spheroid.SemiMinorAxis).Append("\n"); builder.Append(" Inverse Flattening:").Append((double)(1.0 / system2.Datum.Spheroid.Flattening)).Append("\n"); builder.Append("X/Y Domain:\n"); try { double num = 0.0; double num2 = 0.0; double num3 = 0.0; double num4 = 0.0; double num5 = 0.0; sr.GetDomain(out num, out num3, out num2, out num4); sr.GetFalseOriginAndUnits(out num, out num2, out num5); builder.Append(" Min X:").Append(num).Append("\n"); builder.Append(" Min Y:").Append(num2).Append("\n"); builder.Append(" Max X:").Append(num3).Append("\n"); builder.Append(" Max Y:").Append(num4).Append("\n"); builder.Append(" XYScale:").Append(num5).Append("\n"); builder.Append("\n"); } catch (Exception exception1) { exception = exception1; } builder.Append("Z Domain:\n"); try { double num6; double num7; double num8 = 0.0; sr.GetZDomain(out num6, out num7); sr.GetZFalseOriginAndUnits(out num6, out num8); builder.Append(" Min Z:").Append(num6).Append("\n"); builder.Append(" Max Z:").Append(num7).Append("\n"); builder.Append(" ZScale:").Append(num8).Append("\n"); builder.Append("\n"); } catch (Exception exception2) { exception = exception2; } try { double num9; double num10; builder.Append("M Domain:\n"); double num11 = 0.0; sr.GetMDomain(out num9, out num10); sr.GetMFalseOriginAndUnits(out num9, out num11); builder.Append(" Min M:").Append(num9).Append("\n"); builder.Append(" Max M:").Append(num10).Append("\n"); builder.Append(" MScale:").Append(num11).Append("\n"); } catch (Exception exception3) { exception = exception3; } } else if (sr is IGeographicCoordinateSystem) { builder.Append("Geographic Coordinate System:\n"); system2 = sr as IGeographicCoordinateSystem; builder.Append(" Name:").Append(system2.Name).Append("\n"); builder.Append(" Alias:").Append(system2.Alias).Append("\n"); builder.Append(" Abbreviation:").Append(system2.Abbreviation).Append("\n"); builder.Append(" Remarks:").Append(system2.Remarks).Append("\n"); builder.Append(" Angular Unit:").Append(system2.CoordinateUnit.Name).Append("(").Append(system2.CoordinateUnit.RadiansPerUnit).Append(")\n"); builder.Append(" Prime Meridian:").Append(system2.PrimeMeridian.Name).Append("(").Append(system2.PrimeMeridian.Longitude).Append(")\n"); builder.Append(" Datum:").Append(system2.Datum.Name).Append("\n"); builder.Append(" Spheroid:").Append(system2.Datum.Spheroid.Name).Append("\n"); builder.Append(" Semimajor Axis:").Append(system2.Datum.Spheroid.SemiMajorAxis).Append("\n"); builder.Append(" Semiminor Axis:").Append(system2.Datum.Spheroid.SemiMinorAxis).Append("\n"); builder.Append(" Inverse Flattening:").Append((double)(1.0 / system2.Datum.Spheroid.Flattening)).Append("\n"); } } } return(builder.ToString()); } catch (Exception ex) { return(""); } }
/// <summary> /// 以原工作空间为模板创建新的工作空间 /// </summary> private void CreatWorkspaceFromOrig() { WaitForm.SetCaption("正在创建新的工作空间...请稍后"); IFeatureClassContainer pFcContainer = null; IFeatureClass pFcTemp = null; IFeatureClass pNewFc = null; ISpatialReference pSr = null; ISpatialReference pSrTemp = null; IFields pflds = null; double dblXmin, dblXmax, dblYmin, dblYmax; double dblZmin, dblZmax, dblMmin, dblMmax; CreateWorkspaceDomains(m_pOrigWorkspace, m_pDestWorkspace); IFeatureWorkspace pFeaWorkspace = m_pDestWorkspace as IFeatureWorkspace; IEnumDataset enumDs = m_pOrigWorkspace.get_Datasets(esriDatasetType.esriDTAny); IDataset pDs = enumDs.Next(); while (pDs != null) { if (pDs.Type == esriDatasetType.esriDTFeatureDataset) { pSr = new UnknownCoordinateSystemClass(); pSrTemp = (pDs as IGeoDataset).SpatialReference; if (pSrTemp.HasXYPrecision()) { pSrTemp.GetDomain(out dblXmin, out dblXmax, out dblYmin, out dblYmax); pSr.SetDomain(dblXmin, dblXmax, dblYmin, dblYmax); } if (pSrTemp.HasZPrecision()) { pSrTemp.GetZDomain(out dblZmin, out dblZmax); pSr.SetZDomain(dblZmin, dblZmax); } if (pSrTemp.HasMPrecision()) { pSrTemp.GetMDomain(out dblMmin, out dblMmax); pSr.SetMDomain(dblMmin, dblMmax); } IFeatureDataset pFeaDs = pFeaWorkspace.CreateFeatureDataset(pDs.Name, pSr); pFcContainer = (IFeatureClassContainer)pDs; if (pFcContainer.ClassCount > 0) { for (int i = 0; i < pFcContainer.ClassCount; i++) { try { pFcTemp = pFcContainer.get_Class(i); pflds = CommonFunction.GetFieldsFormFeatureClass(pFcTemp); //若为注记 if (pFcTemp.FeatureType == esriFeatureType.esriFTAnnotation) { IFeatureWorkspaceAnno pFWSAno = pFeaWorkspace as IFeatureWorkspaceAnno; IAnnoClass pAnnoClass = pFcTemp.Extension as IAnnoClass; IGraphicsLayerScale pGLS = new GraphicsLayerScaleClass(); pGLS.ReferenceScale = pAnnoClass.ReferenceScale; pGLS.Units = pAnnoClass.ReferenceScaleUnits; pNewFc = pFWSAno.CreateAnnotationClass((pFcTemp as IDataset).Name, pflds, pFcTemp.CLSID, pFcTemp.EXTCLSID, pFcTemp.ShapeFieldName, "", pFeaDs, null, pAnnoClass.AnnoProperties, pGLS, pAnnoClass.SymbolCollection, true); (pNewFc as IClassSchemaEdit).AlterAliasName(pFcTemp.AliasName); } else//若为地理要素 { try { pNewFc = pFeaDs.CreateFeatureClass((pFcTemp as IDataset).Name, pflds, pFcTemp.CLSID, pFcTemp.EXTCLSID, pFcTemp.FeatureType, pFcTemp.ShapeFieldName, null); if (pFcTemp.AliasName == "图廓线") { int n = 0; } (pNewFc as IClassSchemaEdit).AlterAliasName(pFcTemp.AliasName); } catch (System.Exception ex) { System.Console.WriteLine(ex.Message); } } } catch (System.Exception ex) { System.Console.WriteLine(ex.Message); } } } } else if (pDs.Type == esriDatasetType.esriDTFeatureClass) { pFcTemp = (IFeatureClass)pDs; pflds = CommonFunction.GetFieldsFormFeatureClass(pFcTemp, pSr); try { pNewFc = pFeaWorkspace.CreateFeatureClass(pDs.Name, pflds, pFcTemp.CLSID, pFcTemp.EXTCLSID, pFcTemp.FeatureType, pFcTemp.ShapeFieldName, null); } catch (Exception ex) { System.Console.WriteLine(ex.Message); } } else if (pDs.Type == esriDatasetType.esriDTTable) { ITable pTable = (ITable)pDs; try { ITable pNewTable = pFeaWorkspace.CreateTable(pDs.Name, pTable.Fields, pTable.CLSID, pTable.EXTCLSID, null); } catch (Exception ex) { System.Console.WriteLine(ex.Message); } } pDs = enumDs.Next(); } }
public static void Project(IFeatureClass ifeatureClass_0, ISpatialReference ispatialReference_0, IFeatureDatasetName ifeatureDatasetName_0, string string_0, double double_0) { IWorkspace workspace = ((IDataset)ifeatureClass_0).Workspace; IFeatureDataConverter featureDataConverter = new FeatureDataConverter(); IWorkspaceName workspaceName = new WorkspaceName() as IWorkspaceName; workspaceName.ConnectionProperties = workspace.ConnectionProperties; workspaceName.WorkspaceFactoryProgID = workspace.WorkspaceFactory.GetClassID().Value.ToString(); IWorkspaceName workspaceName2 = (ifeatureDatasetName_0 as IDatasetName).WorkspaceName; IDatasetName datasetName = new FeatureClassName() as IDatasetName; string text = ifeatureClass_0.AliasName; int num = text.LastIndexOf("."); if (num != -1) { text = text.Substring(num + 1); } datasetName.Name = text; datasetName.WorkspaceName = workspaceName; IWorkspace2 workspace2 = (workspaceName2 as IName).Open() as IWorkspace2; IDatasetName datasetName2 = new FeatureClassName() as IDatasetName; datasetName2.WorkspaceName = workspaceName2; (datasetName2 as IFeatureClassName).FeatureDatasetName = (ifeatureDatasetName_0 as IDatasetName); IFieldChecker fieldChecker = new FieldChecker(); fieldChecker.ValidateWorkspace = (workspace2 as IWorkspace); string[] array = string_0.Split(new char[] { '.' }); string_0 = array[array.Length - 1] + "_Project"; string text2; fieldChecker.ValidateTableName(string_0, out text2); string text3 = text2; int num2 = 1; if (workspaceName2.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace || workspaceName2.Type == esriWorkspaceType.esriLocalDatabaseWorkspace) { while (workspace2.get_NameExists(esriDatasetType.esriDTFeatureClass, text3)) { text3 = text2 + "_" + num2.ToString(); num2++; } } else if (workspaceName2.Type == esriWorkspaceType.esriFileSystemWorkspace) { while (System.IO.File.Exists(text3 + ".shp")) { text3 = text2 + "_" + num2.ToString(); num2++; } } datasetName2.Name = text3; IFields fields = new ESRI.ArcGIS.Geodatabase.Fields() as IFields; num = ifeatureClass_0.Fields.FindField(ifeatureClass_0.ShapeFieldName); IField field = ifeatureClass_0.Fields.get_Field(num); IGeometryDef geometryDef = field.GeometryDef; ISpatialReference arg_1D9_0 = geometryDef.SpatialReference; double num3; double num4; double num5; double num6; ispatialReference_0.GetDomain(out num3, out num4, out num5, out num6); ((IGeometryDefEdit)geometryDef).GridCount_2 = 1; ((IGeometryDefEdit)geometryDef).set_GridSize(0, double_0); ((IGeometryDefEdit)geometryDef).SpatialReference_2 = ispatialReference_0; ((IFieldEdit)field).GeometryDef_2 = geometryDef; for (int i = 0; i < ifeatureClass_0.Fields.FieldCount; i++) { if (i == num) { ((IFieldsEdit)fields).AddField(field); } else { IField field2 = ifeatureClass_0.Fields.get_Field(i); ((IFieldsEdit)fields).AddField(field2); } } IEnumFieldError enumFieldError; IFields outputFields; fieldChecker.Validate(fields, out enumFieldError, out outputFields); if (SRLibCommonFunc.m_pfrm != null) { SRLibCommonFunc.m_pfrm.FeatureProgress = featureDataConverter; } try { featureDataConverter.ConvertFeatureClass((IFeatureClassName)datasetName, null, ifeatureDatasetName_0, (IFeatureClassName)datasetName2, geometryDef, outputFields, "", 1000, 0); } catch (System.Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } }
public static string FormatSpatialReference(ISpatialReference sr) { try { if (sr == null) { return ""; } StringBuilder builder = new StringBuilder(); if (sr is UnknownCoordinateSystemClass) { builder.Append("UnknownCoordinateSystem"); } else { if (sr.Name == "Unknown") { builder.Append("UnknownCoordinateSystem"); } else { IGeographicCoordinateSystem system2; if (sr is IProjectedCoordinateSystem) { Exception exception; IProjectedCoordinateSystem system = sr as IProjectedCoordinateSystem; builder.Append("投影坐标系:\n"); builder.Append(" Name:").Append(system.Name).Append("\n"); builder.Append(" Alias:").Append(system.Alias).Append("\n"); builder.Append(" Abbreviation:").Append(system.Abbreviation).Append("\n"); builder.Append(" Remarks:").Append(system.Remarks).Append("\n"); builder.Append("投影:").Append(system.Projection.Name).Append("\n"); builder.Append("投影参数:\n"); builder.Append(" False_Easting:").Append(system.FalseEasting).Append("\n"); builder.Append(" False_Northing:").Append(system.FalseNorthing).Append("\n"); builder.Append(" Central_Meridian:").Append(system.get_CentralMeridian(true)).Append("\n"); try { builder.Append(" Scale_Factor:").Append(system.ScaleFactor).Append("\n"); } catch { } builder.Append(" Latitude_Of_Origin:0\n"); builder.Append("Linear Unit:").Append(system.CoordinateUnit.Name).Append("(").Append(system.CoordinateUnit.MetersPerUnit).Append(")\n"); builder.Append("Geographic Coordinate System:\n"); system2 = system.GeographicCoordinateSystem; builder.Append(" Name:").Append(system2.Name).Append("\n"); builder.Append(" Alias:").Append(system2.Alias).Append("\n"); builder.Append(" Abbreviation:").Append(system2.Abbreviation).Append("\n"); builder.Append(" Remarks:").Append(system2.Remarks).Append("\n"); builder.Append(" Angular Unit:").Append(system2.CoordinateUnit.Name).Append("(").Append(system2.CoordinateUnit.RadiansPerUnit).Append(")\n"); builder.Append(" Prime Meridian:").Append(system2.PrimeMeridian.Name).Append("(").Append(system2.PrimeMeridian.Longitude).Append(")\n"); builder.Append(" Datum:").Append(system2.Datum.Name).Append("\n"); builder.Append(" Spheroid:").Append(system2.Datum.Spheroid.Name).Append("\n"); builder.Append(" Semimajor Axis:").Append(system2.Datum.Spheroid.SemiMajorAxis).Append("\n"); builder.Append(" Semiminor Axis:").Append(system2.Datum.Spheroid.SemiMinorAxis).Append("\n"); builder.Append(" Inverse Flattening:").Append((double)(1.0 / system2.Datum.Spheroid.Flattening)).Append("\n"); builder.Append("X/Y Domain:\n"); try { double num = 0.0; double num2 = 0.0; double num3 = 0.0; double num4 = 0.0; double num5 = 0.0; sr.GetDomain(out num, out num3, out num2, out num4); sr.GetFalseOriginAndUnits(out num, out num2, out num5); builder.Append(" Min X:").Append(num).Append("\n"); builder.Append(" Min Y:").Append(num2).Append("\n"); builder.Append(" Max X:").Append(num3).Append("\n"); builder.Append(" Max Y:").Append(num4).Append("\n"); builder.Append(" XYScale:").Append(num5).Append("\n"); builder.Append("\n"); } catch (Exception exception1) { exception = exception1; } builder.Append("Z Domain:\n"); try { double num6; double num7; double num8 = 0.0; sr.GetZDomain(out num6, out num7); sr.GetZFalseOriginAndUnits(out num6, out num8); builder.Append(" Min Z:").Append(num6).Append("\n"); builder.Append(" Max Z:").Append(num7).Append("\n"); builder.Append(" ZScale:").Append(num8).Append("\n"); builder.Append("\n"); } catch (Exception exception2) { exception = exception2; } try { double num9; double num10; builder.Append("M Domain:\n"); double num11 = 0.0; sr.GetMDomain(out num9, out num10); sr.GetMFalseOriginAndUnits(out num9, out num11); builder.Append(" Min M:").Append(num9).Append("\n"); builder.Append(" Max M:").Append(num10).Append("\n"); builder.Append(" MScale:").Append(num11).Append("\n"); } catch (Exception exception3) { exception = exception3; } } else if (sr is IGeographicCoordinateSystem) { builder.Append("Geographic Coordinate System:\n"); system2 = sr as IGeographicCoordinateSystem; builder.Append(" Name:").Append(system2.Name).Append("\n"); builder.Append(" Alias:").Append(system2.Alias).Append("\n"); builder.Append(" Abbreviation:").Append(system2.Abbreviation).Append("\n"); builder.Append(" Remarks:").Append(system2.Remarks).Append("\n"); builder.Append(" Angular Unit:").Append(system2.CoordinateUnit.Name).Append("(").Append(system2.CoordinateUnit.RadiansPerUnit).Append(")\n"); builder.Append(" Prime Meridian:").Append(system2.PrimeMeridian.Name).Append("(").Append(system2.PrimeMeridian.Longitude).Append(")\n"); builder.Append(" Datum:").Append(system2.Datum.Name).Append("\n"); builder.Append(" Spheroid:").Append(system2.Datum.Spheroid.Name).Append("\n"); builder.Append(" Semimajor Axis:").Append(system2.Datum.Spheroid.SemiMajorAxis).Append("\n"); builder.Append(" Semiminor Axis:").Append(system2.Datum.Spheroid.SemiMinorAxis).Append("\n"); builder.Append(" Inverse Flattening:").Append((double)(1.0 / system2.Datum.Spheroid.Flattening)).Append("\n"); } } } return builder.ToString(); } catch (Exception ex) { return ""; } }
public static void Project(IFeatureClass ifeatureClass_0, ISpatialReference ispatialReference_0, IWorkspace iworkspace_0, string string_0, double double_0) { string str; double num; double num1; double num2; double num3; IEnumFieldError enumFieldError; IFields field; IWorkspace workspace = ((IDataset)ifeatureClass_0).Workspace; IFeatureDataConverter featureDataConverterClass = new FeatureDataConverter(); IWorkspaceName workspaceNameClass = new WorkspaceName() as IWorkspaceName; workspaceNameClass.ConnectionProperties = workspace.ConnectionProperties; workspaceNameClass.WorkspaceFactoryProgID = workspace.WorkspaceFactory.GetClassID().Value.ToString(); IWorkspaceName connectionProperties = new WorkspaceName() as IWorkspaceName; PropertySet propertySetClass = new PropertySet(); connectionProperties.ConnectionProperties = iworkspace_0.ConnectionProperties; connectionProperties.WorkspaceFactoryProgID = iworkspace_0.WorkspaceFactory.GetClassID().Value.ToString(); IDatasetName featureClassNameClass = new FeatureClassName() as IDatasetName; string aliasName = ifeatureClass_0.AliasName; int num4 = aliasName.LastIndexOf("."); if (num4 != -1) { aliasName = aliasName.Substring(num4 + 1); } featureClassNameClass.Name = aliasName; featureClassNameClass.WorkspaceName = workspaceNameClass; IDatasetName datasetName = new FeatureClassName() as IDatasetName; { datasetName.WorkspaceName = connectionProperties; } ; IFieldChecker fieldCheckerClass = new FieldChecker() { ValidateWorkspace = iworkspace_0 }; string[] strArrays = string_0.Split(new char[] { '.' }); string_0 = string.Concat(strArrays[(int)strArrays.Length - 1], "_Project"); fieldCheckerClass.ValidateTableName(string_0, out str); string str1 = str; int num5 = 1; if ( !(iworkspace_0.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace ? false : iworkspace_0.Type != esriWorkspaceType.esriLocalDatabaseWorkspace)) { while (((IWorkspace2)iworkspace_0).NameExists[esriDatasetType.esriDTFeatureClass, str1]) { str1 = string.Concat(str, "_", num5.ToString()); num5++; } } else if (iworkspace_0.Type == esriWorkspaceType.esriFileSystemWorkspace) { while (File.Exists(string.Concat(str1, ".shp"))) { str1 = string.Concat(str, "_", num5.ToString()); num5++; } } datasetName.Name = str1; IFields fieldsClass = new ESRI.ArcGIS.Geodatabase.Fields(); num4 = ifeatureClass_0.Fields.FindField(ifeatureClass_0.ShapeFieldName); IField field1 = ifeatureClass_0.Fields.Field[num4]; IGeometryDef geometryDef = field1.GeometryDef; ISpatialReference spatialReference = geometryDef.SpatialReference; ispatialReference_0.GetDomain(out num, out num1, out num2, out num3); ((IGeometryDefEdit)geometryDef).GridCount_2 = 1; ((IGeometryDefEdit)geometryDef).GridSize_2[0] = double_0; ((IGeometryDefEdit)geometryDef).SpatialReference_2 = ispatialReference_0; ((IFieldEdit)field1).GeometryDef_2 = geometryDef; for (int i = 0; i < ifeatureClass_0.Fields.FieldCount; i++) { if (i != num4) { IField field2 = ifeatureClass_0.Fields.Field[i]; ((IFieldsEdit)fieldsClass).AddField(field2); } else { ((IFieldsEdit)fieldsClass).AddField(field1); } } fieldCheckerClass.Validate(fieldsClass, out enumFieldError, out field); if (SRLibCommonFunc.m_pfrm != null) { SRLibCommonFunc.m_pfrm.FeatureProgress = featureDataConverterClass; } try { featureDataConverterClass.ConvertFeatureClass((IFeatureClassName)featureClassNameClass, null, null, (IFeatureClassName)datasetName, geometryDef, field, "", 1000, 0); } catch (Exception exception) { MessageBox.Show(exception.Message); } }