예제 #1
0
        public void ToVCT(IMap pMap)
        {
            SaveFileDialog dialog = new SaveFileDialog
            {
                Filter = "VCT文件(*.vct)|*.vct"
            };

            if (dialog.ShowDialog() == DialogResult.OK)
            {
                List <IDataset> allDataset = this.GetAllDataset(pMap);
                if (allDataset.Count > 0)
                {
                    this.frm = new frmProgressBar1();
                    this.frm.progressBar1.Maximum = allDataset.Count;
                    this.frm.progressBar1.Value   = 0;
                    this.frm.Show();
                    this.frm.Text = "导出VCT";
                    VCTWrite write = new VCTWrite();
                    write.ProgressMessage += new ProgressMessageHandle(this.BatchConvertToSHP_ProgressMessage);
                    write.Step            +=
                        (new ESRI.ArcGIS.Geodatabase.IFeatureProgress_StepEventHandler(this.BatchConvertToSHP_Step));
                    write.SetFeatureClassNameEnvent +=
                        new SetFeatureClassNameEnventHandler(this.p_SetFeatureClassNameEnvent);
                    write.SetFeatureCountEnvent += new SetFeatureCountEnventHandler(this.p_SetFeatureCountEnvent);
                    for (int i = 0; i < allDataset.Count; i++)
                    {
                        write.AddDataset(allDataset[i]);
                    }
                    write.Write(dialog.FileName);
                    this.frm.Close();
                    MessageBox.Show("导出完成!");
                }
            }
        }
예제 #2
0
        public void ToShape(IMap pMap)
        {
            FolderBrowserDialog dialog = new FolderBrowserDialog();

            if (dialog.ShowDialog() == DialogResult.OK)
            {
                List <IDataset> allDataset  = this.GetAllDataset(pMap);
                Dataloaders     dataloaders = new Dataloaders();
                IPropertySet    set         = new PropertySetClass();
                set.SetProperty("DATABASE", dialog.SelectedPath);
                IWorkspaceName name = new WorkspaceNameClass
                {
                    ConnectionProperties   = set,
                    WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory"
                };
                frmProgressBar1 bar = new frmProgressBar1
                {
                    progressBar1 = { Maximum = allDataset.Count, Value = 0 }
                };
                bar.Show();
                bar.Text = "导出shapefile";
                foreach (IDataset dataset in allDataset)
                {
                    string[] strArray = dataset.Name.Split(new char[] { '.' });
                    strArray          = strArray[strArray.Length - 1].Split(new char[] { '_' });
                    bar.Caption1.Text = string.Format("导出[{0}]", strArray[0]);
                    Application.DoEvents();
                    bar.progressBar1.Value++;
                    try
                    {
                        dataloaders.ConvertData(dataset.FullName as IDatasetName, name as IName, strArray[0], null);
                    }
                    catch
                    {
                    }
                }
                bar.Close();
                MessageBox.Show("导出完成!");
            }
        }
