当前位置: 首页 > news >正文

如何建立一个学校网站广州建设工程信息网站

如何建立一个学校网站,广州建设工程信息网站,wordpress如何更换空间,多伦多网站建设多少钱实习三 地图符号库操作 3.1 任务要求 基于QGIS#xff0c;实现地图符号的设计/存储与显示#xff1b;基于QGIS实现一个点、线、面shp矢量图层文件的显示。通过设置引用的符号#xff0c;改变矢量图层的显示效果#xff1b;可编辑地图的符号库汇中的点符号、线符号、面符号…实习三 地图符号库操作 3.1 任务要求 基于QGIS实现地图符号的设计/存储与显示基于QGIS实现一个点、线、面shp矢量图层文件的显示。通过设置引用的符号改变矢量图层的显示效果可编辑地图的符号库汇中的点符号、线符号、面符号和颜色表。 3.2 完成过程 3.2.1 地图符号库实现技术 在QGIS中地图符号库的设计、存储和现实等功能的实现主要应用到了 QgsSymbol 类和QgsMarkerSymbolLayer类。这里QgsSymbol类主要是用于呈现符号的抽象基类经常和QgsMarkerSymbolLayer类搭配使用。而QgsMarkerSymbolLayer类标记符号层的抽象基类也经常和QgsSymbol类搭配使用。 显然 QgsSymbol 类和QgsMarkerSymbolLayer类一个用于标记一个用于呈现。 通过QgsSymbol类的继承关系不难发现可以呈现点、线、标记等如图3.2.1-1所示。 图3.2.1-1 QgsSymbol类的继承关系 与之相搭配的QgsMarkerSymbolLayer类的继承关系如图3.2.1-2所示。 图3.2.1-2 QgsMarkerSymbolLayer类的继承关系 接下来我们就如何实现基于QGIS二次开发实现地图符号库操作给出详细过程。 3.2.2 地图符号库实现过程 这里我们首先打开项目的ui文件在主界面添加需要使用的QAction控件分别为“自定义符号管理”、“qgs符号管理”、“更改矢量符号显示”。为了便于代码的编辑将添加的按钮的objectName分别命名为“actionSelfStylelibMng”、“actionQgsStylelibMng”、“actionChgSymbolRender”。操作如图3.2.2-1所示。 图3.2.2-1 对ui进行操作 将设定的ui进行保存后即可回到Visual Studio中对相应的代码进行适当的编辑。 首先需要进入头文件中定义必要的函数这是由于QT的信号与槽的机制必须要进行信号与槽的相关绑定这里我们主要预先声明了两个函数分别是“void on_actionSelfStylelibMng_triggered()”和“void on_actionQgsStylelibMng_triggered()”。如图3.2.2-2所示。 图3.2.2-2 声明函数 接下来需要对声明的函数进行详细的定义。on_actionSelfStylelibMng_triggered()函数通过调用“Smart3dMap::S3d_StyleManagerLib::getSingletonPtr()-excuteSysStyleManager()”来执行系统样式管理器使用第三方库 Smart3dMap 中的 S3d_StyleManagerLib 类的单例模式对象调用 excuteSysStyleManager() 方法用于调用自定义样式库管理器。 on_actionQgsStylelibMng_triggered()函数主要加载用户样式库路径中的样式并通过 QgsStyleManagerDialog 展示一个 QGIS 的样式管理对话框。并且在调用的过程中创建或访问一个静态的 QgsStyle 对象同时确保样式库只加载一次避免重复初始化。操作如图3.2.2-3所示。 图3.2.2-3 定义函数 需要说明的是这里的符号库的设计和使用都属于是二次窗口在QGIS中的调用也是独立于一级主窗口。因此这里可以通过git拉取所需的符号设计库的方法进行调用将QGIS设计完好的二次开发ui和逻辑在自己的系统中进行直接的调用如图3.2.2-4所示。 图3.2.2-4 设计ui文件 同样的拉取的还有需要的头文件和执行文件如图3.2.2-5所示。 图3.2.2-5 拉取的执行文件 进行完如上步骤编译即可得到相应的融合了地图符号库的系统如图3.2.2-6所示。 图3.2.2-6 系统界面 3.3 结果展示 完成3.2部分的系统构建后我们便可以使用系统的地图符号库了打开“自定义符号管理”可以看到这里可以实现地图符号的设计、存储与显示。如图3.3-1所示。 图3.3-1 自定义符号管理 这里我们也可以进行符号导入操作打开“qgs符号管理”依次点击【Import/Export】-【Import】-【File】将从QGIS提供的官方符号库下载的“”符号文件导入即可得到改XML符号文件中所得的符号标记如图3.3-2所示。 图3.3-2 修改XML符号标记 点击想要导入的符号再点击“Import”即可导入在“All”中即可观察到刚刚导入的符号如图3.3-3所示。 图3.3-3 导入的符号显示 同样这里也可以通过点击“更改符号系统显示”实现符号的更改如图3.3-4所示。 图3.3-4 更改符号系统的显示 同样当我们点击【矢量符号】-【qgs符号系统】也可以实现地图的符号库汇中的点符号、线符号、面符号和颜色表的编辑操作如图3.3-5所示。 图3.3-5 符号修改 3.4 关键代码 这里的关键代码是针对符号库的打开操作和调用操作。 具体代码的功能主要是on_actionSelfStylelibMng_triggered()函数通过调用“Smart3dMap::S3d_StyleManagerLib::getSingletonPtr()-excuteSysStyleManager()”来执行系统样式管理器使用第三方库 Smart3dMap 中的 S3d_StyleManagerLib 类的单例模式对象调用 excuteSysStyleManager() 方法用于调用自定义样式库管理器。 on_actionQgsStylelibMng_triggered()函数主要加载用户样式库路径中的样式并通过 QgsStyleManagerDialog 展示一个 QGIS 的样式管理对话框。并且在调用的过程中创建或访问一个静态的 QgsStyle 对象同时确保样式库只加载一次避免重复初始化。 源代码如下 //打开qgs样式库 void YLGIS::on_actionSelfStylelibMng_triggered() {Smart3dMap::S3d_StyleManagerLib::getSingletonPtr()-excuteSysStyleManager(); } //打开样式管理器 void YLGIS::on_actionQgsStylelibMng_triggered() {//显示属性表static QgsStyle style;if (style.symbolCount() 0){sqlite3_initialize();style.load(QgsApplication::userStylePath());}QgsStyleManagerDialog* dlg new QgsStyleManagerDialog(style);dlg-show(); } //自定义符号库 #include S3dmStyleManager.h #include qgsapplication.h #include qgsmarkersymbollayer.h #include qgsfillsymbollayer.h #include qfiledialog.h #include QgsSymbolLayerRegistry.h #include QgsApplication.h #include qgsfillsymbollayer.h #include qmessagebox.h #include qgsvectorlayer.h #include S3dmSymbolManager.h #include S3dmApplySymbolDlg.h QgsStyle Smart3dMap::S3dmStyleManager::m_style; Smart3dMap::S3dmStyleManager::S3dmStyleManager() { } Smart3dMap::S3dmStyleManager::~S3dmStyleManager() { } bool Smart3dMap::S3dmStyleManager::initStyle() {sqlite3_initialize();return m_style.load(QgsApplication::userStylePath()); } QgsStyle * Smart3dMap::S3dmStyleManager::getS3dmStyle() {if (m_style.symbolCount() 0){initStyle();}return m_style; } QgsSymbol * Smart3dMap::S3dmStyleManager::getSymbol(std::string name) {if (m_style.symbolCount() 0){initStyle();}return m_style.symbol(QString::fromLocal8Bit(name.c_str())); } QgsSymbol * Smart3dMap::S3dmStyleManager::getSymbol(std::string name, const QColor color) {if (m_style.symbolCount() 0){initStyle();}QgsSymbol* oriSymbol m_style.symbol(QString::fromLocal8Bit(name.c_str()));if (oriSymbol nullptr){return nullptr;}QgsSymbol* symbol oriSymbol-clone();//添加一个背景图层QgsSymbol::SymbolType qgsType symbol-type();if (qgsType ! QgsSymbol::SymbolType::Line){if (qgsType QgsSymbol::SymbolType::Marker){QgsSimpleMarkerSymbolLayer *simplelayer new QgsSimpleMarkerSymbolLayer();simplelayer-setColor(color);simplelayer-setStrokeStyle(Qt::PenStyle::NoPen);symbol-insertSymbolLayer(0,simplelayer);}else if (qgsType QgsSymbol::SymbolType::Fill){QgsSimpleFillSymbolLayer *simplelayer new QgsSimpleFillSymbolLayer();simplelayer-setColor(color);simplelayer-setStrokeStyle(Qt::PenStyle::NoPen);symbol-insertSymbolLayer(0, simplelayer);}}return symbol; } // -------------------------------- 材质管理对象 --------------- // Smart3dMap::S3d_StyleManagerLib * Smart3dMap::S3d_StyleManagerLib::getSingletonPtr() {static S3d_StyleManagerLib instance;return instance; } void Smart3dMap::S3d_StyleManagerLib::excuteSysStyleManager() {S3dmSymbolManager* geo3dStyleManager new S3dmSymbolManager();if (geo3dStyleManager nullptr){geo3dStyleManager new S3dmSymbolManager(nullptr);geo3dStyleManager-setObjectName(excuteSysStyleManager);geo3dStyleManager-setWindowFlags(geo3dStyleManager-windowFlags() | Qt::Dialog);}geo3dStyleManager-show(); } __int64 Smart3dMap::S3d_StyleManagerLib::excuteSysStyleSelector() {S3dmSymbolManager* geo3dStyleManager new S3dmSymbolManager();QgsStyle* qStyle QgsStyle::defaultStyle();if (geo3dStyleManager nullptr){QString dbpath QgsApplication::userStylePath();qStyle-load(dbpath);}else{qStyle geo3dStyleManager-getStyle();if (qStyle nullptr){return 0;}}S3dmApplySymbolDlg dlg(qStyle, nullptr, S3dmApplySymbolDlg::symbolType::POLYGON, NULL);int res dlg.exec();if (res QDialog::Accepted){return (__int64)dlg.getSymbol();}else{return 0;}return 0; } Smart3dMap::S3d_StyleManagerLib::S3d_StyleManagerLib() { } Smart3dMap::S3d_StyleManagerLib::~S3d_StyleManagerLib() { }
http://www.dnsts.com.cn/news/30500.html

