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);
            }

  • 相关阅读:
    用户空间与内核空间,进程上下文与中断上下文[总结]【转】
    select、poll、epoll之间的区别总结[整理]【转】
    v4l2驱动文档之——streaming IO【转】
    Linux网络编程一步一步学【转】
    V4L2驱动的移植与应用(二+三)【转】
    【PHP面向对象(OOP)编程入门教程】20.PHP5接口技术(interface)
    【PHP面向对象(OOP)编程入门教程】19.抽象方法和抽象类(abstract)
    【PHP面向对象(OOP)编程入门教程】18.__call()处理调用错误
    【PHP面向对象(OOP)编程入门教程】17.克隆对象__clone()方法
    【PHP面向对象(OOP)编程入门教程】16.__toString()方法
  • 原文地址:https://www.cnblogs.com/hl3292/p/1836165.html
Copyright © 2011-2022 走看看