private bool Init() { if (!Directory.Exists(_folder)) { _message += string.Format("目录:\"{0}\"不存在,请核对目录!", _folder); return(false); } _txtFiles = FileManager.GetSpecialFiles(_folder, "*.txt"); if (string.IsNullOrEmpty(_saveFilePath) || System.IO.File.Exists(_saveFilePath)) { _message += string.Format("保存路径:\"{0}\"不正确或者已存在文件,请核对保存路径!", _saveFilePath); return(false); } _featureClass = FeatureClassManager.CreateFeatrueClass(_saveFilePath, SpatialReferenceManager.Get40SpatialReference(), ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon); if (_featureClass == null) { _message += string.Format("创建要素类失败!"); return(false); } _featureClass.AddFields(new List <TangField> { new TangField { Name = "XMLX", Alias = "项目类型", Type = esriFieldType.esriFieldTypeString }, new TangField { Name = "BZ", Alias = "备注", Type = esriFieldType.esriFieldTypeString }, new TangField { Name = "NF", Alias = "年份", Type = esriFieldType.esriFieldTypeString }, new TangField { Name = "FILENAME", Alias = "文件名字", Type = esriFieldType.esriFieldTypeString }, new TangField { Name = "DKBH", Alias = "地块编号", Type = esriFieldType.esriFieldTypeString }, new TangField { Name = "DKMC", Alias = "地块名称", Type = esriFieldType.esriFieldTypeString }, new TangField { Name = "JLTXSX", Alias = "JLTXSX", Type = esriFieldType.esriFieldTypeString }, new TangField { Name = "TFH", Alias = "TFH", Type = esriFieldType.esriFieldTypeString }, new TangField { Name = "DKYT", Alias = "地块用途", Type = esriFieldType.esriFieldTypeString }, new TangField { Name = "DLBM", Alias = "地类编码", Type = esriFieldType.esriFieldTypeString } }); _featureCursor = FeatureClass.Insert(true); return(true); }
public void CreateFeatures() { try { IFeatureBuffer feature = FeatureClass.CreateFeatureBuffer(); IFeatureCursor cursor = FeatureClass.Insert(true); for (int i = 0; i < WidthPoints.Count; i = i + 2) { IPolygon polygon = getPolygons.BoundingPolygon(new List <IPoint> { WidthPointsMain[i], WidthPointsMain[i + 1], WidthPoints[i], WidthPoints[i + 1] }, SpatialReference); feature.Shape = polygon; cursor.InsertFeature(feature); } } catch (Exception ex) { } }
public override bool Work() { base.Work(); if (!Init()) { //System.Runtime.InteropServices.Marshal.ReleaseComObject(InsertFeatureCursor); ProgressDialog.HideDialog(); return(false); } foreach (var file in Files) { Count++; var tcmc = System.IO.Path.GetFileNameWithoutExtension(file); StepProgressor.Message = string.Format("正在分析{0},进度{1}/{2}", tcmc, Count, MaxValue); CanContinue = TrackCancel.Continue(); if (!CanContinue) { break; } var inputfeatureClass = file.GetShpFeatureClass(); if (inputfeatureClass != null) { if (FeatureClass == null) { IGeoDataset geodataset = inputfeatureClass as IGeoDataset; FeatureClass = FeatureClassManager.CreateFeatrueClass(this.SavaFilePath, geodataset.SpatialReference, inputfeatureClass.ShapeType); } if (FeatureClass != null) { CheckField(FeatureClass, inputfeatureClass); var insertfeaturecursor = FeatureClass.Insert(true); IFeatureBuffer featureBuffer = null; IFeatureCursor featureCursor = inputfeatureClass.Search(null, false); IFeature feature = featureCursor.NextFeature(); while (feature != null) { #region featureBuffer = FeatureClass.CreateFeatureBuffer(); var copy = feature.ShapeCopy; var aw = copy as IZAware; if (aw.ZAware == true) { aw.ZAware = false; } featureBuffer.Shape = copy; foreach (var field in Fields) { if (field.Name == "TCMC") { featureBuffer.set_Value(field.Index, tcmc); continue; } var a = feature.Fields.FindField(field.Name); if (a != -1) { featureBuffer.set_Value(field.Index, feature.get_Value(a)); } } try { object featureOID = insertfeaturecursor.InsertFeature(featureBuffer); insertfeaturecursor.Flush(); } catch (Exception ex) { Error += string.Format("在读取{0}时,合并错误,错误信息:{1};", tcmc, ex.Message); break; } #endregion feature = featureCursor.NextFeature(); } System.Runtime.InteropServices.Marshal.ReleaseComObject(insertfeaturecursor); System.Runtime.InteropServices.Marshal.ReleaseComObject(featureCursor); } } else { Error += string.Format("无法打开文件:{0};", tcmc); } StepProgressor.Step(); } // System.Runtime.InteropServices.Marshal.ReleaseComObject(InsertFeatureCursor); ProgressDialog.HideDialog(); return(true); }