public bool Init()
        {
            if (!System.IO.File.Exists(PolylineFile))
            {
                return(false);
            }
            _polylineFeatureClass = PolylineFile.GetShpFeatureClass();
            if (_polylineFeatureClass == null)
            {
                return(false);
            }
            ISpatialReference spatialReference = SpatialReferenceManager.GetSpatialReference(_polylineFeatureClass);

            _polygonFeatureClass = FeatureClassManager.CreateFeatrueClass(PolygonFile, spatialReference, esriGeometryType.esriGeometryPolygon);
            if (_polygonFeatureClass == null)
            {
                return(false);
            }
            _index = _polygonFeatureClass.Fields.FindField("TCMC");
            if (_index > -1)
            {
                return(true);
            }
            return(false);
        }
        public bool Init()
        {
            if (!System.IO.File.Exists(PolylineFile))
            {
                _error += string.Format("文件:{0} 不存在", PolylineFile);
                return(false);
            }
            _polylineFeatureClass = PolylineFile.GetShpFeatureClass();
            if (_polylineFeatureClass == null)
            {
                _error += string.Format("无法读取文件:{0}", PolylineFile);
                return(false);
            }
            ISpatialReference spatialReference = SpatialReferenceManager.GetSpatialReference(_polylineFeatureClass);

            if (System.IO.File.Exists(PolygonFile))
            {
                System.IO.File.Delete(PolygonFile);
            }
            _polygonFeatureClass = FeatureClassManager.CreateFeatrueClass(PolygonFile, spatialReference, esriGeometryType.esriGeometryPolygon);
            if (_polygonFeatureClass == null)
            {
                _error += string.Format("创建文件:{0}  失败", PolygonFile);
                return(false);
            }
            return(true);
        }
Пример #3
0
        /// <summary>
        /// 初始化
        /// </summary>
        /// <returns></returns>
        private bool Init()
        {
            if (CADFiles == null || CADFiles.Count == 0)
            {
                _error += "CAD文件列表为空;";
                return(false);
            }
            if (System.IO.File.Exists(PolylineFile))
            {
                System.IO.File.Delete(PolylineFile);
            }
            var first        = CADFiles[0];
            var featureClass = CADManager.GetFeatureClass(first);

            if (featureClass == null)
            {
                _error += string.Format("读取到的文件:{0}  无法读取信息;", System.IO.Path.GetFileNameWithoutExtension(first));
                return(false);
            }
            ISpatialReference spatialReference = SpatialReferenceManager.GetSpatialReference(featureClass);

            _polylineFeatureClass = FeatureClassManager.CreateFeatrueClass(PolylineFile, spatialReference, esriGeometryType.esriGeometryPolyline);
            if (_polylineFeatureClass == null)
            {
                _error += string.Format("创建shapefile文件:{0}  失败!", PolylineFile);
                return(false);
            }
            _errorList = new List <string>();
            return(true);
        }
