/// <summary> /// 创建FileGDB和PGDB Workspace /// @remark /// 1.Shp创建Workspace没有意义 /// 2.不支持SDE创建 /// </summary> /// <param name="wsType"></param> /// <param name="strPath"></param> /// <param name="strName"></param> /// <returns></returns> public static IWorkspace CreateWorkspace(enumWorkspaceType wsType, string strPath, string strName) { try { IWorkspaceFactory wsf = null; switch (wsType) { case enumWorkspaceType.SDE: throw new Exception("CreateWorkspace方法被设计为不支持SDE方式创建"); case enumWorkspaceType.FileGDB: wsf = new ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFactoryClass(); break; case enumWorkspaceType.PGDB: wsf = new AccessWorkspaceFactoryClass(); break; case enumWorkspaceType.File: wsf = new ShapefileWorkspaceFactoryClass(); break; } IWorkspaceName wsName = wsf.Create(strPath, strName, null, 0); return((wsName as IName).Open() as IWorkspace); } catch { return(null); } }
/// <summary> /// 创建工作空间工厂 /// </summary> /// <returns></returns> private static IWorkspaceFactory CreateWksFactory(enumWorkspaceType fileWksType) { IWorkspaceFactory wksFactory = null; switch (fileWksType) { case enumWorkspaceType.Shapefile: wksFactory = new ShapefileWorkspaceFactoryClass(); break; case enumWorkspaceType.Gdb: wksFactory = new FileGDBWorkspaceFactoryClass(); break; case enumWorkspaceType.Mdb: wksFactory = new AccessWorkspaceFactoryClass(); break; case enumWorkspaceType.Cad: wksFactory = new CadWorkspaceFactoryClass(); break; case enumWorkspaceType.RasterFile: wksFactory = new RasterWorkspaceFactoryClass(); break; default: break; } return(wksFactory); }
public WorkspaceCatalogItem(object objWorksapceConnction, enumWorkspaceType wsType, ICatalogItem parent,string strName) : base(null,parent) { this.m_WorkapcePropertySet = objWorksapceConnction; this.m_WorkspaceType = wsType; this.m_Caption = strName; }
/// <summary> /// 创建FileGDB和PGDB Workspace /// @remark /// 1.Shp创建Workspace没有意义 /// 2.不支持SDE创建 /// </summary> /// <param name="wsType"></param> /// <param name="strPath"></param> /// <param name="strName"></param> /// <returns></returns> public static IWorkspace CreateWorkspace(enumWorkspaceType wsType, string strPath, string strName) { try { IWorkspaceFactory wsf = null; switch (wsType) { case enumWorkspaceType.SDE: throw new Exception("CreateWorkspace方法被设计为不支持SDE方式创建"); case enumWorkspaceType.FileGDB: wsf = new ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFactoryClass(); break; case enumWorkspaceType.PGDB: wsf = new AccessWorkspaceFactoryClass(); break; case enumWorkspaceType.File: wsf = new ShapefileWorkspaceFactoryClass(); break; } IWorkspaceName wsName = wsf.Create(strPath, strName, null, 0); return (wsName as IName).Open() as IWorkspace; } catch { return null; } }
public static bool Exists(string path, enumWorkspaceType fileWksType = enumWorkspaceType.AutoDetect) { switch (fileWksType) { case enumWorkspaceType.AutoDetect: case enumWorkspaceType.RasterFile: if (Directory.Exists(path) || File.Exists(path)) { return(true); } else { return(false); } case enumWorkspaceType.Cad: case enumWorkspaceType.Shapefile: case enumWorkspaceType.Mdb: return(File.Exists(path)); case enumWorkspaceType.Gdb: return(Directory.Exists(path)); default: break; } return(false); }
/// <summary> /// 打开Workspace /// </summary> /// <param name="wsType"></param> /// <param name="objWorkspace">当为SDE时使用IPropertySet,其余情况使用路径(string)</param> /// <returns></returns> public static IWorkspace OpenWorkspace(enumWorkspaceType wsType, object objWorkspace) { IWorkspaceFactory wsf = null; try { switch (wsType) { case enumWorkspaceType.FileGDB: wsf = new FileGDBWorkspaceFactoryClass(); return(wsf.OpenFromFile(objWorkspace as string, 0)); case enumWorkspaceType.PGDB: wsf = new AccessWorkspaceFactoryClass(); return(wsf.OpenFromFile(objWorkspace as string, 0)); case enumWorkspaceType.File: wsf = new ShapefileWorkspaceFactoryClass(); return(wsf.OpenFromFile(objWorkspace as string, 0)); case enumWorkspaceType.SDE: wsf = new SdeWorkspaceFactoryClass(); IPropertySet pSet = objWorkspace as IPropertySet; if (pSet == null) { string strArgs = objWorkspace as string; pSet = new PropertySetClass(); string[] argList = strArgs.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); foreach (string strArg in argList) { string[] argPair = strArg.Split(new char[] { '=' }); pSet.SetProperty(argPair[0], argPair[1]); } } return(wsf.Open(pSet, 0)); } } catch { return(null); } finally { if (wsf != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(wsf); } } return(null); }
public static IWorkspace OpenFromFile(string path, enumWorkspaceType fileWksType = enumWorkspaceType.AutoDetect, bool isRelative = false) { if (isRelative) { path += Application.StartupPath + "\\"; } //不存在的路径 if (!Exists(path, fileWksType)) { return(null); } //识别类型 if (fileWksType == enumWorkspaceType.AutoDetect) { fileWksType = AutoDetectFile(path); } var wksFactory = CreateWksFactory(fileWksType); //无法识别的类型 if (wksFactory == null) { return(null); } IWorkspace workspace = null; try { if (fileWksType == enumWorkspaceType.Cad || fileWksType == enumWorkspaceType.Shapefile || fileWksType == enumWorkspaceType.RasterFile) { //todo是否已经被其他用户打开 workspace = wksFactory.OpenFromFile(Path.GetDirectoryName(path), 0); } else { workspace = wksFactory.OpenFromFile(path, 0); } return(workspace); } catch (System.Exception ex) { if (ex.Message.Contains("0x80040228")) { //"ArcEngine没有进行初始化Lincense"; } else { } } return(workspace); }
/// <summary> /// 打开Workspace /// </summary> /// <param name="wsType"></param> /// <param name="objWorkspace">当为SDE时使用IPropertySet,其余情况使用路径(string)</param> /// <returns></returns> public static IWorkspace OpenWorkspace(enumWorkspaceType wsType, object objWorkspace) { IWorkspaceFactory wsf = null; try { switch (wsType) { case enumWorkspaceType.FileGDB: wsf = new FileGDBWorkspaceFactoryClass(); return wsf.OpenFromFile(objWorkspace as string, 0); case enumWorkspaceType.PGDB: wsf = new AccessWorkspaceFactoryClass(); return wsf.OpenFromFile(objWorkspace as string, 0); case enumWorkspaceType.File: wsf = new ShapefileWorkspaceFactoryClass(); return wsf.OpenFromFile(objWorkspace as string, 0); case enumWorkspaceType.SDE: wsf = new SdeWorkspaceFactoryClass(); IPropertySet pSet = objWorkspace as IPropertySet; if (pSet == null) { string strArgs = objWorkspace as string; pSet = new PropertySetClass(); string[] argList = strArgs.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); foreach (string strArg in argList) { string[] argPair = strArg.Split(new char[] { '=' }); pSet.SetProperty(argPair[0], argPair[1]); } } return wsf.Open(pSet, 0); } } catch { return null; } finally { if (wsf != null) System.Runtime.InteropServices.Marshal.ReleaseComObject(wsf); } return null; }
private void cmbWorkspaceType_SelectedIndexChanged(object sender, EventArgs e) { txtWorkspace.Text = ""; m_Workspace = null; m_SelectedWorkspaceType = (enumWorkspaceType)cmbWorkspaceType.SelectedIndex; if (m_SelectedWorkspaceType == enumWorkspaceType.File) { cmbDataset.Enabled = false; } else { cmbDataset.Enabled = true; } }
//public WorkspaceCatalogItem(IDataset dsWorkspace,ICatalogItem parent):base(dsWorkspace,parent) //{ // if (!(dsWorkspace is IWorkspace)) // throw new Exception("内部错误:WorksapceCatalogItem 的构造参数必须为Workspace"); // this.m_Dataset = dsWorkspace; // m_Caption = this.m_Dataset.BrowseName ?? this.m_Dataset.Name; // IWorkspace wsSource=(dsWorkspace as IWorkspace); // m_WorkapcePropertySet = wsSource.ConnectionProperties; // m_WorkspaceType = (wsSource.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace ? enumWorkspaceType.SDE : // (wsSource.Type == esriWorkspaceType.esriFileSystemWorkspace ? enumWorkspaceType.File : enumWorkspaceType.Unknown)); //} public WorkspaceCatalogItem(IDatasetName dsName, ICatalogItem parent) : base(dsName, parent) { if (!(dsName is IWorkspaceName)) { throw new Exception("内部错误:WorksapceCatalogItem 的构造参数必须为WorkspaceName"); } //this.m_Dataset = (dsName as IName).Open() as IDataset; this.m_DatasetName = dsName; m_Caption = this.m_DatasetName.WorkspaceName.BrowseName ?? this.m_DatasetName.Name; IWorkspaceName wsSource = this.m_DatasetName.WorkspaceName; m_WorkapcePropertySet = wsSource.ConnectionProperties; //m_WorkspaceType = (wsSource.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace ? enumWorkspaceType.SDE : // (wsSource.Type == esriWorkspaceType.esriFileSystemWorkspace ? enumWorkspaceType.File : enumWorkspaceType.Unknown)); if (wsSource.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace) { m_WorkspaceType = enumWorkspaceType.SDE; } else if (wsSource.Type == esriWorkspaceType.esriFileSystemWorkspace) { m_WorkspaceType = enumWorkspaceType.File; } else { string strPath = wsSource.PathName; string strType = System.IO.Path.GetExtension(strPath); if (string.IsNullOrEmpty(strType)) { m_WorkspaceType = enumWorkspaceType.Unknown; } strType = strType.ToUpper(); if (strType == "MDB") { m_WorkspaceType = enumWorkspaceType.PGDB; } else if (strType == "GDB") { m_WorkspaceType = enumWorkspaceType.FileGDB; } else { m_WorkspaceType = enumWorkspaceType.Unknown; } } }
public static string GetTELayerString(object objWorkspacePropertySet, enumWorkspaceType wsType, string strName) { if (objWorkspacePropertySet == null || string.IsNullOrWhiteSpace(strName)) { return(null); } if (wsType == enumWorkspaceType.SDE) { IPropertySet propertySet = objWorkspacePropertySet as IPropertySet; if (propertySet == null) { return(null); } object[] objParameters = { propertySet.GetProperty("SERVER"), propertySet.GetProperty("USER"), propertySet.GetProperty("PASSWORD"), strName, propertySet.GetProperty("INSTANCE") }; return(string.Format("Server={0};User={1};Password={2};LayerName={3};Instance={4};TEPlugName=arcsde;", objParameters)); } else if (wsType == enumWorkspaceType.File) { return(string.Format("{0}\\{1}{2}", objWorkspacePropertySet, strName, strName.ToLower().Contains(".shp")?null:".shp")); } else if (wsType == enumWorkspaceType.PGDB) { return(string.Format("FileName={0};LayerName={1}", objWorkspacePropertySet, strName)); } return(null); }
//public WorkspaceCatalogItem(IDataset dsWorkspace,ICatalogItem parent):base(dsWorkspace,parent) //{ // if (!(dsWorkspace is IWorkspace)) // throw new Exception("内部错误:WorksapceCatalogItem 的构造参数必须为Workspace"); // this.m_Dataset = dsWorkspace; // m_Caption = this.m_Dataset.BrowseName ?? this.m_Dataset.Name; // IWorkspace wsSource=(dsWorkspace as IWorkspace); // m_WorkapcePropertySet = wsSource.ConnectionProperties; // m_WorkspaceType = (wsSource.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace ? enumWorkspaceType.SDE : // (wsSource.Type == esriWorkspaceType.esriFileSystemWorkspace ? enumWorkspaceType.File : enumWorkspaceType.Unknown)); //} public WorkspaceCatalogItem(IDatasetName dsName, ICatalogItem parent) : base(dsName, parent) { if (!(dsName is IWorkspaceName)) throw new Exception("内部错误:WorksapceCatalogItem 的构造参数必须为WorkspaceName"); //this.m_Dataset = (dsName as IName).Open() as IDataset; this.m_DatasetName = dsName; m_Caption = this.m_DatasetName.WorkspaceName.BrowseName ?? this.m_DatasetName.Name; IWorkspaceName wsSource = this.m_DatasetName.WorkspaceName; m_WorkapcePropertySet = wsSource.ConnectionProperties; //m_WorkspaceType = (wsSource.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace ? enumWorkspaceType.SDE : // (wsSource.Type == esriWorkspaceType.esriFileSystemWorkspace ? enumWorkspaceType.File : enumWorkspaceType.Unknown)); if (wsSource.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace) { m_WorkspaceType = enumWorkspaceType.SDE; } else if (wsSource.Type == esriWorkspaceType.esriFileSystemWorkspace) { m_WorkspaceType = enumWorkspaceType.File; } else { string strPath = wsSource.PathName; string strType = System.IO.Path.GetExtension(strPath); if (string.IsNullOrEmpty(strType)) m_WorkspaceType = enumWorkspaceType.Unknown; strType = strType.ToUpper(); if (strType == "MDB") m_WorkspaceType = enumWorkspaceType.PGDB; else if (strType == "GDB") m_WorkspaceType = enumWorkspaceType.FileGDB; else m_WorkspaceType = enumWorkspaceType.Unknown; } }
private void cmbWorkspaceType_SelectedIndexChanged(object sender, EventArgs e) { txtWorkspace.Text = ""; m_Workspace = null; m_SelectedWorkspaceType = (enumWorkspaceType)cmbWorkspaceType.SelectedIndex; if (m_SelectedWorkspaceType == enumWorkspaceType.File) { cmbDataset.Enabled = false; if (this.m_PathType == enumPathType.Raster) { txtFeatureClassName.Width = cmbDataset.Width - (lblFormat.Width + cmbFormat.Width + 15); } else { txtFeatureClassName.Width = cmbDataset.Width; } } else { txtFeatureClassName.Width = cmbDataset.Width; cmbDataset.Enabled = true; } }
public WorkspaceCatalogItem(object objWorksapceConnction, enumWorkspaceType wsType, ICatalogItem parent, string strName) : base(null, parent) { this.m_WorkapcePropertySet = objWorksapceConnction; this.m_WorkspaceType = wsType; this.m_Caption = strName; }
public static string GetTELayerString(object objWorkspacePropertySet, enumWorkspaceType wsType, string strName) { if (objWorkspacePropertySet==null|| string.IsNullOrWhiteSpace(strName)) return null; if (wsType == enumWorkspaceType.SDE) { IPropertySet propertySet = objWorkspacePropertySet as IPropertySet; if (propertySet == null) return null; object[] objParameters = { propertySet.GetProperty("SERVER"), propertySet.GetProperty("USER"), propertySet.GetProperty("PASSWORD"), strName, propertySet.GetProperty("INSTANCE") }; return string.Format("Server={0};User={1};Password={2};LayerName={3};Instance={4};TEPlugName=arcsde;", objParameters); } else if(wsType==enumWorkspaceType.File) { return string.Format("{0}\\{1}{2}",objWorkspacePropertySet,strName,strName.ToLower().Contains(".shp")?null:".shp"); } else if(wsType==enumWorkspaceType.PGDB) { return string.Format("FileName={0};LayerName={1}", objWorkspacePropertySet, strName); } return null; }
private void cmbWorkspaceType_SelectedIndexChanged(object sender, EventArgs e) { txtWorkspace.Text = ""; m_Workspace = null; m_SelectedWorkspaceType = (enumWorkspaceType)cmbWorkspaceType.SelectedIndex; if (m_SelectedWorkspaceType == enumWorkspaceType.File) { cmbDataset.Enabled = false; cmbClass.Enabled = false; } else { cmbDataset.Enabled = true; cmbClass.Enabled = true; } }