8.12 矢量图层面要素单一符号使用七(随机标记填充)

文章目录

  • 前言
  • 随机标记填充(Random Marker Fill)
    • QGis设置面符号为随机标记填充(Random Marker Fill)
    • 二次开发代码实现随机标记填充(Random Marker Fill)
  • 总结

前言

  • 本章介绍矢量图层线要素单一符号中使用随机标记填充(Random Marker Fill)的使用
  • 说明:文章中的示例代码均来自开源项目qgis_cpp_api_apps

随机标记填充(Random Marker Fill)

A fill symbol layer which places markers at random locations within polygons.

  • 以protected_areas.shp为例,图层符号为Simple Fill时显示效果如下图
    在这里插入图片描述

QGis设置面符号为随机标记填充(Random Marker Fill)

  • Symbol layer type设置为Random Marker Fill,可设置的属性如下图
    在这里插入图片描述- Random Marker Fill需要设置其子符号,子符号类型为Marker
  • 属性设置完成后,图层显示效果如下图
    在这里插入图片描述

二次开发代码实现随机标记填充(Random Marker Fill)

  • QgsRandomMarkerFillSymbolLayer是Random Marker Fill,详情见文档,类图如下
    在这里插入图片描述
  • 函数setSubSymbol (QgsSymbol *symbol)可以设置子符号
  • 创建符号层有两种方法:构造函数和create
  • 方法一
  1. 从图层获取渲染器
    //从图层获取渲染器QgsFeatureRenderer * layerRenderer= layer->renderer();QgsSingleSymbolRenderer *singleSymbolRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
  1. 构造函数:修改属性可以调用setxxx函数,如下代码
    int pointCount = 100;auto randomMarkerFillSymbolLayer = new QgsRandomMarkerFillSymbolLayer(100);randomMarkerFillSymbolLayer->setDensityArea(250.0);randomMarkerFillSymbolLayer->setCountMethod(Qgis::PointCountMethod::Absolute);
  1. 创建符号并设置到渲染器
    //多个Symbol Layer构成一个SymbolQgsSymbolLayerList layerList;layerList << randomMarkerFillSymbolLayer;//构造QgsFillSymbol并设置rendererauto fillSymbol = new QgsFillSymbol(layerList);singleSymbolRenderer->setSymbol(fillSymbol);layer->setRenderer(singleSymbolRenderer);
  • 方法二
    方法一中步骤1,3不变,步骤2中使用create()成员函数,颜色方案同样有两种选择
    QVariantMap mp;mp["point_count"] = QStringLiteral("100");mp["density_area"] = QStringLiteral("250.0");mp["count_method"] = QStringLiteral("0");auto randomMarkerFillSymbolLayer = QgsRandomMarkerFillSymbolLayer::create(mp);
  • 完整测试代码如下
void MainWindow::polygonRandomMarkerSlot()
{//添加一个线图层QgsVectorLayer* layer = addTestShape(QStringLiteral("maps/shapefile/protected_areas.shp"));//从图层获取渲染器QgsFeatureRenderer * layerRenderer= layer->renderer();QgsSingleSymbolRenderer *singleSymbolRenderer = QgsSingleSymbolRenderer::convertFromRenderer(layerRenderer);
#if 1int pointCount = 100;auto randomMarkerFillSymbolLayer = new QgsRandomMarkerFillSymbolLayer(100);randomMarkerFillSymbolLayer->setDensityArea(250.0);randomMarkerFillSymbolLayer->setCountMethod(Qgis::PointCountMethod::Absolute);
#elseQVariantMap mp;mp["point_count"] = QStringLiteral("100");mp["density_area"] = QStringLiteral("250.0");mp["count_method"] = QStringLiteral("0");auto randomMarkerFillSymbolLayer = QgsRandomMarkerFillSymbolLayer::create(mp);
#endif//多个Symbol Layer构成一个SymbolQgsSymbolLayerList layerList;layerList << randomMarkerFillSymbolLayer;//构造QgsFillSymbol并设置rendererauto fillSymbol = new QgsFillSymbol(layerList);singleSymbolRenderer->setSymbol(fillSymbol);layer->setRenderer(singleSymbolRenderer);
}
  • 效果如下图
    在这里插入图片描述
    在这里插入图片描述