예제 #3
0
        private void method_0()
        {
            int             featureCount = this.icoConvert_0.FeatureCount;
            GxVCTObject     parent       = this.Parent as GxVCTObject;
            frmProgressBar1 bar          = new frmProgressBar1();

            try
            {
                IFeatureLayer layer;
                IFeatureClass class2    = null;
                CoLayerType   layerType = this.icoConvert_0.XpgisLayer.LayerType;
                string        str       = "Point";
                switch (layerType)
                {
                case CoLayerType.Point:
                    str = "Point";
                    break;

                case CoLayerType.Line:
                    str = "line";
                    break;

                case CoLayerType.Region:
                    str = "Polygon";
                    break;

                case CoLayerType.Annotation:
                    str = "Text";
                    break;
                }
                ICoConvert convert = null;
                if (str != "Text")
                {
                    convert =
                        new ShapeLayerClass(
                            parent.GetTemplatePath() + @"\" + this.icoConvert_0.XpgisLayer.Name + ".shp", str,
                            this.icoConvert_0.XpgisLayer);
                }
                else
                {
                    IFieldsEdit edit = null;
                    edit = new FieldsClass();
                    foreach (ICoField field in this.icoConvert_0.XpgisLayer.Fields)
                    {
                        IFieldEdit field1 = new Field() as IFieldEdit;
                        field1.Name_2         = field.Name;
                        field1.AliasName_2    = field.AliasName;
                        field1.DefaultValue_2 = field.DefaultValue;
                        field1.Editable_2     = field.Enable;
                        IFieldEdit  edit2 = field1 as IFieldEdit;
                        CoFieldType type  = field.Type;
                        switch (type)
                        {
                        case CoFieldType.整型:
                            edit2.Type_2 = esriFieldType.esriFieldTypeInteger;
                            break;

                        case ((CoFieldType)2):
                        case ((CoFieldType)6):
                        case ((CoFieldType)7):
                            break;

                        case CoFieldType.浮点型:
                            edit2.Type_2      = esriFieldType.esriFieldTypeSingle;
                            edit2.Precision_2 = field.Precision;
                            edit2.Scale_2     = field.Length;
                            break;

                        case CoFieldType.字符型:
                            edit2.Type_2   = esriFieldType.esriFieldTypeString;
                            edit2.Length_2 = field.Length;
                            break;

                        case CoFieldType.日期型:
                            edit2.Type_2 = esriFieldType.esriFieldTypeDate;
                            break;

                        case CoFieldType.二进制:
                            edit2.Type_2 = esriFieldType.esriFieldTypeBlob;
                            break;

                        default:
                            if (type == CoFieldType.布尔型)
                            {
                                edit2.Type_2 = esriFieldType.esriFieldTypeInteger;
                            }
                            break;
                        }
                        edit.AddField(edit2);
                    }
                    class2 = this.method_2(parent.GetTemplateTextWorksoace() as IFeatureWorkspace,
                                           this.icoConvert_0.XpgisLayer.Name, esriFeatureType.esriFTAnnotation,
                                           esriGeometryType.esriGeometryPolygon, edit);
                    convert = new GeodatabaseLayerClass(class2);
                }
                ConvertHander hander = new ConvertHander();
                bar.Text = "打开数据";
                bar.Show();
                bar.progressBar1.Maximum = featureCount;
                bar.progressBar1.Value   = 0;
                bar.Caption1.Text        = "正在载入图层:" + this.icoConvert_0.XpgisLayer.AliasName + " [要素总数:" +
                                           featureCount.ToString() + "]";
                hander.Convert(this.icoConvert_0, convert, bar.progressBar1);
                string name = this.icoConvert_0.XpgisLayer.Name;
                convert.Dispose();
                if (class2 == null)
                {
                    class2 = (parent.GetTemplateShapefile() as IFeatureWorkspace).OpenFeatureClass(name);
                }
                if (class2.FeatureType == esriFeatureType.esriFTAnnotation)
                {
                    FDOGraphicsLayerClass class3 = new FDOGraphicsLayerClass
                    {
                        Cached = true
                    };
                    layer = class3;
                    layer.FeatureClass = class2;
                    layer.Name         = class2.AliasName;
                }
                else if (class2.FeatureType == esriFeatureType.esriFTDimension)
                {
                    DimensionLayerClass class4 = new DimensionLayerClass
                    {
                        Cached = true
                    };
                    layer = class4;
                    layer.FeatureClass = class2;
                    layer.Name         = class2.AliasName;
                }
                else
                {
                    FeatureLayerClass class5 = new FeatureLayerClass
                    {
                        Cached = true
                    };
                    layer = class5;
                    layer.FeatureClass = class2;
                    layer.Name         = class2.AliasName;
                }
                this.ilayer_0 = layer;
                bar.Close();
            }
            catch (Exception)
            {
            }
        }