zoukankan      html  css  js  c++  java
  • ArcEngine 导出图层(shp)

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Good_liu_simalb/archive/2010/07/21/5752967.aspx

    private void shpToolStripMenuItem_Click(object sender, EventArgs e)
            {
                SaveFileDialog dlg = new SaveFileDialog();
                if (DialogResult.OK == dlg.ShowDialog())
                {
                    string file = dlg.FileName.Substring(0, dlg.FileName.LastIndexOf('\\'));
                    if (!System.IO.Directory.Exists(file))
                    {
                        System.IO.Directory.CreateDirectory(file);
                    }
                    try
                    {
                        ILayer pLayer = axMapControl1.Map.get_Layer(0);
                        if (pLayer != null)
                        {
                            IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;
                            if (pFeatureLayer.Visible)
                            {
                                ExportFeature(pFeatureLayer.FeatureClass,dlg.FileName);
                            }
                        }
                        MessageBox.Show("导出成功");
                    }
                    catch
                    {
                        MessageBox.Show("导出失败!");
                    }
                }
            }

            private void ExportShp()
            {
                SaveFileDialog dlg = new SaveFileDialog();
                if (DialogResult.OK == dlg.ShowDialog())
                {
                    string file = dlg.FileName.Substring(0, dlg.FileName.LastIndexOf('\\'));
                    if (!System.IO.Directory.Exists(file))
                    {
                        System.IO.Directory.CreateDirectory(file);
                    }
                    try
                    {
                        ILayer pLayer = axMapControl1.Map.get_Layer(1);
                        if (pLayer != null)
                        {
                            IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;
                            if (pFeatureLayer.Visible)
                            {
                                ExportFeature(pFeatureLayer.FeatureClass, dlg.FileName);
                            }
                        }
                        MessageBox.Show("导出成功");
                    }
                    catch
                    {
                        MessageBox.Show("导出失败!");
                    }
                }
            }

            public void ExportFeature(IFeatureClass pInFeatureClass,string pPath)
            {
                // create a new Access workspace factory       
                IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
                string parentPath=pPath.Substring(0, pPath.LastIndexOf('\\'));
                string fileName= pPath.Substring(pPath.LastIndexOf('\\') + 1, pPath.Length - pPath.LastIndexOf('\\') - 1);
                IWorkspaceName pWorkspaceName = pWorkspaceFactory.Create(parentPath,fileName, null, 0);
                // Cast for IName       
                IName name = (IName)pWorkspaceName;
                //Open a reference to the access workspace through the name object       
                IWorkspace pOutWorkspace = (IWorkspace)name.Open();

                IDataset pInDataset = pInFeatureClass as IDataset;
                IFeatureClassName pInFCName = pInDataset.FullName as IFeatureClassName;
                IWorkspace pInWorkspace = pInDataset.Workspace;
                IDataset pOutDataset = pOutWorkspace as IDataset;
                IWorkspaceName pOutWorkspaceName = pOutDataset.FullName as IWorkspaceName;
                IFeatureClassName pOutFCName = new FeatureClassNameClass();
                IDatasetName pDatasetName = pOutFCName as IDatasetName;
                pDatasetName.WorkspaceName = pOutWorkspaceName;
                pDatasetName.Name = pInFeatureClass.AliasName;
                IFieldChecker pFieldChecker = new FieldCheckerClass();
                pFieldChecker.InputWorkspace = pInWorkspace;
                pFieldChecker.ValidateWorkspace = pOutWorkspace;
                IFields pFields = pInFeatureClass.Fields;
                IFields pOutFields;
                IEnumFieldError pEnumFieldError;
                pFieldChecker.Validate(pFields, out pEnumFieldError, out pOutFields);
                IFeatureDataConverter pFeatureDataConverter = new FeatureDataConverterClass();
                pFeatureDataConverter.ConvertFeatureClass(pInFCName, null, null, pOutFCName, null, pOutFields, "", 100, 0);
            }

  • 相关阅读:
    最大子数组
    链表插入排序
    链表求和
    有效回文串
    排球比赛计分系统
    超市收银系统
    三层架构
    Wpf+数据库代码封装+策略模式封装
    封装逻辑用策略模式实现
    代码封装
  • 原文地址:https://www.cnblogs.com/hl3292/p/1836165.html
Copyright © 2011-2022 走看看