Пример #4
0
        private bool Init()
        {
            if (!System.IO.Directory.Exists(_folder))
            {
                _errors.Add(string.Format("路径:\"{0}\"不存在,请核对目录路径", _folder));
                return(false);
            }
            _files = FileManager.GetSpecialFiles(_folder, "*.txt");
            if (_files.Count == 0)
            {
                _errors.Add(string.Format("路径:\"{0}\"下不存在txt文件", _folder));
                return(false);
            }
            _files = _files.OrderBy(e => e).ToList();

            _featureClass = FeatureClassManager.CreateFeatrueClass(_saveFilePath, SpatialReferenceManager.Get40SpatialReference(), ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon);
            if (_featureClass == null)
            {
                _errors.Add("创建要素类失败!");
                return(false);
            }
            _featureClass.AddFields(new List <Models.TangField> {
                new Models.TangField {
                    Name = "FILENAME", Alias = "文件名称", Type = esriFieldType.esriFieldTypeString
                }
            });
            _featureCursor = _featureClass.Insert(true);
            return(true);
        }
 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);
 }
 private bool Init()
 {
     if (!System.IO.File.Exists(_txtFilePath))
     {
         _errors.Add(string.Format("路径:\"{0}\"文件不存在,请核对文件!", _txtFilePath));
         return(false);
     }
     if (System.IO.File.Exists(_saveFilePath))
     {
         System.IO.File.Delete(_saveFilePath);
     }
     _featureClass = FeatureClassManager.CreateFeatrueClass(_saveFilePath, SpatialReferenceManager.Get40SpatialReference(), ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon);
     if (_featureClass == null)
     {
         _errors.Add("创建要素类失败!");
         return(false);
     }
     _featureClass.AddFields(new List <Models.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);
 }
        private bool TranslatePolylineToPolygon(string inputFilePath, string SaveFilePath, string layerName)
        {
            IFeatureClass featureClass = inputFilePath.GetShpFeatureClass();

            if (featureClass == null)
            {
                return(false);
            }
            ISpatialReference spatialReference   = SpatialReferenceManager.GetSpatialReference(featureClass);
            IFeatureClass     createFeatureClass = FeatureClassManager.CreateFeatrueClass(SaveFilePath, spatialReference, esriGeometryType.esriGeometryPolygon);

            if (createFeatureClass == null)
            {
                return(false);
            }
            var index = createFeatureClass.Fields.FindField("TCMC");

            if (index > -1)
            {
                var            cursor2       = createFeatureClass.Insert(true);
                IFeatureCursor featureCursor = featureClass.Search(null, false);
                IFeature       feature       = featureCursor.NextFeature();
                while (feature != null)
                {
                    if (IsPolygon(feature))
                    {
                        var pg = GeneratePolygon(feature.ShapeCopy);
                        if (pg != null)
                        {
                            var buffer = createFeatureClass.CreateFeatureBuffer();
                            buffer.Shape = pg;
                            buffer.set_Value(index, layerName);
                            cursor2.InsertFeature(buffer);
                        }
                    }
                    feature = featureCursor.NextFeature();
                }
                cursor2.Flush();
                System.Runtime.InteropServices.Marshal.ReleaseComObject(featureCursor);
            }

            return(true);
        }
Пример #8
0
        private bool Init()
        {
            if (!System.IO.File.Exists(_txtFilePath))
            {
                _errors.Add(string.Format("路径:\"{0}\"文件不存在,请核对!", _txtFilePath));
                return(false);
            }

            if (System.IO.File.Exists(_saveFilePath))
            {
                System.IO.File.Delete(_saveFilePath);
            }
            _featureClass = FeatureClassManager.CreateFeatrueClass(_saveFilePath, SpatialReferenceManager.Get40SpatialReference(), ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon);
            if (_featureClass == null)
            {
                _errors.Add("创建要素类失败");
                return(false);
            }
            _featureCursor = _featureClass.Insert(true);
            return(true);
        }
Пример #9
0
        public bool Init()
        {
            if (!System.IO.Directory.Exists(Folder))
            {
                Error += string.Format("文件路径:{0}不存在或不正确;", Folder);
                return(false);
            }
            Files = FileManager.GetSpecialFiles(Folder, "*.shp");
            if (Files == null || Files.Count == 0)
            {
                Error += string.Format("未识别文件夹中的shapefile文件或者为空;");
                return(false);
            }
            MaxValue = Files.Count;
            var file             = Files[0];
            var basefeatureClass = ArcGISFileHelper.GetShpFeatureClass(file);

            if (basefeatureClass == null)
            {
                Error += string.Format("无法获取文件:{0};", System.IO.Path.GetFileNameWithoutExtension(file));
                return(false);
            }
            IGeoDataset geoDataset = basefeatureClass as IGeoDataset;

            FeatureClass = FeatureClassManager.CreateFeatrueClass(this.SavaFilePath, geoDataset.SpatialReference, basefeatureClass.ShapeType);
            if (FeatureClass == null)
            {
                Error += string.Format("无法生成shapefile文件,请确保程序以管理员运行;");
                return(false);
            }
            // InsertFeatureCursor = FeatureClass.Insert(true);
            Fields = new List <TangField>()
            {
                new TangField()
                {
                    Name = "TCMC", Alias = "图层名称", Type = esriFieldType.esriFieldTypeString, Index = FeatureClass.Fields.FindField("TCMC")
                }
            };
            return(true);
        }
Пример #10
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);
        }