/// <summary> /// 获取要素类对象 /// </summary> /// <param name="dto">参数模型</param> /// <returns></returns> public virtual TFeatureClass GetFeatureClass(InputFeatureClassDTO dto) { TWorkspace workspace; if (EnumDataSourceType.ENTERPRISE_GEODATABASE == EnumUtil.GetEnumObjByName <EnumDataSourceType>(dto.Source.Type)) { // 企业级数据库连接 OracleConn conn = JsonConvert.DeserializeObject <OracleConn>(dto.Source.Connection); workspace = this.OpenWorkspace(conn); } else { LocalConn conn = JsonConvert.DeserializeObject <LocalConn>(dto.Source.Connection); conn.Type = EnumUtil.GetEnumObjByName <EnumDataSourceType>(dto.Source.Type); workspace = this.OpenWorkspace(conn); } if (null == workspace) { throw new BusinessException((int)EnumSystemStatusCode.DME_ERROR, "获取源要素类工作空间失败"); } TFeatureClass featureClass = this.GetFeatureClass(workspace, dto.Name); if (null == featureClass) { throw new BusinessException((int)EnumSystemStatusCode.DME_ERROR, "获取源要素类对象失败"); } return(featureClass); }
public override IWorkspace Open(LocalConn conn) { IWorkspace workspace = null; switch (conn.Type) { case Base.Common.EnumDataSourceType.SHAPEFILE: workspace = WorkspaceUtil.OpenShapeFileWorkspace(conn.Path); break; case Base.Common.EnumDataSourceType.COVERAGE: workspace = WorkspaceUtil.OpenCoverageWorkspace(conn.Path); break; case Base.Common.EnumDataSourceType.PERSONAL_GEODATABASE: workspace = WorkspaceUtil.OpenMdbWorspace(conn.Path); break; case Base.Common.EnumDataSourceType.FILE_GEODATABASE: workspace = WorkspaceUtil.OpenFileGdbWorkspace(conn.Path); break; case Base.Common.EnumDataSourceType.TIN: workspace = WorkspaceUtil.OpenTinWorkspace(conn.Path); break; case Base.Common.EnumDataSourceType.CAD: workspace = WorkspaceUtil.OpenCadWorkspace(conn.Path); break; default: throw new Exception($"不支持当前本地文件格式[{conn.Path}]"); } return(workspace); }
/// <summary> /// 打开本地文件工作空间 /// </summary> /// <param name="conn"></param> /// <returns></returns> public virtual TWorkspace OpenWorkspace(LocalConn conn) { string md5Hash = MD5HashUtil.GetMD5Hash(JsonConvert.SerializeObject(conn)); if (TWorkspaceDic.ContainsKey(md5Hash)) { return(TWorkspaceDic[md5Hash]); } TWorkspace workspace = this._dmeWorkspace.Open(conn); TWorkspaceDic[md5Hash] = workspace; return(workspace); }
/// <summary> /// 打开本地文件的工作空间,可以是本地mdb、gdb等等 /// </summary> /// <param name="conn"></param> /// <returns></returns> public abstract TWorkspace Open(LocalConn conn);