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);
 }
Ejemplo n.º 2
0
        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)
            {
            }
        }
Ejemplo n.º 3
0
        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);
        }