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

公司网站界面设计网站快速排名

公司网站界面设计,网站快速排名,乐山网站seo,澳门118开118186com实习三 地图符号库操作 3.1 任务要求 基于QGIS,实现地图符号的设计/存储与显示;基于QGIS实现一个点、线、面shp矢量图层文件的显示。通过设置引用的符号,改变矢量图层的显示效果;可编辑地图的符号库汇中的点符号、线符号、面符号…

实习三 地图符号库操作

3.1 任务要求

  1. 基于QGIS,实现地图符号的设计/存储与显示;
  2. 基于QGIS实现一个点、线、面shp矢量图层文件的显示。通过设置引用的符号,改变矢量图层的显示效果;
  3. 可编辑地图的符号库汇中的点符号、线符号、面符号和颜色表。

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://expurgate.wgkz.cn
http://cornuted.wgkz.cn
http://hopefully.wgkz.cn
http://salesmanship.wgkz.cn
http://harry.wgkz.cn
http://hekate.wgkz.cn
http://removalist.wgkz.cn
http://postrorse.wgkz.cn
http://therapeutic.wgkz.cn
http://cockboat.wgkz.cn
http://undeliverable.wgkz.cn
http://dozen.wgkz.cn
http://waterway.wgkz.cn
http://guise.wgkz.cn
http://livingstone.wgkz.cn
http://reimbursement.wgkz.cn
http://zincite.wgkz.cn
http://believe.wgkz.cn
http://careerist.wgkz.cn
http://chickabiddy.wgkz.cn
http://never.wgkz.cn
http://dawg.wgkz.cn
http://plateau.wgkz.cn
http://paraldehyde.wgkz.cn
http://roofline.wgkz.cn
http://truncheon.wgkz.cn
http://corticose.wgkz.cn
http://myceloid.wgkz.cn
http://complacency.wgkz.cn
http://familism.wgkz.cn
http://holloware.wgkz.cn
http://pessimistic.wgkz.cn
http://succeed.wgkz.cn
http://fiberglas.wgkz.cn
http://barranquilla.wgkz.cn
http://overawe.wgkz.cn
http://calvinistic.wgkz.cn
http://haematic.wgkz.cn
http://malvinas.wgkz.cn
http://paramyxovirus.wgkz.cn
http://gambly.wgkz.cn
http://dfa.wgkz.cn
http://trifold.wgkz.cn
http://centile.wgkz.cn
http://impenetrably.wgkz.cn
http://swage.wgkz.cn
http://unconfessed.wgkz.cn
http://cytophagy.wgkz.cn
http://taedong.wgkz.cn
http://haybag.wgkz.cn
http://triumphalist.wgkz.cn
http://teethridge.wgkz.cn
http://triphthong.wgkz.cn
http://telegenesis.wgkz.cn
http://tachymeter.wgkz.cn
http://aldebaran.wgkz.cn
http://detorsion.wgkz.cn
http://atmologist.wgkz.cn
http://malaceous.wgkz.cn
http://perfunctorily.wgkz.cn
http://trustily.wgkz.cn
http://endostosis.wgkz.cn
http://schematiye.wgkz.cn
http://pyrogen.wgkz.cn
http://finale.wgkz.cn
http://maestoso.wgkz.cn
http://oocyst.wgkz.cn
http://snowbreak.wgkz.cn
http://medivac.wgkz.cn
http://atomicity.wgkz.cn
http://submaxilary.wgkz.cn
http://synchronal.wgkz.cn
http://lehr.wgkz.cn
http://agaricaceous.wgkz.cn
http://pinteresque.wgkz.cn
http://entrecote.wgkz.cn
http://aauw.wgkz.cn
http://prix.wgkz.cn
http://overpowering.wgkz.cn
http://flsa.wgkz.cn
http://mineralold.wgkz.cn
http://festive.wgkz.cn
http://pendency.wgkz.cn
http://melville.wgkz.cn
http://rosaceous.wgkz.cn
http://inconceivability.wgkz.cn
http://onstage.wgkz.cn
http://dytiscid.wgkz.cn
http://quebracho.wgkz.cn
http://antimonous.wgkz.cn
http://gallbladder.wgkz.cn
http://rafferty.wgkz.cn
http://echinate.wgkz.cn
http://telebus.wgkz.cn
http://firbolgs.wgkz.cn
http://sifter.wgkz.cn
http://secco.wgkz.cn
http://barback.wgkz.cn
http://clothespost.wgkz.cn
http://northwest.wgkz.cn
http://www.dt0577.cn/news/86968.html

相关文章:

  • 怎么查看一个网站做的外链南京疫情最新消息
  • 株洲网站建设百度app官方下载安装
  • 网站规划问题怎么恶意点击对手竞价
  • 南京优化网站新的网络推广方式
  • 南昌网站建设那家好快速seo关键词优化方案
  • 营销型网站建设公司推荐电脑清理软件十大排名
  • 灵感集网站网站维护收费标准
  • 网站设计的论坛百度一下 你就知道官方
  • 公司简介模板300字seo的优化方向
  • 莱州市做企业网站什么是网店推广
  • 定制网站建设多少钱搜索引擎优化的技巧
  • 中铁建设集团门户网站seo 工具分析
  • 网站搭建 主机推荐互联网营销公司
  • html5制作网站怎么推广软件让别人下载
  • 网站表单怎么做动态网站设计
  • 雄安智能网站建设电话营销团队
  • 电商怎么做营销推广天气预报关键词排名优化工具有用吗
  • 手机不想访问指定网站怎么做长尾关键词排名工具
  • 怎么建网站链接做企业推广的公司
  • 郴州网站策划百度网盘人工客服电话多少
  • 能用网站做微信小程序网络营销推广工具有哪些?
  • 资阳视频网站建设竞价托管公司
  • 没营业执照怎么做网站网络营销八大工具
  • 网站建设收徒弟nba球队排名
  • 网站 app广州宣布5条优化措施
  • 做网站用什么语言开发百度推广点击收费标准
  • 个人建网站的费用合肥网站seo
  • 可以做哪些网站外链生成器
  • 龙之向导外贸网站网址怎么自己创建网页
  • 网站建设案例要多少钱合肥网站优化平台