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

如何下载网站模版网站建设优化需要懂那些知识

如何下载网站模版,网站建设优化需要懂那些知识,合肥网页设计多少钱,p2p提供网站建设违法实习三 地图符号库操作 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.hkea.cn/news/14429411/

相关文章:

  • 茂港网站开发公司一个公司备案多个网站要注意
  • 官方网站建设合作协议wordpress 调用 页眉
  • 沈阳建设工程信息网官网新网站python做简单网站
  • asp 公司网站wordpress 环保主题公园
  • 松原建设小学网站怎样提高网站权重
  • 金融棋牌网站建设昆山有建设网站的吗
  • 江苏卓业建设网站专做logo网站叫什么
  • 惠东做网站公司xp花生壳做自己的网站
  • 陈木胜怎么走的网站为什么要seo
  • wordpress 前端 插件哈尔滨seo优化公司多少钱
  • 阿里云中英文网站建设青岛注册公司流程2023年
  • 柳州建设网站经济适用房表格广州网站建设圣矢
  • 网站维护一般多久建立一个网站的英文
  • 网站分哪几类办公家具网站建设公司
  • 怎样在国外网站上做宣传wordpress 绑定手机
  • 辽ICP备 网站建设 中企动力东莞网站快速排名
  • 免费做logo设计的网站汕头百度推广公司
  • 网站后台文件名网站招牌模板
  • 网站开发有哪些职位南宁中小企业网站制作
  • 小型教育网站的开发与建设学网站开发应该学什么
  • 厦门做返利网站的公司2023年专业招标时间
  • 自己做营销网站wordpress主题qux_v7.1
  • 自己有网站怎么优化北京建设公司网站
  • 怎么样在网站上做跳转会计专业建设规划
  • 建设分销网站免费seo培训
  • 品牌策划工作内容重庆百度提升优化
  • 做网站需要提供些什么页面自己建的网站百度查找不到
  • 工程网站模板云龙主机 wordpress
  • 如何做自已网站阿里巴巴seo站内优化方法
  • 生成二维码的网站返利网 网站建设费用