/* * Author: Jun0x01@github.com * Date: 2019.05.09 */ #ifndef SU_WORKSPACE_INCLUDED #define SU_WORKSPACE_INCLUDED #include "Log.h" #include "Workspace/UGWorkspace.h" using namespace UGC; //namespace SuperMap //{ class Workspace { public: Workspace(); Workspace(UGWorkspace* pWorkspace); ~Workspace(); /* * @en * @brief Get the UGWorkspace handler * @return the pointer of UGWorkspace created in current Workspace object */ UGWorkspace* GetUGWorkspace(); /* * @cbwu新增 */ void setUGWorkspace(UGWorkspace* pWorkspace); /* * @en * @brief Open a local workspace file, such as *.smwu, *.sxwu * @filePath the path of workspace file * @password password of workspace, the default is an empty string * @return return true if opened, otherwise return false */ bool OpenWorkspaceFile(const string &filePath, const string &password=""); /* * @en * @brief Open a workspace in database server * @type type of workspace, which indicates the specific database * @serverUrl database's address, it's format are , : or : * @dbName database's name * @userName avalaible user name * @password user's password to access the database * @workspaceName workspace name created in the database * @return return true if opened, otherwise return false */ bool OpenWorkspaceDB(UGWorkspace::UGWorkspaceType type, const string &serverUrl, const string &dbName, const string &userName, const string &password, const string &workspaceName); /* * @en * @brief Open a local datasource file, such as *.udb, *.udbx(supported since v9.1.0), *.sci, *.tiff and so on * @type type of datasource, which indicates the specific file type * @name a user defined name of datasource, it must be unique in current workspace * @filePath path of datasurce file * @password used for udb or udbx, the defualt is is an empty string * @readOnly used for udb or udbx, the default is false meaning the data can be modified * @return return a pointer of datasource if opened, otherwise return NULL */ UGDataSource* OpenDatasourceFile(UGEngineType type, const string &name, const string &filePath, const string &password = "", bool readOnly = false); /* * @en * @brief Open a datasource stored in database, such as Oracle, MySQL, MongDB and so on * @type type of datasource, which indicates the specific database * @name a user defined name of datasource, it must be unique in current workspace * @serverUrl database's address, it's format are , : or : * @dbName database's name * @userName avalaible user name * @password user's password to access the database * @readOnly the default is false meaning the data can be modified * @return return a pointer of datasource if opened, otherwise return NULL */ UGDataSource* OpenDatasourceDB(UGEngineType type, const string &name, const string &erverUrl, const string &dbName, const string &userName, const string &password, bool readOnly = false); /* * @en * @brief Open a web map service, such as rest, WMS, WMTS and so on * @type type of datasource, which indicates the specific file type * @name a user defined name of datasource, it must be unique in current workspace * @serverUrl url of web map * @OGCType used for OGC standard services, such as WMS, WMTS; the default is is an empty string. * @serverKey access key to the web map service, such as TianDiTu requires a key * @return return a pointer of datasource if opened, otherwise return NULL */ UGDataSource* OpenDatasourceWeb(UGEngineType type, const string &name, const string &serverUrl, const string &OGCType = "", const string &serverKey = ""); /* * @en * @brief Close a datasource according to its index in the workspace * @index index of datasource which will be close */ void CloseDatasource(int index); /* * @en * @brief Close a datasource according to its name in the workspace * @name name of datasource which will be close */ void CloseDatasource(const string &name); /* * @en * @brief Remove a stored map according its name * @mapName the map need to be removed * @return True if removed , otherwise false. */ bool RemoveMap(const string &mapName); /* * @en * @brief Remove a stored scene according its name * @sceneName the scene need to be removed * @return True if removed , otherwise false. */ bool RemoveScene(const string &sceneName); /* * @en * @brief Save current workspace. * @return Return ture if saved, otherwise return false. */ bool Save(); /* * @en * @brief Save as a new workspace file. * @wkPath The absolute path of workspace file which will be saved as. * @return Return ture if saved, otherwise return false. */ bool SaveAsFile(const string &wkPath); /* * @en * @brief Create an UDB datasource. If the datource is created, it will add into current workspace. * @udbPath The absolute path of UDB datasource file which will be created. * @name An unique name of created datasource will used in current workspace. * @return Return pointer of UGDataSource if created. If failed to create, return NULL. */ UGDataSource* CreateDatasourceUDB(const string &udbPath, const string &name); /** * @en * Close the workspace. Must close all maps related to the workspace first. */ void Close(); /* * @en * @brief Create a new workspace file. * @wkPath The absolute path of workspace file which will be created. * @password Password of workspace, the default is an empty string * @return Return ture if created, otherwise return false. */ bool CreateAsFile(const string &wkPath, const string password = ""); private: UGWorkspace* m_pUGWorkspace; }; //} #endif