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("导出完成!"); } } }
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("导出完成!"); } }
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) { } }