总结

  • 介绍了矢量图层面要素单一符号中的随机标记填充(Random Marker Fill)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/35058.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分班查询怎么发布?

在现代教育环境中&#xff0c;传统的学生分班通知方式可能显得有些过时和低效。通常&#xff0c;这些方式依赖于纸质通知单&#xff0c;这不仅需要大量的物理资源进行打印和分发&#xff0c;而且容易出错&#xff0c;如丢失、错误分发或延迟。 幸运的是&#xff0c;现在有了更高…

心灵馆咨询系统小程序心理咨询平台聊天咨询

心灵馆咨询系统小程序&#xff1a;解锁你的心灵密码 &#x1f496; 心灵之旅的导航者 在繁忙的现代生活中&#xff0c;我们时常会面临各种压力与困惑。心灵馆咨询系统小程序&#xff0c;如同一位贴心的导航者&#xff0c;引领我们探索内心的世界&#xff0c;寻找真正的自我。 …

shell 脚本的部分指令和操作符

终端输入两个数&#xff0c;判断两数是否相等&#xff0c;如果不相等&#xff0c;判断大小关系 2.已知网址www.hqyj.com&#xff0c;使用expr截取出www、hqyj、com&#xff0c;不能使用cut&#xff0c;不能出现数字

JavaWeb系列十九: jQuery的DOM操作 上

