Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
 /// <summary>
 /// 打开本地文件的工作空间,可以是本地mdb、gdb等等
 /// </summary>
 /// <param name="conn"></param>
 /// <returns></returns>
 public abstract TWorkspace Open(LocalConn conn);