相关文章:

  • 织梦高端html5网站建设工作室网络公司网站模板响应式网站跟一般网站的区别
  • 清远网站seo网站建设首选唯美谷
  • 网站建设的书籍音乐中文网站模板下载
  • 资阳专业网络推广方案seo对网站的作用
  • 网站404页面模板织梦网站后台密码忘记
  • 运城市做网站价格园林景观设计公司发展规划
  • 网站建设程序流程wordpress 密码生成
  • 景区类网站河北建设银行石家庄分行招聘网站
  • 深圳市住房和建设局官网站首页服务器做jsp网站教程视频播放
  • 个人网站开发的背景实体店铺怎么引流推广
  • 电子政务与网站建设经验企业如何数字化转型
  • 哈什么网一个网站做ppt广告平面设计好学吗
  • 东莞外贸网站设计吉林省建设项目招标网站
  • it网站建设资讯网wordpress点赞代码
  • 网站二次备案天津规划设计公司
  • 西安网站建设建站系统上海百姓网免费发布信息网
  • 深圳分销网站设计包装设计网站免费
  • 电脑网站怎么制作郴州新网招聘手机版
  • 做传奇网站焦作网站开发
  • 域名备案的网站名称微信小程序平台登录入口
  • WordPress搭建流媒体网站局域网电脑做网站
  • 做网站用虚拟主机怎么样杭州pc手机网站建设
  • 金融服务网站建设平台推广方式方法是什么
  • 百度注册域名免费建站网站开发有什么点子
  • 网站开发静态和动态企业解决方案是什么意思啊
  • 做女装的看哪个网站好什么是软件开发工程师
  • 外贸网站设计注意事项wordpress支付宝接口
  • 外贸网站大全投票网站如何做
  • 数字广东网络建设有限公司网站网站如何连接微信支付宝吗
  • 做百度词条需要哪些网站网站产品预算