查找节点, 修改属性 查找属性节点: 查找到所需要的元素之后, 可以调用jQuery对象的attr()方法用来 设置/返回 它的各种属性值 设置属性值 $(“img”).attr(“width”, “300”);返回属性值 $(“img”).attr(“width”); 创建节点 创建节点: 使用jQuery的工厂函数$(): $(html标…

硬核实力再亮,玩出梦想科技发布全球首款安卓系统空间计算机

6月25日&#xff0c;玩出梦想科技在新加坡召开全球新品发布会&#xff0c;正式发布全球首款安卓系统空间计算机——玩出梦想MR&#xff0c;填补了空间计算机在安卓生态的空白。 作为品牌沉淀两年的破晓之作&#xff0c;玩出梦想MR以业内领先软硬件配置&#xff0c;强大自研算法…

解决了!暗影精灵8 Pro酷睿版无声音,扬声器和麦克风都没有声音!

困扰好几天的问题解决了&#xff01; 暗影精灵8 Pro酷睿版无声音&#xff0c;扬声器和麦克风都没有声音&#xff01;&#xff01;方法适用于OMEN by HP Gaming Laptop 16-k0xxx&#xff08;暗影精灵8 Pro酷睿版&#xff09;的Windows 10声卡驱动&#xff01; 朋友们&#xff…

【应用开发一】LED开发

文章目录 1应用层控制外设的两种方式2 sysfs和/sys关系3 LED控制方式3.1 基本情况3.2 LED属性文件介绍3.3 命令行属性测试3.4 led程序3.5 开发板上测试 1应用层控制外设的两种方式 使用设备文件控制 在Linux系统下&#xff0c;一切皆是文件。应用层控制底层硬件同样也是通过文…

第100+12步 ChatGPT学习:R实现KNN分类

基于R 4.2.2版本演示 一、写在前面 有不少大佬问做机器学习分类能不能用R语言&#xff0c;不想学Python咯。 答曰&#xff1a;可&#xff01;用GPT或者Kimi转一下就得了呗。 加上最近也没啥内容写了&#xff0c;就帮各位搬运一下吧。 二、R代码实现KNN分类 &#xff08;1&a…

【Docker】Consul 和API

目录 一、Consul 1. 拉取镜像 2. 启动第一个consul服务&#xff1a;consul1 3. 查看consul service1 的ip地址 4. 启动第二个consul服务&#xff1a;consul2&#xff0c; 并加入consul1&#xff08;使用join命令&#xff09; 5. 启动第三个consul服务&#xff1a;consul3&…

攻击者开始使用 XLL 文件进行攻击

近期&#xff0c;研究人员发现使用恶意 Microsoft Excel 加载项&#xff08;XLL&#xff09;文件发起攻击的行动有所增加&#xff0c;这项技术的 MITRE ATT&CK 技术项编号为 T1137.006。 这些加载项都是为了使用户能够利用高性能函数&#xff0c;为 Excel 工作表提供 API …

【SQL Server数据库】关系模式与关系代数

目录 一、请用关系代数完成下列查询 1. 求 供应工程J1 零件P1的供应商号码SNO&#xff1b; 2. 求 供应工程J1 零件&#xff08;P&#xff09;为红色 的供应商号码SNO&#xff1b; 3. 求 没有使用 天津供应商&#xff08;P&#xff09;生产的红色零件&#xff08;S&#xff0…

pycharm中的使用技巧

1、更改主题&#xff1a;找到设置&#xff0c;然后更改主题 点击选择自己喜欢的主题&#xff0c;然后就可以更改主题了 2、设置字体的快捷键 找到设置&#xff0c;如下&#xff1a; 找到increase&#xff0c;如下&#xff1a; 右键选择&#xff0c;增加字体快捷键 按住ctrl滑轮…

Excel 查找后隐去右边列

Excel 有几列数字 ABC11002042002202100102326027010841199100512100100 当给定参数时&#xff0c;请从每行找到该参数&#xff0c;隐去右边的列。如果某行不含该参数&#xff0c;则隐去整行。当参数是 100 时&#xff0c;结果如下&#xff1a; ABC710082021009119910010121…

shell之免交互

免交互 交互&#xff1a;发出指令控制指令的运行&#xff0c;程序再接收到指令的效果做出对应的反应。 免交互&#xff1a;间接的&#xff0c;通过第三方的方式把指令传送给程序&#xff0c;不用直接的下达指令 Hhere Document 免交互 这是命令行格式&#xff0c;也可以写在脚本…

QTableWidget的使用

使用QTableWidget&#xff0c;初始化数据、设置列头及格式&#xff0c;设置行数&#xff0c;设置每个单元格的编辑&#xff0c;间隔行底色变换、行选择 &#xff0c;模式&#xff0c;单元格选择模式、插入行 、追加行、删除行&#xff0c;单元格加图标&#xff0c;单元格显示ch…

好记性不如烂笔头(三)——文件保存后打开呈现乱码问题

现象 请随博主进行下列操作&#xff0c;神奇的事情会发生—— 1、新建记事本&#xff0c;里面输入“同”字&#xff0c;保存为ANSI格式 2、再次打开会发现&#xff0c;“同”已经变成了乱码 3、类似的字还有很多&#xff0c;例如“同学”的“学”。而有些字则不会出现这种情况…

3_电机的发展及学习方法

一、电机组成及发展 1、什么是励磁&#xff1f; 在电磁学中&#xff0c;励磁是通过电流产生磁场的过程。 发电机或电动机由在磁场中旋转的转子组成。磁场可以由 永磁体或励磁线圈产生。对于带有励磁线圈的机器&#xff0c;电流必须在线圈中流动才能产生&#xff08;激发&#x…

香港服务器托管对外贸行业必要性和优势

在当今全球化的经济环境下&#xff0c;外贸企业面临着前所未有的机遇与挑战。其中&#xff0c;服务器托管的选择对于外贸企业的运营效率和市场拓展具有举足轻重的作用。香港服务器&#xff0c;凭借其独特的地理位置、优质的网络环境和卓越的服务性能&#xff0c;一直是外贸企业…

“Hello, World” 的历史

“Hello, World!” —— 初学者进入编程世界的第一步 由布莱恩柯林汉 撰写的“Hello, world”程序 (1978年) 布莱恩W.克尼汉&#xff08;Brian W. Kernighan&#xff09;—— Unix 和 C 语言背后的巨人 布莱恩W.克尼汉 布莱恩W.克尼汉在 1942 年出生在加拿大多伦多&#xff…

OS中断机制-嵌套和竞争

对于FreeRTOS最好不去用中断嵌套,中断嵌套会增加堆栈空间的使用,因为每个中断服务程序都需要保存和恢复寄存器状态,这可能会耗尽有限的堆栈空间,从而导致系统故障。以及中断嵌套时,不同的中断服务程序可能会竞争访问共享资源,从而增加死锁的风险。这可能会导致系统出现故…