Ejemplo n.º 1
0
        public IFeatureClass Intsect(IFeatureClass _pFtClass, IFeatureClass _pFtOverlay, string _FilePath, string _pFileName)
        {
            IFeatureClassName pOutPut = new FeatureClassNameClass();

            pOutPut.ShapeType = _pFtClass.ShapeType;

            pOutPut.ShapeFieldName = _pFtClass.ShapeFieldName;

            pOutPut.FeatureType = esriFeatureType.esriFTSimple;

            IWorkspaceName pWsN = new WorkspaceNameClass();

            pWsN.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory";

            pWsN.PathName = _FilePath;

            IDatasetName pDatasetName = pOutPut as IDatasetName;

            pDatasetName.Name = _pFileName;

            pDatasetName.WorkspaceName = pWsN;

            IBasicGeoprocessor pBasicGeo = new BasicGeoprocessorClass();

            IFeatureClass pFeatureClass = pBasicGeo.Intersect(_pFtClass as ITable, false, _pFtOverlay as ITable, false, 0.1, pOutPut);

            return(pFeatureClass);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 打开dbf表
        /// </summary>
        /// <param name="pathName"></param>
        /// <param name="tableName"></param>
        /// <returns></returns>
        public ITable OpenDBFTable(string pathName, string tableName)
        {
            // Create the workspace name object.
            IWorkspaceName workspaceName = new WorkspaceNameClass();

            workspaceName.PathName = pathName;
            if (pathName.Contains(".gdb"))
            {
                workspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.FileGDBWorkspaceFactory";
            }
            else
            {
                workspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.shapefileworkspacefactory";
            }
            // Create the table name object.
            IDatasetName dataSetName = new TableNameClass();

            dataSetName.Name          = tableName;
            dataSetName.WorkspaceName = workspaceName;
            // Open the table.
            IName  name  = (IName)dataSetName;
            ITable table = (ITable)name.Open();

            return(table);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 相交分析,返回相交部分的要素(注意输入要素类和叠加要素类不能有空几何等问题)
        /// </summary>
        /// <param name="inClass">输入的要素类</param>
        /// <param name="overlayClass">叠加的要素类</param>
        /// <param name="outPath">保存分析结果的工作空间路径</param>
        /// <param name="outName">保存分析结果的要素类名称</param>
        /// <returns></returns>
        public static IFeatureClass Intersect(this IFeatureClass inClass, IFeatureClass overlayClass, string outPath, string outName)
        {
            var workspaceType = WorkspaceEx.GetDefaultWorkspaceType(outPath);

            if (workspaceType == EWorkspaceType.Default)
            {
                throw new Exception($"工作空间路径(outPath)不存在!{outPath} 该路径必须是已存在的mdb文件路径,或shp所在文件夹路径,或gdb文件夹路径,或sde连接字符串");
            }

            IFeatureClassName outClassName = new FeatureClassNameClass
            {
                ShapeType      = inClass.ShapeType,
                ShapeFieldName = inClass.ShapeFieldName,
                FeatureType    = esriFeatureType.esriFTSimple
            };
            IWorkspaceName workspaceName = new WorkspaceNameClass
            {
                WorkspaceFactoryProgID = workspaceType.GetDescription(1),
                PathName = outPath
            };
            IDatasetName datasetName = (IDatasetName)outClassName;

            datasetName.Name          = outName;
            datasetName.WorkspaceName = workspaceName;

            return(new BasicGeoprocessorClass().Intersect((ITable)inClass, false, (ITable)overlayClass, false, 0.01, outClassName));
        }
Ejemplo n.º 4
0
        public void SaveShpToFile(IFeatureClass pFeatureClass, string ExportFilePath, string ExportFileShortName)
        {
                        //设置导出要素类的参数
                        IFeatureClassName pOutFeatureClassName = new FeatureClassNameClass();
            IDataset pOutDataset = (IDataset)pFeatureClass;

            pOutFeatureClassName = (IFeatureClassName)pOutDataset.FullName;
                        //创建一个输出shp文件的工作空间
                        IWorkspaceFactory pShpWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
            IWorkspaceName pInWorkspaceName = new WorkspaceNameClass();

            pInWorkspaceName = pShpWorkspaceFactory.Create(ExportFilePath, ExportFileShortName, null, 0);

                        //创建一个要素类
                        IFeatureClassName pInFeatureClassName = new FeatureClassNameClass();
            IDatasetName pInDatasetClassName;

            pInDatasetClassName      = (IDatasetName)pInFeatureClassName;
            pInDatasetClassName.Name = ExportFileShortName;//作为输出参数
                        pInDatasetClassName.WorkspaceName = pInWorkspaceName;
            IFeatureDataConverter pShpToClsConverter      = new FeatureDataConverterClass();

            pShpToClsConverter.ConvertFeatureClass(pOutFeatureClassName, null, null, pInFeatureClassName, null, null, "", 1000, 0);
            MessageBox.Show("导出成功", "系统提示");
        }
 private void method_2()
 {
     if ((this.igxObject_0 != null) && (this.igxObject_0 is IGxObjectContainer))
     {
         IEnumGxObject children = (this.igxObject_0 as IGxObjectContainer).Children;
         children.Reset();
         for (IGxObject obj3 = children.Next(); obj3 != null; obj3 = children.Next())
         {
             this.iarray_0.Add(obj3.InternalObjectName);
             this.listView1.Items.Add(obj3.FullName);
         }
     }
     if (this.igxObject_1 != null)
     {
         if (this.igxObject_1 is IGxDatabase)
         {
             this.txtOutLocation.Text = this.igxObject_1.FullName;
             this.iname_1             = this.igxObject_1.InternalObjectName;
         }
         else if (this.igxObject_1 is IGxDataset)
         {
             this.txtOutLocation.Text = this.igxObject_1.FullName;
             this.iname_1             = this.igxObject_1.InternalObjectName;
         }
         else if (this.igxObject_1 is IGxFolder)
         {
             IWorkspaceName name = new WorkspaceNameClass
             {
                 WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory",
                 PathName = (this.igxObject_1.InternalObjectName as IFileName).Path
             };
             this.iname_1 = name as IName;
         }
     }
 }
Ejemplo n.º 6
0
 private void method_1()
 {
     if (this.igxObject_0 != null)
     {
         this.textEditInputFeatures.Text = this.igxObject_0.FullName;
         this.iname_0 = this.igxObject_0.InternalObjectName;
     }
     else if (this.igxObject_1 != null)
     {
         if (this.igxObject_1 is IGxDatabase)
         {
             this.txtOutLocation.Text = this.igxObject_1.FullName;
             this.iname_1             = this.igxObject_1.InternalObjectName;
         }
         else if (this.igxObject_1 is IGxDataset)
         {
             this.txtOutLocation.Text = this.igxObject_1.FullName;
             this.iname_1             = this.igxObject_1.InternalObjectName;
         }
         else if (this.igxObject_1 is IGxFolder)
         {
             IWorkspaceName name = new WorkspaceNameClass
             {
                 WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory",
                 PathName = (this.igxObject_1.InternalObjectName as IFileName).Path
             };
             this.iname_1 = name as IName;
         }
     }
 }
Ejemplo n.º 7
0
 private bool method_6(IDatasetName idatasetName_0, bool bool_2)
 {
     try
     {
         IDataset dataset = (idatasetName_0 as IName).Open() as IDataset;
         if (dataset != null)
         {
             IWorkspaceName name = new WorkspaceNameClass
             {
                 PathName = this.string_0,
                 WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory"
             };
             IWorkspace copyWorkspace = (name as IName).Open() as IWorkspace;
             dataset.Copy(idatasetName_0.Name, copyWorkspace);
             this.method_0(
                 (this.string_0 + @"\" + System.IO.Path.GetFileNameWithoutExtension(idatasetName_0.Name)) +
                 System.IO.Path.GetExtension(idatasetName_0.Name), true);
             return(true);
         }
     }
     catch (Exception exception)
     {
         MessageBox.Show(exception.Message);
     }
     return(false);
 }
Ejemplo n.º 8
0
 private void frmEditGDBConnection_Load(object sender, EventArgs e)
 {
     if (this.string_2 != null)
     {
         IWorkspaceName name = new WorkspaceNameClass
         {
             WorkspaceFactoryProgID = "esriDataSourcesGDB.SdeWorkspaceFactory",
             PathName = this.string_2
         };
         IPropertySet connectionProperties = name.ConnectionProperties;
         try
         {
             this.txtServer.Text = connectionProperties.GetProperty("SERVER") as string;
         }
         catch
         {
         }
         try
         {
             this.txtInstance.Text = connectionProperties.GetProperty("INSTANCE") as string;
         }
         catch
         {
         }
         try
         {
             this.txtDatabase.Text = connectionProperties.GetProperty("DATABASE") as string;
         }
         catch
         {
         }
         this.chkSaveUserandPsw.EditValue = false;
         try
         {
             this.txtUser.Text = connectionProperties.GetProperty("USER") as string;
             if (this.txtUser.Text.Length > 0)
             {
                 this.chkSaveUserandPsw.EditValue = true;
             }
         }
         catch
         {
         }
         try
         {
             this.txtPassword.Text = connectionProperties.GetProperty("PASSWORD") as string;
         }
         catch
         {
         }
         try
         {
             this.string_1        = connectionProperties.GetProperty("VERSION") as string;
             this.lblVersion.Text = this.string_1;
         }
         catch
         {
         }
     }
 }
Ejemplo n.º 9
0
        /// <summary>
        /// 求交,暂时未用
        /// </summary>
        /// <param name="_pFtClass"></param>
        /// <param name="_pFtOverlay"></param>
        /// <param name="_FilePath"></param>
        /// <param name="_pFileName"></param>
        /// <returns></returns>
        public IFeatureClass Intsect(IFeatureClass _pFtClass, IFeatureClass _pFtOverlay, string _FilePath, string _pFileName)
        {
            //设置输出
            IFeatureClassName pOutPut = new FeatureClassNameClass();

            pOutPut.ShapeType      = _pFtClass.ShapeType;
            pOutPut.ShapeFieldName = _pFtClass.ShapeFieldName;
            pOutPut.FeatureType    = esriFeatureType.esriFTSimple;
            //set output location and feature class name
            IWorkspaceName pWsN = new WorkspaceNameClass();

            pWsN.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory";
            pWsN.PathName = _FilePath;
            //也可以用这种方法,IName 和IDataset的用法
//             IWorkspaceFactory pWsFc = new ShapefileWorkspaceFactoryClass();
//             IWorkspace pWs = pWsFc.OpenFromFile(_FilePath,0);
//             IDataset pDataset = pWs as IDataset;
//             IWorkspaceName pWsN = pDataset.FullName as IWorkspaceName;

            IDatasetName pDatasetName = pOutPut as IDatasetName;

            pDatasetName.Name          = _pFileName;
            pDatasetName.WorkspaceName = pWsN;

            IBasicGeoprocessor pBasicGeo     = new BasicGeoprocessorClass();
            IFeatureClass      pFeatureClass = pBasicGeo.Intersect(_pFtClass as ITable, false, _pFtOverlay as ITable, false, 0.1, pOutPut);

            return(pFeatureClass);
        }
Ejemplo n.º 10
0
        private void btnSelectOutLocation_Click(object sender, EventArgs e)
        {
            frmOpenFile file = new frmOpenFile
            {
                Text = "保存位置"
            };

            file.RemoveAllFilters();
            file.AddFilter(new MyGxFilterWorkspaces(), true);
            if (file.DoModalSaveLocation() == DialogResult.OK)
            {
                IArray items = file.Items;
                if (items.Count != 0)
                {
                    this.igxObject_0 = items.get_Element(0) as IGxObject;
                    this.iname_0     = this.igxObject_0.InternalObjectName;
                    if (this.igxObject_0 is IGxDatabase)
                    {
                        this.iname_0 = this.igxObject_0.InternalObjectName;
                    }
                    else if (this.igxObject_0 is IGxFolder)
                    {
                        IWorkspaceName name = new WorkspaceNameClass
                        {
                            WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory",
                            PathName = (this.igxObject_0.InternalObjectName as IFileName).Path
                        };
                        this.iname_0 = name as IName;
                    }
                    this.txtOutLocation.Text = this.igxObject_0.FullName;
                }
            }
        }
Ejemplo n.º 11
0
        private void btnSelectWorkspace_Click(object sender, EventArgs e)
        {
            frmOpenFile file = new frmOpenFile
            {
                Text = "选择工作空间"
            };

            file.RemoveAllFilters();
            file.AddFilter(new MyGxFilterWorkspaces(), true);
            if (file.DoModalOpen() == DialogResult.OK)
            {
                IArray items = file.Items;
                if (items.Count != 0)
                {
                    IGxObject obj2 = items.get_Element(0) as IGxObject;
                    if (obj2 is IGxDatabase)
                    {
                        this.iworkspace_0 = (obj2 as IGxDatabase).Workspace;
                    }
                    else if (obj2 is IGxFolder)
                    {
                        IWorkspaceName name = new WorkspaceNameClass
                        {
                            WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory",
                            PathName = (obj2.InternalObjectName as IFileName).Path
                        };
                        this.iworkspace_0 = (name as IName).Open() as IWorkspace;
                    }
                    this.txtWorkspaceName.Text = this.iworkspace_0.PathName;
                    this.txtWorkspaceName.Tag  = this.iworkspace_0;
                }
            }
        }
Ejemplo n.º 12
0
        /// <summary>
        /// 通过路径获取工作空间
        /// </summary>
        /// <param name="eType">要打开的工作空间类别</param>
        /// <param name="path">文件或文件夹路径</param>
        /// <returns></returns>
        public static IWorkspace GetWorkspaceFromFile(string path, EWorkspaceType eType)
        {
            try
            {
                IWorkspaceName workspaceName = new WorkspaceNameClass();
                workspaceName.WorkspaceFactoryProgID = eType.GetDescription(1);
                workspaceName.PathName = path;
                IName      iName     = (IName)workspaceName;
                IWorkspace workspace = iName.Open() as IWorkspace;

                Marshal.ReleaseComObject(iName);
                Marshal.ReleaseComObject(workspaceName);
                return(workspace);
            }
            catch (Exception ex)
            {
                var msg = ex.Message;
                //判断路径长度是否符合要求(Windows默认的字符的长度限制为260,一个中文字符长度为2)(路径超长不一定出错,mdb数据会出错,shp数据不一定出错)
                if (!FileOpt.PathLengthValidate(path, out var length))
                {
                    msg += $"\r\n 可能原因为:路径长度超出限制,无法识别“{path}”的数据,请修改数据存放路径\r\n(允许路径最大长度为260,该路径长度为{length})\r\n";
                }
                throw new Exception($"打开{eType.GetDescription(2)}工作空间“{path}”出错:{msg}");
            }
        }
Ejemplo n.º 13
0
        public static IWorkspace GetWorkspace(Hashtable pPropList, string progID)
        {
            try
            {
                IPropertySet2 propertySets = new PropertySetClass();

                foreach (string paraName in pPropList.Keys)
                    propertySets.SetProperty(paraName.ToUpper(), pPropList[paraName]);

                IWorkspaceFactory wsf = new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass();
                return wsf.Open(propertySets, 0);
                return (new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass()).Open(propertySets, 0);
                IWorkspaceName2 workspaceName = new WorkspaceNameClass();
                workspaceName.ConnectionProperties = propertySets;
                // 类型库需要动态设置
                workspaceName.WorkspaceFactoryProgID = progID;

                IName pName = workspaceName as IName;
                IWorkspace workspace = pName.Open() as IWorkspace;
                //IWorkspace workspace = pName.Open() as IWorkspace;
                return workspace;
            }
            catch (Exception ex)
            {
                MessageBox.Show("SDE连接参数不正确,请和系统管理员联系!");
                return null;
            }
        }
Ejemplo n.º 14
0
        private void method_1(string string_1)
        {
            IGxObject      obj2  = new GxCadDataset();
            IGxObject      obj3  = new GxCadDrawing();
            IDatasetName   name2 = new CadDrawingNameClass();
            IWorkspaceName name  = new WorkspaceNameClass
            {
                WorkspaceFactoryProgID = "esriDataSourcesFile.CadWorkspaceFactory",
                PathName = System.IO.Path.GetDirectoryName(string_1)
            };

            name2.Name          = System.IO.Path.GetFileName(string_1);
            name2.WorkspaceName = name;
            (obj2 as IGxDataset).DatasetName = name2;
            name2 = new CadDrawingNameClass();
            name  = new WorkspaceNameClass
            {
                WorkspaceFactoryProgID = "esriDataSourcesFile.CadWorkspaceFactory",
                PathName = System.IO.Path.GetDirectoryName(string_1)
            };
            name2.Name          = System.IO.Path.GetFileName(string_1);
            name2.WorkspaceName = name;
            (obj3 as IGxDataset).DatasetName = name2;
            obj2.Attach(this, this.igxCatalog_0);
            obj3.Attach(this, this.igxCatalog_0);
        }
Ejemplo n.º 15
0
        private void btnSelectInputFeatures_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog
            {
                Filter      = "DWG文件(*.dwg)|*.dwg|DXF文件(*.dxf)|*.dxf",
                Multiselect = true
            };

            if (dialog.ShowDialog() == DialogResult.OK)
            {
                for (int i = 0; i < dialog.FileNames.Length; i++)
                {
                    IDatasetName   unk   = new CadDrawingNameClass();
                    IWorkspaceName name2 = new WorkspaceNameClass
                    {
                        WorkspaceFactoryProgID = "esriDataSourcesFile.CadWorkspaceFactory",
                        PathName = Path.GetDirectoryName(dialog.FileNames[i])
                    };
                    unk.Name          = Path.GetFileName(dialog.FileNames[i]);
                    unk.WorkspaceName = name2;
                    this.listView1.Items.Add(dialog.FileNames[i]);
                    this.iarray_0.Add(unk);
                }
            }
        }
Ejemplo n.º 16
0
        public static IWorkspace GetWorkspace(Hashtable pPropList, string progID)
        {
            try
            {
                IPropertySet2 propertySets = new PropertySetClass();

                foreach (string paraName in pPropList.Keys)
                {
                    propertySets.SetProperty(paraName.ToUpper(), pPropList[paraName]);
                }

                IWorkspaceFactory wsf = new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass();
                return(wsf.Open(propertySets, 0));

                return((new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass()).Open(propertySets, 0));

                IWorkspaceName2 workspaceName = new WorkspaceNameClass();
                workspaceName.ConnectionProperties = propertySets;
                // 类型库需要动态设置
                workspaceName.WorkspaceFactoryProgID = progID;

                IName      pName     = workspaceName as IName;
                IWorkspace workspace = pName.Open() as IWorkspace;
                //IWorkspace workspace = pName.Open() as IWorkspace;
                return(workspace);
            }
            catch (Exception ex)
            {
                MessageBox.Show("SDE连接参数不正确,请和系统管理员联系!");
                return(null);
            }
        }
Ejemplo n.º 17
0
        //"esriDataSourcesGDB.FileGDBWorkspaceFactory"
        //"esriDataSourcesFile.ShapefileWorkspaceFactory"
        //"esriDataSourcesGDB.SdeWorkspaceFactory"
        private IWorkspaceName getWorkspaceName(string WorkspaceFactoryProgID, string PathName)
        {
            IWorkspaceName workspaceName = new WorkspaceNameClass
            {
                WorkspaceFactoryProgID = WorkspaceFactoryProgID,
                PathName = PathName
            };

            return(workspaceName);
        }
Ejemplo n.º 18
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="filepath">文件路径或文件夹路径</param>
        /// <param name="type">
        /// esriDataSourcesGDB.AccessWorkspaceFactory
        //• esriDataSourcesFile.ArcInfoWorkspaceFactory
        //• esriDataSourcesFile.CadWorkspaceFactory
        //• esriDataSourcesGDB.FileGDBWorkspaceFactory
        //• esriDataSourcesOleDB.OLEDBWorkspaceFactory
        //• esriDataSourcesFile.PCCoverageWorkspaceFactory
        //• esriDataSourcesRaster.RasterWorkspaceFactory
        //• esriDataSourcesGDB.SdeWorkspaceFactory
        //• esriDataSourcesFile.ShapefileWorkspaceFactory
        //• esriDataSourcesOleDB.TextFileWorkspaceFactory
        //• esriDataSourcesFile.TinWorkspaceFactory
        //• esriDataSourcesFile.VpfWorkspaceFactory
        /// </param>
        /// <returns></returns>
        public IWorkspace getWorkspace(string filepath, string type)
        {
            IWorkspaceName pWorkspaceName = new WorkspaceNameClass();

            pWorkspaceName.WorkspaceFactoryProgID = type;
            pWorkspaceName.PathName = filepath;
            IName      pName      = pWorkspaceName as IName;
            IWorkspace pWorkspace = pName.Open() as IWorkspace;

            return(pWorkspace);
        }
Ejemplo n.º 19
0
        /// <summary>
        /// Opens a shapefile workspace and set the Workspace property to the opened workspace.
        /// </summary>
        /// <param name="szShapeFilePath">A path to a directory containing shapefiles.</param>
        /// <returns>IWorkspace interface to opened workspace.</returns>
        internal static IWorkspace OpenShapeFileWorkspace(string szShapeFilePath)
        {
            IWorkspaceName pWSName = new WorkspaceNameClass();

            pWSName.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory";
            pWSName.PathName = szShapeFilePath;

            IName pName = (IName)pWSName;

            return(pName.Open() as IWorkspace);
        }
Ejemplo n.º 20
0
        private void btnSelectOut_Click(object sender, EventArgs e)
        {
            frmOpenFile file = new frmOpenFile
            {
                Text = "保存位置"
            };

            file.RemoveAllFilters();
            file.AddFilter(new MyGxFilterWorkspaces(), true);
            file.AddFilter(new MyGxFilterFeatureDatasets(), false);
            if (file.DoModalSaveLocation() == DialogResult.OK)
            {
                IArray items = file.Items;
                if (items.Count != 0)
                {
                    this.igxObject_0 = items.get_Element(0) as IGxObject;
                    this.iname_0     = this.igxObject_0.InternalObjectName;
                    if (this.igxObject_0 is IGxDatabase)
                    {
                        this.iname_0       = this.igxObject_0.InternalObjectName;
                        this.iworkspace_0  = this.iname_0.Open() as IWorkspace;
                        this.btnSR.Enabled = true;
                    }
                    else if (this.igxObject_0 is IGxFolder)
                    {
                        IWorkspaceName name = new WorkspaceNameClass
                        {
                            WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory",
                            PathName = (this.igxObject_0.InternalObjectName as IFileName).Path
                        };
                        this.iname_0       = name as IName;
                        this.iworkspace_0  = this.iname_0.Open() as IWorkspace;
                        this.btnSR.Enabled = true;
                    }
                    else if (this.igxObject_0 is IGxDataset)
                    {
                        IDatasetName internalObjectName = this.igxObject_0.InternalObjectName as IDatasetName;
                        if (internalObjectName.Type != esriDatasetType.esriDTFeatureDataset)
                        {
                            return;
                        }
                        this.iname_0       = internalObjectName as IName;
                        this.btnSR.Enabled = false;
                        IGeoDataset dataset = (internalObjectName as IName).Open() as IGeoDataset;
                        this.iworkspace_0        = (dataset as IDataset).Workspace;
                        this.ispatialReference_0 = dataset.SpatialReference;
                        this.txtOutSR.Text       = this.ispatialReference_0.Name;
                    }
                    this.txtOutFeat.Text = this.igxObject_0.FullName;
                }
            }
        }
Ejemplo n.º 21
0
        public static IFeatureClassName GetFeatureClassName(IFeatureClass pfc)
        {
            IDataset pDS = pfc as IDataset;

            IWorkspaceName workspaceName = new WorkspaceNameClass();
            workspaceName = pDS.FullName as IWorkspaceName;

            IFeatureClassName featureClassName = new FeatureClassNameClass();
            IDatasetName datasetName = (IDatasetName)featureClassName;
            datasetName.Name = pDS.Name;
            datasetName.WorkspaceName = workspaceName;
            return featureClassName;
        }
Ejemplo n.º 22
0
        private static IWorkspace GetWorkspace(string progId, string path, string connection)
        {
            // Create a name object for the dataset.
            IWorkspaceName2 workspaceName = new WorkspaceNameClass
            {
                WorkspaceFactoryProgID = progId,
                PathName = path,
                //ConnectionString = connection
            };
            IName      workspaceIName = (IName)workspaceName;
            IWorkspace workspace      = (IWorkspace)workspaceIName.Open();

            return(workspace);
        }
Ejemplo n.º 23
0
        /// <summary>
        /// Gets the workspace name reference for the PGDB file specified.
        /// </summary>
        /// <param name="pgdbFile">The PGDB file.</param>
        /// <returns>Workspace name reference</returns>
        public static IWorkspaceName GetPGDBWorkspaceName(string pgdbFile)
        {
            if (string.IsNullOrEmpty(pgdbFile))
            {
                throw new ArgumentException("A valid PGDB file name [pgdbFile] is required.");
            }

            IWorkspaceName workspaceName = new WorkspaceNameClass();

            workspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.AccessWorkspaceFactory";
            workspaceName.PathName = pgdbFile;

            return(workspaceName);
        }
Ejemplo n.º 24
0
 /// <summary>
 /// 通过连接字符串获取工作空间,连接字符串参考:
 /// <para>①sde: SERVER=ditu.test.com;INSTANCE=5151;DATABASE=sde_test;USER=sa;PASSWORD=sa;VERSION=dbo.DEFAULT</para>
 /// <para>②sql: server=localhost;uid=sa;pwd=sa;database=myDatabase</para>
 /// <para>③oleDb: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=x:\xxx.mdb;User Id=admin;Password=xxx;</para>
 /// </summary>
 /// <param name="eType">要打开的工作空间类别</param>
 /// <param name="connnectString">连接字符串</param>
 /// <returns></returns>
 public static IWorkspace GetWorksapceFromConnStr(string connnectString, EWorkspaceType eType)
 {
     try
     {
         IWorkspaceName workspaceName = new WorkspaceNameClass();
         workspaceName.WorkspaceFactoryProgID = eType.GetDescription(1);
         workspaceName.ConnectionProperties   = ConnectStringToPropetySet(connnectString);
         IName iName = (IName)workspaceName;
         return(iName.Open() as IWorkspace);
     }
     catch (Exception ex)
     {
         throw new Exception($"打开{eType.GetDescription(2)}工作空间“{connnectString}”出错:{ex.Message}");
     }
 }
Ejemplo n.º 25
0
 /// <summary>
 /// 通过路径获取工作空间
 /// </summary>
 /// <param name="eType">要打开的工作空间类别</param>
 /// <param name="path">文件或文件夹路径</param>
 /// <returns></returns>
 public static IWorkspace GetWorkspaceFromFile(string path, EWorkspaceType eType)
 {
     try
     {
         IWorkspaceName workspaceName = new WorkspaceNameClass();
         workspaceName.WorkspaceFactoryProgID = eType.GetDescription(1);
         workspaceName.PathName = path;
         IName iName = (IName)workspaceName;
         return(iName.Open() as IWorkspace);
     }
     catch (Exception ex)
     {
         throw new Exception($"打开{eType.GetDescription(2)}工作空间“{path}”出错:{ex.Message}");
     }
 }
Ejemplo n.º 26
0
        /// <summary>
        /// 获取矢量对象
        /// </summary>
        /// <param name="WorkspaceFactoryProgID">
        ///
        /// esriDataSourcesGDB.AccessWorkspaceFactory
        /// esriDataSourcesFile.ArcInfoWorkspaceFactory
        /// esriDataSourcesFile.CadWorkspaceFactory
        /// esriDataSourcesGDB.FileGDBWorkspaceFactory
        /// esriDataSourcesOleDB.OLEDBWorkspaceFactory
        /// esriDataSourcesFile.PCCoverageWorkspaceFactory
        /// esriDataSourcesRaster.RasterWorkspaceFactory
        /// esriDataSourcesGDB.SdeWorkspaceFactory
        /// esriDataSourcesFile.ShapefileWorkspaceFactory
        /// esriDataSourcesOleDB.TextFileWorkspaceFactory
        /// esriDataSourcesFile.TinWorkspaceFactory
        /// esriDataSourcesFile.VpfWorkspaceFactory
        ///
        /// </param>
        /// <param name="GDBPath"></param>
        /// <param name="featureClassName"></param>
        /// <returns></returns>
        private IFeatureClass getFeatureClass(string WorkspaceFactoryProgID, string path, string featureClassName)
        {
            IWorkspaceName workspaceName = new WorkspaceNameClass
            {
                WorkspaceFactoryProgID = WorkspaceFactoryProgID,
                PathName = path
            };

            IName      workspaceIName = (IName)workspaceName;
            IWorkspace workspace      = (IWorkspace)workspaceIName.Open();

            IFeatureClass featureClass = (workspace as IFeatureWorkspace).OpenFeatureClass(featureClassName);

            return(featureClass);
        }
Ejemplo n.º 27
0
        public static IFeatureClassName GetFeatureClassName(IFeatureClass pfc)
        {
            IDataset pDS = pfc as IDataset;

            IWorkspaceName workspaceName = new WorkspaceNameClass();

            workspaceName = pDS.FullName as IWorkspaceName;

            IFeatureClassName featureClassName = new FeatureClassNameClass();
            IDatasetName      datasetName      = (IDatasetName)featureClassName;

            datasetName.Name          = pDS.Name;
            datasetName.WorkspaceName = workspaceName;
            return(featureClassName);
        }
Ejemplo n.º 28
0
        public bool Do()
        {
            string path = this.txtOutGDB.Text.Trim();

            if (path.Length == 0)
            {
                MessageBox.Show("请选择导出位置!");
                return(false);
            }
            if (!(Path.GetExtension(path).ToLower() == ".mdb"))
            {
                MessageBox.Show("请选择正确的导出位置!");
                return(false);
            }
            if (!File.Exists(path))
            {
                IWorkspaceFactory factory = new AccessWorkspaceFactory();
                try
                {
                    IWorkspaceName name = factory.Create(Path.GetDirectoryName(path),
                                                         Path.GetFileNameWithoutExtension(path), null, 0);
                    this.txtOutGDB.Tag = name;
                    goto Label_00EC;
                }
                catch (Exception exception)
                {
                    MessageBox.Show(exception.ToString());
                    return(false);
                }
            }
            IWorkspaceName name2 = new WorkspaceNameClass
            {
                WorkspaceFactoryProgID = "esriDataSourcesGDB.AccessWorkspaceFactory",
                PathName = path
            };
            IWorkspace workspace = (name2 as IName).Open() as IWorkspace;

            if (!this.method_2(workspace, ExtractionDataHelper.m_pHelper.EnumName))
            {
                return(false);
            }
            this.txtOutGDB.Tag = name2;
Label_00EC:
            ExtractionDataHelper.m_pHelper.ReuseSchema           = this.chkResueSchema.Checked;
            ExtractionDataHelper.m_pHelper.CheckOnlySchema       = this.rdoType.SelectedIndex == 1;
            ExtractionDataHelper.m_pHelper.CheckoutWorkspaceName = this.txtOutGDB.Tag as IWorkspaceName;
            return(true);
        }
Ejemplo n.º 29
0
 private void btnSelectOutLocation_Click(object sender, EventArgs e)
 {
     try
     {
         this.frmOpenFile_0.Text = "保存位置";
         this.frmOpenFile_0.RemoveAllFilters();
         this.frmOpenFile_0.AddFilter(new MyGxFilterWorkspaces(), true);
         this.frmOpenFile_0.AddFilter(new MyGxFilterFeatureDatasets(), false);
         if (this.frmOpenFile_0.DoModalSaveLocation() == DialogResult.OK)
         {
             IArray items = this.frmOpenFile_0.Items;
             if (items.Count != 0)
             {
                 this.igxObject_1 = items.get_Element(0) as IGxObject;
                 this.iname_1     = this.igxObject_1.InternalObjectName;
                 if (this.igxObject_1 is IGxDatabase)
                 {
                     this.iname_1 = this.igxObject_1.InternalObjectName;
                 }
                 else if (this.igxObject_1 is IGxFolder)
                 {
                     IWorkspaceName name = new WorkspaceNameClass
                     {
                         WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory",
                         PathName = (this.igxObject_1.InternalObjectName as IFileName).Path
                     };
                     this.iname_1 = name as IName;
                 }
                 else if (this.igxObject_1 is IGxDataset)
                 {
                     IDatasetName internalObjectName = this.igxObject_1.InternalObjectName as IDatasetName;
                     if (internalObjectName.Type == esriDatasetType.esriDTFeatureDataset)
                     {
                         this.iname_1 = internalObjectName as IName;
                     }
                     else
                     {
                         return;
                     }
                 }
                 this.txtOutLocation.Text = this.igxObject_1.FullName;
             }
         }
     }
     catch (Exception)
     {
     }
 }
Ejemplo n.º 30
0
        public static IWorkspaceName OpenVpfWorkspaceName(string VpfFilePath)
        {
            IWorkspaceName pWorkspaceName = new WorkspaceNameClass
            {
                WorkspaceFactoryProgID = "esriDataSourcesFile.VpfWorkspaceFactory"
            };

            try
            {
                pWorkspaceName.PathName = VpfFilePath;
            }
            catch (Exception ex)
            {
                LOG.Error(ex);
            }
            return(pWorkspaceName);
        }
Ejemplo n.º 31
0
        private void btnSelectInputFeatures_Click(object sender, EventArgs e)
        {
            frmOpenFile file = new frmOpenFile();

            file.AddFilter(new MyGxFilterFeatureClasses(), true);
            if (file.DoModalSave() == DialogResult.OK)
            {
                IArray items = file.Items;
                if (items.Count != 0)
                {
                    System.Windows.Forms.Cursor.Current = Cursors.WaitCursor;
                    try
                    {
                        IWorkspaceName name     = null;
                        IGxObject      obj2     = items.get_Element(0) as IGxObject;
                        string         str      = "";
                        string         fullName = "";
                        if (obj2 is IGxDatabase)
                        {
                            BufferHelper.m_BufferHelper.m_pOutFeatureWorksapce =
                                (obj2 as IGxDatabase).Workspace as IFeatureWorkspace;
                            fullName = obj2.FullName;
                        }
                        else if (obj2 is IGxFolder)
                        {
                            name = new WorkspaceNameClass
                            {
                                WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory",
                                PathName = (obj2.InternalObjectName as IFileName).Path
                            };
                            BufferHelper.m_BufferHelper.m_pOutFeatureWorksapce =
                                (name as IName).Open() as IFeatureWorkspace;
                            fullName = (obj2.InternalObjectName as IFileName).Path;
                            str      = ".shp";
                        }
                        BufferHelper.m_BufferHelper.m_FeatClassName = file.SaveName;
                        this.txtOutName.Text = fullName + @"\" + file.SaveName + str;
                    }
                    catch (Exception exception)
                    {
                        CErrorLog.writeErrorLog(null, exception, "");
                    }
                    System.Windows.Forms.Cursor.Current = Cursors.Default;
                }
            }
        }
Ejemplo n.º 32
0
        //通过IName获取到CadDrawingDataset
        private static ICadDrawingDataset GetCadDataset(string cadWorkspacePath, string cadFileName)
        {
            //Create a WorkspaceName object
            IWorkspaceName workspaceName = new WorkspaceNameClass();

            workspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.CadWorkspaceFactory";
            workspaceName.PathName = cadWorkspacePath;

            //Create a CadDrawingName object
            IDatasetName cadDatasetName = new CadDrawingNameClass();

            cadDatasetName.Name          = cadFileName;
            cadDatasetName.WorkspaceName = workspaceName;

            //Open the CAD drawing
            ESRI.ArcGIS.esriSystem.IName name = (ESRI.ArcGIS.esriSystem.IName)cadDatasetName;
            return((ICadDrawingDataset)name.Open());
        }
Ejemplo n.º 33
0
        public static ITable LoadTable(string tblpath,string tblname)
        {
            ITable tbl = null;

            // Create workspace name object.
            IWorkspaceName wsName = new WorkspaceNameClass();
            wsName.PathName = tblpath;
            wsName.WorkspaceFactoryProgID = "esriDataSourcesFile.shapefileworkspacefactory";
            // Create dataset name object.
            IDatasetName dsetName = new TableNameClass();
            dsetName.Name = tblname;
            dsetName.WorkspaceName = wsName;
            // Open the table
            IName name = dsetName as IName;
            tbl = name.Open() as ITable;

            return tbl;
        }
Ejemplo n.º 34
0
        public static IFeatureClass LoadShapefile(string shapepath,string shapename)
        {
            IFeatureClass feacls=null;

            // Create workspace name object
            IWorkspaceName wsName=new WorkspaceNameClass();
            wsName.PathName=shapepath;
            wsName.WorkspaceFactoryProgID="esriDataSourcesFile.shapefileworkspacefactory";
            // Create dataset name object
            IDatasetName dsname=new FeatureClassNameClass();
            dsname.Name=shapename;
            dsname.WorkspaceName = wsName;
            // Open shapfile
            IName name = dsname as IName;
            feacls = name.Open() as IFeatureClass;

            return feacls;
        }
Ejemplo n.º 35
0
        public static void TranferBetweenGeodatabase(string featureClass, string targetPath, string sourcePath)
        {
            // Create new workspace name objects.
            IWorkspaceName sourceWorkspaceName = new WorkspaceNameClass();
            IWorkspaceName targetWorkspaceName = new WorkspaceNameClass();
            IName targetName = (IName)targetWorkspaceName;

            // Set the workspace name properties.
            sourceWorkspaceName.PathName = @sourcePath;//"C:\arcgis\ArcTutor\BuildingaGeodatabase\Montgomery.gdb";
            sourceWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.FileGDBWorkspaceFactory";
            targetWorkspaceName.PathName = @targetPath;//"PartialMontgomery.gdb";
            targetWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.FileGDBWorkspaceFactory";

            // Create a name object for the source feature class.
            IFeatureClassName featureClassName = new FeatureClassNameClass();

            // Set the featureClassName properties.
            IDatasetName sourceDatasetName = (IDatasetName)featureClassName;
            sourceDatasetName.WorkspaceName = sourceWorkspaceName;
            sourceDatasetName.Name = featureClass;//"Blocks";
            IName sourceName = (IName)sourceDatasetName;

            // Create an enumerator for source datasets.
            IEnumName sourceEnumName = new NamesEnumeratorClass();
            IEnumNameEdit sourceEnumNameEdit = (IEnumNameEdit)sourceEnumName;

            // Add the name object for the source class to the enumerator.
            sourceEnumNameEdit.Add(sourceName);

            // Create a GeoDBDataTransfer object and a null name mapping enumerator.
            IGeoDBDataTransfer geoDBDataTransfer = new GeoDBDataTransferClass();
            IEnumNameMapping enumNameMapping = null;

            // Use the data transfer object to create a name mapping enumerator.
            Boolean conflictsFound = geoDBDataTransfer.GenerateNameMapping(sourceEnumName,
              targetName, out enumNameMapping);
            enumNameMapping.Reset();

            // Check for conflicts.
            if (conflictsFound)
            {
                // Iterate through each name mapping.
                INameMapping nameMapping = null;
                while ((nameMapping = enumNameMapping.Next()) != null)
                {
                    // Resolve the mapping's conflict (if there is one).
                    if (nameMapping.NameConflicts)
                    {
                        nameMapping.TargetName = nameMapping.GetSuggestedName(targetName);
                    }

                    // See if the mapping's children have conflicts.
                    IEnumNameMapping childEnumNameMapping = nameMapping.Children;
                    if (childEnumNameMapping != null)
                    {
                        childEnumNameMapping.Reset();

                        // Iterate through each child mapping.
                        INameMapping childNameMapping = null;
                        while ((childNameMapping = childEnumNameMapping.Next()) != null)
                        {
                            if (childNameMapping.NameConflicts)
                            {
                                childNameMapping.TargetName = childNameMapping.GetSuggestedName
                                  (targetName);
                            }
                        }
                    }
                }
            }

            // Start the transfer.
            geoDBDataTransfer.Transfer(enumNameMapping, targetName);
        }
Ejemplo n.º 36
0
        public IFeatureClass Intsect(IFeatureClass _pFtClass,IFeatureClass _pFtOverlay,string _FilePath,string _pFileName)
        {
            IFeatureClassName pOutPut = new FeatureClassNameClass();

               pOutPut.ShapeType = _pFtClass.ShapeType;

               pOutPut.ShapeFieldName = _pFtClass.ShapeFieldName;

               pOutPut.FeatureType = esriFeatureType.esriFTSimple;

               //set output location and feature class name

              IWorkspaceName pWsN = new WorkspaceNameClass();

              pWsN.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory";

              pWsN.PathName = _FilePath;

               //也可以用这种方法,IName 和IDataset的用法

              /* IWorkspaceFactory pWsFc = new ShapefileWorkspaceFactoryClass();

             IWorkspace pWs = pWsFc.OpenFromFile(_FilePath, 0);

             IDataset pDataset = pWs as IDataset;

             IWorkspaceName pWsN = pDataset.FullName as IWorkspaceName;
              */

               IDatasetName pDatasetName = pOutPut as IDatasetName;

               pDatasetName.Name = _pFileName;

               pDatasetName.WorkspaceName =pWsN;

               IBasicGeoprocessor pBasicGeo = new BasicGeoprocessorClass();

               IFeatureClass pFeatureClass = pBasicGeo.Intersect(_pFtClass as ITable , false, _pFtOverlay as ITable , false, 0.1, pOutPut);

               return pFeatureClass;
        }
Ejemplo n.º 37
0
        public IWorkspace Get_Workspace(string _pWorkspacePath)
        {
            IWorkspaceName pWorkspaceName = new WorkspaceNameClass();

            pWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.AccessWorkspaceFactory";

            pWorkspaceName.PathName = _pWorkspacePath;

            IName pName = pWorkspaceName as IName;

            IWorkspace pWorkspace = pName.Open() as IWorkspace;

            return pWorkspace;
        }
Ejemplo n.º 38
0
        public void OutPut(AxMapControl pMapControl, String Path,String Name)
        {
            // set output featureclass name and shape type
            IFeatureClassName pOutName;

            pOutName = new FeatureClassNameClass();

            pOutName.FeatureType = esriFeatureType.esriFTSimple;

            pOutName.ShapeFieldName = "Shape";

            pOutName.ShapeType = this.pFeatureClass1.ShapeType;

            //set output location and feature class name

            IWorkspaceName pWsN;

            pWsN = new WorkspaceNameClass();

            pWsN.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory";

            //IWorkspaceFactory pWFC;����Factoryʵ�֣�����Щ�����Ĺ�ϵ���е�ģ����

               // pWFC = new WorkspaceFactoryClass();

               // pWsN = pWFC.Create(Path, "Test", null, 0);

               // IFeatureWorkspace pShape;

            pWsN.PathName = Path;

            IDatasetName pDN;

            pDN = pOutName as IDatasetName;

            pDN.Name = Name;

            pDN.WorkspaceName = pWsN;
            //set tolerence

            double tol = 0.1;

            IBasicGeoprocessor pBGP;

            pBGP = new BasicGeoprocessorClass();

            pBGP.SpatialReference = pMapControl.Map.SpatialReference;

            IFeatureClass pOutClass;

            pOutClass = pBGP.Intersect(this.pTable1, false, this.pTable2, false, tol, pOutName);

               // pOutClass = pBGP.Union(this.pTable1, false, this.pTable2, false, tol, pOutName);

              // pOutClass= pBGP.Clip(this.pTable1, false, this.pTable2, false, tol, pOutName);

              /*  IArray pArry;

            pArry = new ArrayClass();

            pArry.Add(pTable1);

            pArry.Add(this.pTable2);
            pOutClass = pBGP.Merge(pArry, this.pTable1, pOutName);
               */

            //ITable pToutTable;

              //  pToutTable = new TableClass();

            //IField  pField;

               // pField =pFeatureLayer1 .FeatureClass .Fields .get_Field (pFeatureClass1 .FindField ("name"));

            IFeatureLayer pOutLayer;

            pOutLayer = new FeatureLayerClass();

            pOutLayer.FeatureClass = pOutClass;

            pOutLayer.Name = pOutClass.AliasName;

            pMapControl.AddLayer(pOutLayer);
        }
Ejemplo n.º 39
0
        public IFeatureClass Intsect(IFeatureClass _pFtClass, IFeatureClass _pFtOverlay, string _FilePath, string _pFileName)
        {
            IFeatureClassName pOutPut = new FeatureClassNameClass();

            pOutPut.ShapeType = _pFtClass.ShapeType;

            pOutPut.ShapeFieldName = _pFtClass.ShapeFieldName;

            pOutPut.FeatureType = esriFeatureType.esriFTSimple;

            IWorkspaceName pWsN = new WorkspaceNameClass();

            pWsN.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory";

            pWsN.PathName = _FilePath;

            IDatasetName pDatasetName = pOutPut as IDatasetName;

            pDatasetName.Name = _pFileName;

            pDatasetName.WorkspaceName = pWsN;

            IBasicGeoprocessor pBasicGeo = new BasicGeoprocessorClass();

            IFeatureClass pFeatureClass = pBasicGeo.Intersect(_pFtClass as ITable, false, _pFtOverlay as ITable, false, 0.1, pOutPut);

            return pFeatureClass;
        }
Ejemplo n.º 40
0
        //internal void ExportFeatureClassToShp(ESRI.ArcGIS.Geodatabase.IFeatureClass pFeatureClass, string strFullPath, string filePath)
        //{
        //    //throw new NotImplementedException();
        public void ExportFeatureClassToShp(IFeatureClass apFeatureClass, string ExportShapeFileName, string ExportFilePath)
        {
            if (apFeatureClass == null)
            {
                MessageBox.Show("请选择", "系统提示");
                return;
            }
            if (ExportShapeFileName == "")
                return;

            string ExportFileShortName = System.IO.Path.GetFileNameWithoutExtension(ExportShapeFileName);
            ExportFilePath = System.IO.Path.GetDirectoryName(ExportShapeFileName);
            shpPath = ExportFilePath + "\\" + ExportFileShortName + "\\" + ExportFileShortName + ".shp";
            //设置导出要素类的参数
            IFeatureClassName pOutFeatureClassName = new FeatureClassNameClass();
            IDataset pOutDataset = (IDataset)apFeatureClass;
            pOutFeatureClassName = (IFeatureClassName)pOutDataset.FullName;
            //创建一个输出shp文件的工作空间
            IWorkspaceFactory pShpWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
            IWorkspaceName pInWorkspaceName = new WorkspaceNameClass();
            pInWorkspaceName = pShpWorkspaceFactory.Create(ExportFilePath, ExportFileShortName, null, 0);

            //创建一个要素集合
            IFeatureDatasetName pInFeatureDatasetName = null;
            //创建一个要素类
            IFeatureClassName pInFeatureClassName = new FeatureClassNameClass();
            IDatasetName pInDatasetClassName;
            pInDatasetClassName = (IDatasetName)pInFeatureClassName;
            pInDatasetClassName.Name = ExportFileShortName;//作为输出参数
            pInDatasetClassName.WorkspaceName = pInWorkspaceName;
            //通过FIELDCHECKER检查字段的合法性,为输出SHP获得字段集合
            long iCounter;
            IFields pOutFields, pInFields;
            IFieldChecker pFieldChecker;
            IField pGeoField;
            IEnumFieldError pEnumFieldError = null;
            pInFields = apFeatureClass.Fields;
            pFieldChecker = new FieldChecker();
            pFieldChecker.Validate(pInFields, out pEnumFieldError, out pOutFields);
            //通过循环查找几何字段
            pGeoField = null;
            for (iCounter = 0; iCounter < pOutFields.FieldCount; iCounter++)
            {
                if (pOutFields.get_Field((int)iCounter).Type == esriFieldType.esriFieldTypeGeometry)
                {
                    pGeoField = pOutFields.get_Field((int)iCounter);
                    break;
                }
            }

            //得到几何字段的几何定义
            IGeometryDef pOutGeometryDef;
            IGeometryDefEdit pOutGeometryDefEdit;
            pOutGeometryDef = pGeoField.GeometryDef;
            //设置几何字段的空间参考和网格
            pOutGeometryDefEdit = (IGeometryDefEdit)pOutGeometryDef;
            pOutGeometryDefEdit.GridCount_2 = 1;
            pOutGeometryDefEdit.set_GridSize(0, 1500000);
            try
            {
                //开始导入
                IFeatureDataConverter pShpToClsConverter = new FeatureDataConverterClass();
                //pShpToClsConverter.ConvertFeatureClass(pOutFeatureClassName, null, pInFeatureDatasetName, pInFeatureClassName, pOutGeometryDef, pOutFields, "", 1000, 0);
                pShpToClsConverter.ConvertFeatureClass(pOutFeatureClassName, null, pInFeatureDatasetName, pInFeatureClassName, pOutGeometryDef, pOutFields, "", 1000, 0);
                MessageBox.Show("导出成功", "系统提示");
            }
            catch (Exception ex)
            {
                MessageBox.Show("the following exception occurred:" + ex.ToString());
            }
        }
Ejemplo n.º 41
0
        /// <summary>
        /// 要素类转Shape
        /// </summary>
        /// <param name="apFeatureClass"></param>
        private void ExportFeatureClassToConTempShp(IFeatureClass apFeatureClass)
        {
            if (Directory.Exists(System.Windows.Forms.Application.StartupPath + "\\Convert\\DWGConvert\\ConTempShp"))
            {
                Directory.Delete(System.Windows.Forms.Application.StartupPath + "\\Convert\\DWGConvert\\ConTempShp", true);
            }

            //设置导出要素类的参数
            IFeatureClassName pOutFeatureClassName = new FeatureClassNameClass();
            IDataset pOutDataset = (IDataset)apFeatureClass;
            pOutFeatureClassName = (IFeatureClassName)pOutDataset.FullName;
            //创建一个输出shp文件的工作空间
            IWorkspaceFactory pShpWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
            IWorkspaceName pInWorkspaceName = new WorkspaceNameClass();
            pInWorkspaceName = pShpWorkspaceFactory.Create(System.Windows.Forms.Application.StartupPath + "\\Convert\\DWGConvert", "ConTempShp", null, 0);

            //创建一个要素集合
            IFeatureDatasetName pInFeatureDatasetName = null;
            //创建一个要素类
            IFeatureClassName pInFeatureClassName = new FeatureClassNameClass();
            IDatasetName pInDatasetClassName;
            pInDatasetClassName = (IDatasetName)pInFeatureClassName;
            pInDatasetClassName.Name = "ConTempShp";//作为输出参数
            pInDatasetClassName.WorkspaceName = pInWorkspaceName;
            //通过FIELDCHECKER检查字段的合法性,为输出SHP获得字段集合
            long iCounter;
            IFields pOutFields, pInFields;
            IFieldChecker pFieldChecker;
            IField pGeoField;
            IEnumFieldError pEnumFieldError = null;
            pInFields = apFeatureClass.Fields;
            pFieldChecker = new FieldChecker();
            pFieldChecker.Validate(pInFields, out pEnumFieldError, out pOutFields);
            //通过循环查找几何字段
            pGeoField = null;
            for (iCounter = 0; iCounter < pOutFields.FieldCount; iCounter++)
            {
                if (pOutFields.get_Field((int)iCounter).Type == esriFieldType.esriFieldTypeGeometry)
                {
                    pGeoField = pOutFields.get_Field((int)iCounter);
                    break;
                }
            }
            //得到几何字段的几何定义
            IGeometryDef pOutGeometryDef;
            IGeometryDefEdit pOutGeometryDefEdit;
            pOutGeometryDef = pGeoField.GeometryDef;

            //设置几何字段的空间参考和网格
            pOutGeometryDefEdit = (IGeometryDefEdit)pOutGeometryDef;
            pOutGeometryDefEdit.GridCount_2 = 1;
            pOutGeometryDefEdit.set_GridSize(0, 1500000);

            //try
            //{
                IFeatureDataConverter pShpToClsConverter = new FeatureDataConverterClass();
                pShpToClsConverter.ConvertFeatureClass(pOutFeatureClassName, null, pInFeatureDatasetName, pInFeatureClassName, pOutGeometryDef, pOutFields, "", 1000, 0);
                // MessageBox.Show("导出成功", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

            //}
            //catch (Exception ex)
            //{

            //}
            /*****20130227杨漾(去掉trycatch,上层trycatch(MainForm)处理)*****/
        }
Ejemplo n.º 42
0
        public static bool SwitchSource(IDataLayer2 pDataLayer, IPropertySet pSDEConnectionProps, string newDatasetName)
        {
            bool retVal = false;
            try
            {
                IDatasetName pDatasetName;
                IWorkspaceName pWorkspaceName = new WorkspaceNameClass();
                pWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.SdeWorkspaceFactory";

                pWorkspaceName.ConnectionProperties = pSDEConnectionProps;

                pDatasetName = (IDatasetName)pDataLayer.DataSourceName;
                pDatasetName.WorkspaceName = pWorkspaceName;

                pDatasetName.Name = newDatasetName; //e.g. //ISDUT.TA_XXXX;

                pDataLayer.Disconnect();
                pDataLayer.DataSourceName = (IName)pDatasetName;
                pDataLayer.Connect(null);
                retVal = true;
            }
            catch(Exception ex)
            {
                Debug.WriteLine(ex.Message + "\n" + ex.StackTrace);
            }
            return retVal;
        }
Ejemplo n.º 43
0
 public void IWorkspace__get_WorkspaceName(string workspacePath, IWorkspace workspace)
 {
     //Creates a new workspace name for a personal geodatabase.
     IWorkspaceName workspaceName = new WorkspaceNameClass();
     workspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.AccessWorkspaceFactory";
     workspaceName.PathName = workspacePath;
     //Or Get a workspace name from an existing workspace.
     IDataset dataset = (IDataset)workspace; //Workspaces implement IDataset
     workspaceName = (IWorkspaceName)dataset.FullName;
 }
Ejemplo n.º 44
0
        //通过IName获取到CadDrawingDataset
        private static ICadDrawingDataset GetCadDataset(string cadWorkspacePath, string cadFileName)
        {
            //Create a WorkspaceName object
            IWorkspaceName workspaceName = new WorkspaceNameClass();
            workspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.CadWorkspaceFactory";
            workspaceName.PathName = cadWorkspacePath;

            //Create a CadDrawingName object
            IDatasetName cadDatasetName = new CadDrawingNameClass();
            cadDatasetName.Name = cadFileName;
            cadDatasetName.WorkspaceName = workspaceName;

            //Open the CAD drawing
            IName name = (IName)cadDatasetName;
            return (ICadDrawingDataset)name.Open();
        }