QGIS 3.14的变更日志

image1

另一个很棒的版本是我们在18年的开发过程中取得的伟大的QGIS版本。这个版本塞满了大大小小的新特性和改进,很难知道从哪里开始。一些字幕特性包括矢量平铺支持、mdal/mesh支持的巨大进步、WMS-T中对时态数据的本地支持、PG栅格、向量提供者和网格层。专注于制图和数字化的用户也没有被排除在外,为您提供了许多新的选择!

Thanks

我们要感谢开发人员、文档编制人员、测试人员和所有自愿付出时间和精力(或资助人员这样做)的人。来自QGIS社区,我们希望您喜欢这个版本!如果你想捐出时间、金钱,或者参与到让QGIS变得更棒的工作中,请访问 QGIS.ORG 伸出援手!

QGIS由捐助者和维持成员提供支持。在我们的网站上可以看到对该项目作出重大和小型财政捐助的捐助者的最新名单。 donors list . 如果你想成为一个正式的项目支持成员,请访问我们的网站 sustaining member page 了解详情。赞助QGIS有助于我们为定期的开发人员会议提供资金,维护项目基础设施,并为缺陷修复工作提供资金。下面提供了当前赞助商的完整列表-我们非常感谢所有赞助商!

QGIS是免费软件,你没有义务支付任何费用来使用它-事实上,我们希望鼓励人们广泛使用它,无论你的经济或社会地位是什么-我们相信,赋予人们空间决策工具的权力,将为全人类带来一个更好的社会。

一般

特点:新的网格装饰注释字体设置

地图画布的网格装饰注释现在可以完全自定义,包括字体颜色、缓冲区等。

image8

此功能由iMHere Asia提供资金

此功能由开发 Mathieu Pellerin

世俗的

特点:时间控制器中的累积时间范围设置

在时间控制器中添加一个设置,以将动画时间范围设置为累积。这意味着所有动画帧将具有相同的开始日期时间,但不同的结束日期和时间。

如果您希望在时间可视化中积累数据,而不是在数据中显示一个“移动时间窗口”,这是很有用的。

image2

此功能由 Meteorological Service of Canada

此功能由开发 Kartoza / Samweli Mwakisambwe

特点:为时间向量层添加一个新的“重画层仅”模式

设置为该模式时,只要时间范围发生变化,图层将自动重画,但不会对要素应用基于时间的过滤。

当层具有基于时间范围变化的符号设置时,此配置非常有用。例如,当层使用依赖于时间的基于规则的渲染器表达式或数据定义的符号表达式时。

此功能由开发 Nyall Dawson

特性:为向量层添加基本的时间处理支持

这就暴露了向量层的一些基本本地时态功能:

  • 层的静态时间范围(以匹配栅格层的可能性),这将设置应用于整个层的单个静态时间范围。每当画布时间与层时间范围重叠时,层中的所有功能都将显示

  • “带日期时间的单个字段”:允许从层中选择单个日期或日期时间字段。只要此字段值在画布时间范围内,就会显示特性

  • “日期/开始时间”和“结束日期/开始时间”字段可分别选择。每当从这些字段计算的时间间隔与画布时间范围重叠时,将显示特性

我们应该考虑在将来扩展它,例如添加“开始时间+固定持续时间”、“开始时间+字段持续时间”、“通过表达式开始和结束时间”等模式。

一些已知的限制/效率低下:

  • 当前只能使用日期/日期时间字段。这样做是为了简化格式处理,避免担心具有不同日期时间格式的字符串字段。将来,我们应该允许选择字符串字段,并允许用户输入自定义的日期时间格式字符串

  • 与Time Manager插件方法不同,这里采用的方法是完全依赖QGIS表达式和功能请求来进行过滤(Time Manager使用层过滤器字符串,并尝试设置一个本地SQL过滤器语法,以便在后端进行过滤)。这是有意为之的,因为它提供了一种统一的过滤方法,而不管使用的是哪种提供者(也就是说,我们不需要担心不同提供者本机使用的不同SQL语法)。特征请求表达式编译之美 应该 意味着QGIS表达式神奇地变成了本地后端查询,buuuut。。。因为我们缺少对DateTime文本的QGIS表达式支持,所以我们目前依赖于“to\u DateTime”表达式函数,并通过字符串强制执行所有操作。没有一个表达式编译器处理此函数,因此当前 * 全部的 * 过滤是在QGIS端完成的。我们需要添加用于优化日期时间文本创建的函数,然后确保不同的编译器将这些文本正确映射到后端过滤器语法,以允许在数据库端完成所有筛选工作。。。

因此,目前,与时间管理器相比,大层的性能要差得多(公开的功能集更小,例如没有插值处理),但优点是我们可以使用本机时间框架,并在网格和栅格层旁边设置向量层动画!

此功能由开发 Nyall Dawson

特性:Postgres栅格时态API支持

为Postgres rasters添加了时间功能集成。

image3

image4

这个功能是由ARPA Piemonte资助的

此功能由开发 Alessandro Pasotti

特点:QGIS项目时间设置

此功能添加了项目时间设置功能。

您可以通过使用手动输入或从当前项目的时间层计算来设置项目时间范围。后者可以通过单击提供的“从层计算”按钮来完成。

该实现为在QGIS中添加时间层动画特性奠定了基础。

下面是一个设置项目时间范围的示例。 image5

先前关于QGIS时间支持的讨论可以找到 herehere .

此功能由 Meteorological Service of Canada

此功能由开发 Kartoza / Samweli Mwakisambwe

特点:支持WMS-T层时间约束

此功能增加了在QGIS中约束WMS时间层(WMS-T)的能力。您将能够从WMS-T提供者约束任何时间层的日期时间范围。

此实现允许用户从“图层属性”对话框的“源”选项卡指定图层上所需的日期时间范围。

下面是工作流的一个示例。 image6

Note: For instant point in time requests, specifying a range with equal begin and end DateTime will result into using the specified DateTime instant and not a range.

image7

此功能由 Meteorological Service of Canada

此功能由开发 Kartoza / Samweli Mwakisambwe

特点:时态API

这个特性为QGIS中的时态支持提供了一个API实现。

通过在Python文档中搜索“Temporal”,可以找到Python的API (link ②)

此功能由 Meteorological Service of Canada

此功能由开发 Kartoza / Samweli Mwakisambwe

用户界面

功能:以选项卡形式打开属性表

如果“将新属性表作为停靠窗口打开”选项处于活动状态,则新属性表将作为选项卡在现有属性表的顶部打开。

image13

此功能由开发 Germán Carrillo

符号学

功能:栅格图层等高线渲染器

这个新的渲染器绘制从源栅格带区动态计算的等高线。可以设置等高线的间隔和用于绘制的符号。

此外,还支持“索引等高线”-具有更高间隔的等高线,通常使用更宽的线符号绘制。

如果我们在输入栅格块上生成与输出栅格块大小相同的等高线,则生成的线条将包含太多细节。这一细节可以减少“缩小”因素-这将要求较低的分辨率源栅格。

image14

此功能由开发 Martin Dobias

特性:添加栅格图像标记和栅格填充层符号的百分比大小单位。

根据 Feature Request 此修补程序为的大小单位添加新的百分比(原始图像大小)值 栅格图像标记栅格填充 (签字人 nirvn 建议)分层。

例如,图层包含各种尺寸和纵横比的栅格图像:

image15 image16

如果我们使用现有的栅格图像标记 尺寸单位 值该层看起来像这样(与正常鳄鱼,但巨大的长颈鹿):

image17

或者像这样(对于一只普通的长颈鹿,但是小鳄鱼):

image18

新的 百分比 大小单位的值旨在解决此问题。

两个单元测试“qgis\u rasterfilltest”和“qgis\u rastermarkertest”都被重写了一组新的控制图像来测试所提出的方法 百分比 大小单位的值。

此功能由开发 beketata

功能:为字体标记的字体系列/样式添加数据定义属性

为字体标记的字体系列和全新的字体样式属性添加了数据定义的属性。这对于许多场景都很有用,包括多语言上下文,其中数据定义的属性可以避免重复数据集。

image19

此功能由iMHere Asia提供资金

此功能由开发 Mathieu Pellerin

功能:字体标记的新字体样式设置

使用这个全新的字体样式设置,用户可以选择以前不可用的字体系列的非默认样式。

image20

此功能由iMHere Asia提供资金

此功能由开发 Mathieu Pellerin

贴标签

特点:尊重标签中的HTML颜色

启用时,此选项将标签内容视为HTML,并且任何与前景颜色相关的HTML格式选项都将在呈现的标签中得到尊重。

注意:只考虑HTML颜色标记。这不是一个bug,而是这个特性被设计成一个“waters的测试”,标签中有HTML格式,因此只考虑不改变字体形状的格式化选项。

好的一面是,它可以与所有其他标签设置一起正常工作,包括阴影、缓冲区、弯曲标签等!

现在有一些漂亮的照片:

image21

image22

此功能由 geoProRegio AG

此功能由开发 Nyall Dawson

功能:在多边形外部自动放置标签

此功能增加了在多边形要素之外自动放置标签的功能。

这可以通过多种方式暴露出来:

  1. A new placement mode which always places polygon labels for the layer outside the features: image23 image24

  2. When using other polygon placement modes, a new checkbox "Allow placing labels outside of polygons" can be checked to allow labels to be placed outside when it isn't possible to place them inside the polygon: image25 image26

“允许将标签放置在外部”复选框可以是数据定义的,允许用户允许外部标签、防止外部标签,或者逐个要素强制外部标签。

布局算法基于Rylov&Reimer(2016)的修改。” 一种实用的区域特征外部标注算法 ". 虽然Rylov和Reimer提出了一种基于水平扫描线的方法来选择候选标记点,但在实践中,我发现这种方法产生的结果较差(而且速度较慢),然后只需遍历多边形的外环并以固定间隔生成候选点(尤其是对于窄的、几乎水平的多边形)。

如上面的岛屿屏幕截图所示,外部放置模式与“跟随标签放置”多行对齐模式的预期工作方式相同。

此功能由 Swiss QGIS user group

此功能由开发 Nyall Dawson

特征:矢量平铺层-第4部分(标签)

继续致力于矢量平铺层的实现。

这增加了对矢量平铺层的标签支持。到目前为止,这只是在qgis的核心。。。接下来将提供GUI支持。标签使用与矢量图块渲染相同的概念:我们有一个标签样式列表,每个样式都由子层名称、几何体类型、过滤器表达式、缩放范围和标签样式配置(QgsPalLayerSettings)来定义。

注意,标记有一个“鸡和蛋”的问题:对于向量图块,我们根据渲染器和标签请求的字段为子层创建QgsFields,但是使用labeling,如果在表达式上下文中还没有可用的字段,则无法获得所需的字段(因此,对QgsProperty、QgsPropertyCollection、,QgsPalLayerSettings可以通过不同时准备内部表达式来获取所需的字段名)。

image27

如何在Python控制台中设置上述标签的示例:

s = QgsVectorTileBasicLabelingStyle()
s.setLayerName("place")
s.setGeometryType(QgsWkbTypes.PointGeometry)
s.setFilterExpression("rank = 1 AND class = 'country'")
ls=QgsPalLayerSettings()
ls.drawLabels=True
ls.fieldName="name"
ls.placement = QgsPalLayerSettings.OverPoint s.setLabelSettings(ls)
labeling = QgsVectorTileBasicLabeling()
labeling.setStyles([s])
iface.activeLayer().setLabeling(labeling)

此功能由 Many funders

此功能由开发 Lutra Consulting (Martin Dobias)

功能:添加对标签上标注的定位点的控制

这使用户可以控制调用应连接到标签文本的位置(以前,您只能控制调用连接到相应要素几何图形的位置)。

选择包括:

  • 最近点(以前的行为)

  • 标签质心

  • 固定角:左上/右上/左下/右下/等等

还可以对标签锚定进行数据定义的控制。

帮助修复一些标注的丑陋!

上一个结果(最近点模式):

image28

使用新的“质心”位置:

image29

此功能由开发 Nyall Dawson

网格

功能:仅使用指定的数据集组

此功能允许用户选择所使用的数据集组。这可以在“源”选项卡的“网格层属性”对话框中完成。

新的树状图显示数据提供程序中所有可用的数据集组。可以选中/取消选中并重命名数据集组。

这个小部件还提供了一些按钮,用于从文件中加载额外的数据集组,展开/折叠树,选中/取消选中所有项,并从提供程序重置默认值(目前,仅限于原始名称)。

只有选中的数据集组才会显示在渲染器设置的活动数据集小部件中。

image30

此功能由 Deltares

此功能由开发 Lutra Consulting (Vincent Cloarec)

特点:标量颜色设置取决于分类

通过这个特性,MDAL读取数据集中的分类标量值。对值进行分类后,默认标量渲染设置将根据分类的值设置颜色渐变着色器和标签。

image31

此功能由 Deltares

此功能由开发 Lutra Consulting (Vincent Cloarec)

特征:捕捉网格元素

将方法添加到API中以捕捉网格元素。

该方法返回捕捉点在最近网格元素上的位置:

  • 对于顶点,捕捉的位置是顶点位置

  • 对于边,捕捉位置是边上的投影点,如果在边之外,则是边的末端

  • 对于面,捕捉的位置是面的质心

返回的位置在地图坐标中。

image32

此功能由 Deltares

此功能由开发 Lutra Consulting (Vincent Cloarec)

特点:1D网格宽度/颜色变化

此功能提供了一种新的渲染1D网格的方法,该网格的边宽度可以根据值而变化。所以现在,宽度和颜色根据边或顶点上的值而变化。

用户可以定义最小/最大值和最小/最大宽度来设置渲染。

对于“颜色”,用户可以定义颜色渐变明暗器(对于2D网格和栅格)。

对于这种新的呈现,引入了可以在网格框架之外使用的新泛型类。

image33

此功能由 Deltares

此功能由开发 Lutra Consulting (Vincent Cloarec)

特点:支持多网格(从mdal0.5.91开始)

除了更新到mdal0.5.91之外,此功能还允许从一个文件加载多个网格。

文件将被解析,并使用与矢量或栅格图层相同的逻辑启动子图层对话框。

image34

此功能由 Deltares

此功能由开发 Lutra Consulting (Vincent Cloarec)

特点:插入网格层到QGIS时态框架

image35

网格层的时间处理

网格层中的时间定义为:

  • 数据、项目或用户提供的参考时间

  • 每个数据集都与相对时间相关联

  • 时间范围由所有数据集的第一次和最后一次定义

Reference time :          AT
Dataset 1 time            o---RT------RT-----RT-----------RT
Dataset 2 time            o-------RT------RT--------RT
Dataset 3 time            o--------------------------RT-------RT------RT
Time extent of layer      o----<---------------------------------------->

-  AT : absolute time (QDateTime)
-  RT : relative time (qint64)

班级 QgsMeshDataprovidertemporalCapabilities 存储数据提供的参考时间和数据集的所有相对时间。此类能够从数据集组索引返回数据集索引和自引用时间以来的相对时间。引用时间(可以不同于提供者引用时间)和绝对时间范围存储在类中 QgsMeshTemporalProperties

“属性”窗口小部件中的时间设置仅为参考时间和提供者时间单位: image36

图层的默认参考时间由设置(按优先级排序):

  • 从数据提供程序(如果在数据中定义)

  • 如果定义的话

  • 从当前日期到时间00h00

用户可以根据需要更改。

渲染原理

二维和三维渲染器从存储在 QgsContextRenderer 而在 Qgs3DMapSettings :相对时间计算为 QgsContextRenderer 以及存储的参考时间 QgsMeshTemporalProperties . 数据集索引来自 QgsMeshDataproviderTemporalCapabilities 用数据集索引映射相对时间。

数据是从带有数据集索引的提供程序中获取的。

静态数据集

还有一个设置静态数据集的选项,即选择一个独立于QGIS时间控制器呈现的数据集。为此,用户可以选中properties小部件临时页面底部的复选框: image37 目前,由于实现更简单,并允许直接选择所需的数据集,因此用户可以从组合框中独立选择标量数据集和向量数据集,以及与每个数据集关联的时间(无参考时间的数据的相对时间)。如果需要,可以实现唯一时间,但这可能导致与非同步数据集的结果不一致。静态数据集设置位于临时页面中,但如果需要,可以轻松地将其放入源页面中。

此功能由 Lutra Consulting

此功能由开发 Lutra Consulting (Vincent Cloarec)

特征:从顶点值重采样到面值

重采样可用于在面上定义的数据集,例如,顶点上的值是根据面上的值计算的。

此功能使用邻域平均方法实现从顶点上的值到面上的值的重采样。

对于从顶点到面的重采样,默认方法设置为“无”,对于从面到顶点的重采样,默认方法设置为“邻居平均”。则默认渲染始终是平滑的。 image38

此功能由开发 Lutra Consulting (Vincent Cloarec)

功能:使用颜色渐变着色器为网格向量数据集着色

此功能允许用户根据矢量的大小使用颜色渐变着色器为网格层向量数据集(箭头、流线、轨迹)着色。

image39

image40

image41

此功能由 Deltares

此功能由开发 Lutra Consulting (Vincent Cloarec)

特征:为网格层保存样式

此功能添加了用于在qml文件中保存网格层样式的选项,用于矢量和栅格图层。

该功能还重构“栅格和矢量图层特性”菜单样式。 image42

此功能由 Artelia Group

此功能由开发 Lutra Consulting (Vincent Cloarec)

特点:网格1D渲染器

更新到 MDAL 0.5.90

初步实施 Support of 1D elements in Mesh Layers

一维网格由顶点和边组成。边连接两个顶点,并且可以在其上指定数据(标量或向量)。例如,一维网状网络可用于模拟城市排水系统。

在“网格框架”选项卡中有新的选项来显示一维网格(边) image43

此外,对于一维网格(边或顶点)上的数据,“轮廓”选项卡中有新选项

image44

请注意,并非所有可用于二维网格的功能都可用,特别是

  • 支持一维网格的网格计算器

  • 一维网格的三维绘制

  • 在小龙虾中识别和绘图(将在后面的PR中添加)

对于一维网格,有些函数是不必要的,尤其是

  • 导出网格轮廓

此功能由开发 Peter Petrik

特征:网格简化

由于网格层可能有数百万个三角形,因此渲染可能非常慢,尤其是当所有三角形都显示在视图中时,即使三角形太小而看不见。

对于这些情况,此功能提供了一个简化网格的选项。简化会产生一个或多个表示细节级别的简化网格。渲染网格时,将根据视图选择适当的细节级别以提供适当的渲染。

“网格层属性”小部件中的新选项卡允许用户更改设置:

  • 折减系数用于简化网格;每个详细级别的三角形数大约等于上一个详细级别的三角形数除以折减系数

  • 最大网格分辨率:这是允许显示的三角形的平均大小(以像素为单位);如果网格的平均大小小于此值,则显示具有较低细节级别的网格,即平均大小刚好大于最大网格分辨率的网格。

image45

此功能允许加速呈现,如这些表所示(以毫秒为单位): image46

演示GIF之前: image47

后: image48

此功能由 BMT

此功能由开发 Lutra Consulting (Vincent Cloarec)

三维特征

渲染要素:三维网格箭头图层

此功能添加了一个选项,用于根据矢量数据集在网格层数据集三维实体上显示箭头。

用于渲染箭头的数据集是在2D渲染中选择用于渲染向量的数据集。

同样,箭头的颜色在矢量数据集的二维渲染设置中定义。

在三维设置中,用户可以定义箭头的间距以及大小是否固定或按大小缩放。

也无法定义箭头的最大间距,因为此设置无法定义箭头的最大间距。 image49

此功能由开发 Lutra Consulting (Vincent Cloarec)

表达

特点:新表达式

  • ascii

  • make_interval 允许直接从years/months/weeks/days/hours/minutes/second值构造间隔值,而不必首先构造间隔的字符串表示形式

  • maptip

  • layer_property('distance_units')

  • display_expression

  • eval_template

  • make_date

  • make_time

  • make_datetime

  • close_line

  • is_multipart

  • 几何Z和M最小值和最大值

  • @frame_number

  • @frame_rate

  • @frame_duration

  • @map_start_time 地图时间范围的开始(作为日期时间值)

  • @map_end_time 映射的时间范围的结束(作为日期时间值)

  • @map_interval: 地图时间范围的持续时间(作为间隔值)

  • @animation_start_time

  • @animation_end_time

此功能由Etienne Trimaille、Jan Caha、Julien Monticolo、Nyall Dawson开发

特征:用于在表达式生成器中预览的要素浏览器

这将向表达式生成器添加特征浏览器,以便浏览特征以查看表达式的结果 image65

添加了一个新的小部件: QgsFeaturePickerWidget . 目前,它是一个简单的组合框(但是继承了小部件,因此我们可以在以后添加一个地图选择器按钮)。它的行为方式与关系引用小部件(可编辑的组合框)中的相同。

它依赖于相同的基本模型 (QgsFeatureFilterModel ). 一个新的抽象类 QgsFeaturePickerModelBase 重新组合的逻辑,新模型被称为 QgsFeaturePickerModel . 基本上 QgsFeaturePickerModel 使用功能id标识功能,同时 QgsFeatureFilterModel 使用属性列表(关系的外键)。它把以前的模型搞得一团糟。

作为补充说明,我尝试使用模板 QgsFeaturePickerModelBase ,但由于模板不能与Q\ u对象混合,所以其他的代码听起来可能不太可读。

已添加测试。

QGIS瑞士用户组 你说什么?

此功能由开发 Denis Rouzaud

特点:能够删除自定义函数

将“删除”按钮添加到“表达式生成器”对话框的“函数编辑器”选项卡中,以允许从QGIS中删除用户函数,而无需导航到用户配置文件目录。

此功能由开发 Alexander Bruy

功能:添加编辑、导入和导出用户表达式的功能

添加了一个新按钮,允许编辑保存的表达式。只有在“表达式”树中选择了用户表达式时,它才处于活动状态。按下时,将打开一个窗口,允许编辑当前选定的用户表达式。当前正在更改一个表达式的现有标签的副本。 Demo

Import/Export

添加了一个带有菜单的新按钮,允许将用户表达式导入/导出到JSON文件中。单击其中一个菜单项将打开表达式JSON文件源/目标的文件选择器对话框。在标签冲突的情况下,另一个对话框询问如何继续-覆盖或跳过当前表达式。 Import/Export Demo

此功能由开发 Ivan Ivanov

数字化

特点:专用避免几何交叉/重叠模式

此版本的QGIS提供了一个新的专用避免几何图形相交/重叠模式设置,当数字化要素。

三种可用模式为:

允许交叉/重叠


避免活动层上的交叉/重叠


避免在用户定义的图层列表上相交/重叠。


第三种模式的层列表由用户通过高级捕捉配置小部件设置。

image66

此功能由 OpenGIS.ch

此功能由开发 Mathieu Pellerin

特征:新的捕捉模式:线段的质心和中间(中点)

此功能旨在改进 snapping modes in QGIS 通过更接近CAD工具的体验。

它增加了两种新的模式。捕捉几何体的中心(质心)和线段的中间。

要同时选择多个捕捉模式,可以同时选择多个新模式。

image67

捕捉的优先顺序如下:-顶点、交点-中间-质心-边-区域

image68

赞助单位:Qwat group/Ville de Lausanne(@ponceta@dsavari)/Oslandia和一些业余时间

此功能由开发 lbartoletti

数字化到特征:当前捕捉

快照现在还可以支持捕捉到当前正在数字化的功能。此选项将启用/禁用捕捉工具栏中的新按钮。

像这样一个精确的在90°角内对齐的CAD功能。一旦你习惯了使用alt+a快捷键锁定角度,这是非常有效的。

image69

这个功能是由Kanton Solothurn和Land Vorarlberg资助的

此功能由开发 Olivier Dalang

特点:追踪现在支持曲线几何

当处理支持曲线几何图形的图层时,跟踪工具现在可以创建曲线几何图形。

image70

支持仍处于试验阶段,因此必须在数字化选项中启用此功能。

此功能由ecoptima和Planteam资助

此功能由开发 Olivier Dalang (OPENGIS.ch)

窗体和小部件

功能:表达式控制的标签(别名)

这个新特性允许在表单上下文中计算表单标签(别名)。

image72

image73

此功能由 ARPA Piemonte

此功能由开发 Alessandro Pasotti

特性:为值关系小部件添加描述

添加一个选项,用于向值关系小部件中的每个值添加描述。描述将显示为工具提示

请原谅演示视频中的不同语言。

image74

此功能由开发 Matthias Kuhn

数据库小部件名称:新功能

QGIS中添加了一个新的小部件,用于从现有数据库连接中选择一个新表:

image75

此功能由开发 Alessandro Pasotti

功能:在子窗体中获取当前父窗体值

这个特性增加了在过滤器表达式中使用来自“父”表单的当前值的选项(目前只在值关系小部件中使用:在向下钻取过滤器中使用)。

添加了一个新的“parentForm”范围以及一组新的函数和变量,以便从嵌入的子窗体中访问父窗体。新函数和变量是根据现有的“当前值”、“当前特性”等建模的。

当从新的(未保存、未缓冲)功能打开父窗体时,新函数和变量也可用,这样在从未保存的父窗体添加子窗体时,可以更容易地基于父窗体的值创建深入筛选。

新函数和变量

image77 image78 image79

资金来源: 阿帕皮埃蒙特

此功能由 ARPA Piemonte

此功能由开发 Alessandro Pasotti

功能:关系小部件:添加复选框以隐藏保存子编辑按钮

这对于嵌入式表单非常有用。

资金来源: 阿帕皮埃蒙特

image80

此功能由 ARPA Piemonte

此功能由开发 Alessandro Pasotti

特点:关系窗口小部件强制抑制弹出窗口

向关系小部件配置添加一个选项,以在嵌入表单上下文中添加新功能时禁止打开表单弹出窗口。

此选项将覆盖窗体级别选项(当窗体用作独立窗体时,这可能仍然是所需的行为)。

image81

注:最终标签为 添加功能时强制隐藏窗体

此功能由 ARPA Piemonte

此功能由开发 Alessandro Pasotti

图层图例

功能:在layertreeview上下文菜单中添加了“移到底部”

通过 移到顶部 但是仍然需要手动将基础地图移动到图层列表的底部,这在大图层树中是一项繁琐的任务。此功能将添加 移到底部 “图层树”关联菜单的选项,其工作方式与“移到顶部”相同。

此功能由开发 uclaros

功能:使添加组按钮作为组选定,如果选定层>=2

如果选择了多个图层,并且用户按 添加组 按钮,创建一个新的组,并把选定的层也在其中! image82

此功能由开发 uclaros

功能:允许重命名当前地图主题

这将添加从地图主题下拉菜单重命名地图主题的选项。

image83

此功能由开发 Harrissou Sant-anna

特点:使用“空间”按钮打开/关闭所有选定层

使用“空间”按钮切换当前选定图层或组的可见性: image84

此功能由开发 Ivan Ivanov

分析工具

功能:网络记录器-更多功能

向网络记录器添加一些更有用的工具:

  • 复制URL

  • 将请求复制为JSON

  • 将日志保存到文件(在警告用户日志可能包含敏感信息并应视为机密之后)

此功能由开发 Nyall Dawson

特点:内置网络日志工具

这个工具可以从新的F12“dev tools”面板获得,它是@rduivenvoorde的网络记录器插件的本机端口。

它显示了正在进行和已完成的网络请求的列表,以及大量有用的详细信息,如请求和回复状态、标头、错误、SSL配置错误、超时、缓存状态等。

此外,它还提供了大量的精巧和有用的功能,例如可以通过URL子字符串和状态过滤请求,并且您可以右键单击请求在浏览器中打开URL或将其作为cURL命令进行复制。

为什么我们要把它作为本机工具而不是插件?好:

  • 它非常有用,所以很高兴有现成的

  • 通过将它移到c++中,我们可以在插件有机会之前启动日志记录过程。这允许日志包含附加信息,例如在加载网络记录器插件之前由其他插件触发的请求(也包括其他内置请求,例如新闻提要)

  • 性能一直是Python插件的难题。虽然这几乎是一个1:1的端口,但性能问题已经神奇地解决了。这些类有一些非常密集的列表操作,这很可能是Python下性能差的原因。

image85

此功能由 Meteorological Service of Canada

此功能由开发 Nyall Dawson (for Kartoza)

处理

特点:随机栅格生成算法集合

通过这个特性,我们添加了大量随机数栅格生成算法集合。这些算法能够输出特定随机数分布的随机栅格。提供以下分发版:

  1. 创建随机栅格图层(二项式分布)

  2. 创建随机栅格图层(指数分布)

  3. 创建随机栅格层(伽马分布)

  4. 创建随机栅格层(负二项分布)

  5. 创建随机栅格层(正态分布)

  6. 创建随机栅格层(泊松分布)

  7. 创建随机栅格图层(均匀分布)

image86

此功能由开发 Clemens Raffler

特点:矢量平铺层-第8部分(正在处理的写入程序)

此功能为矢量图块写入添加了处理集成。它只是现有QgsVectorTileWriter类的包装器。

处理工具箱中的新算法:

image87

XYZ的算法参数:

image88

MBTiles的算法参数:

image89

输入层列表:

image90

输入层详细信息:

image91

此功能由 QGIS Community

此功能由开发 Lutra Consulting (Martin Dobias)

特性:用于创建条件分支的新modeler算法

该算法允许用户设置多个条件(通过qgis表达式),根据表达式求值的结果,这些条件导致相应的模型分支被运行或跳过。

image92

此功能由Andreas Neumann资助

此功能由开发 Nyall Dawson

功能:允许重新排序模型输入

此功能没有强制对模型的输入进行准随机排序,而是在模型设计器中公开了一个新的“重新排序模型输入”选项,允许用户控制输入的确切顺序,以向用户显示其模型。

没有更不合逻辑的排序,如显示一个字段选择之前的层选择它的基础!

NaturalGIS赞助

此功能由开发 Nyall Dawson

功能:延迟模型验证

该特性不会强制所有子算法立即有效并正确填充所有参数,而是将模型验证推迟到运行时或触发新的“验证模型”操作时。

对于QGIS模型设计者来说,一个常见的问题是它不断地强迫模型是有效的,甚至是正在工作的模型。这意味着不可能将组件添加到模型中,并且只填充部分设置-您必须预先填写所有内容。如果你在中途意识到你需要在你的模型中的其他地方做出改变,那么你不可能不取消和丢失你已经配置好的所有设置。

此更改会将模型验证推迟到运行时。模型可能暂时无效(例如,具有仅部分配置的算法组件)。现在可以在稍后阶段填充缺少的必需值,而不会丢失任何现有设置。如果运行的是无效的模型,则用户会收到一条描述性警告,通知他们需要进行哪些更改才能完成模型的配置。

此功能由开发 Nyall Dawson

特性:在创建常量栅格图层算法中添加了对不同栅格数据类型的支持

使用此功能,我们添加了一个新的高级 OUTPUT_TYPE 的参数 创建常量栅格层 算法。通过此参数,现在可以为常量栅格图层指定输出数据类型。

  • 字节

  • 整数16

  • 无符号整数16

  • 整数32

  • 无符号整数32

  • 浮动32

  • 浮动64

image93

此功能由开发 Clemens Raffler

特点:增加了圆栅格算法

通过这种新的处理算法,我们使QGIS能够 圆形栅格值 .

该算法的主要功能是对浮点单元格值进行标准的向上/最近/向下舍入,或舍入到用户指定基的幂 n . 该算法可用于所有类型的栅格(舍入为n的幂次时为偶数字节/整数栅格)并输出相同的栅格数据类型。整数栅格的标准浮点舍入将复制它并发出警告。

该示例显示了舍入为10的倍数的输出栅格

image94

此功能由开发 Clemens Raffler

功能:允许复制/剪切/粘贴模型组件

此功能允许用户在同一模型内和不同模型之间复制和粘贴模型组件

image95

参考NRCan合同3000707093

此功能由开发 Nyall Dawson

功能:允许将处理结果附加到现有图层

在附加结果时,用户可以选择“字段映射”面板选项,以允许用户手动设置字段映射到目标图层字段的方式:

image96

参考NRCan合同3000707093

此功能由开发 Nyall Dawson

功能:允许在模型中创建组框

将以下函数添加到模型设计器:

  • 在模型中自定义单个注释的颜色的能力

  • 允许在模型中创建“分组框”,这是逻辑链接模型组件的可视指示器(例如,“数据准备步骤”、“NDVI计算步骤”。。。等等)。用户可以自定义组框的颜色和标题。

  • 允许从“视图”菜单直接导航到组框,有助于复杂模型的导航。

image97

参考NRCan合同3000707093

此功能由开发 Nyall Dawson

功能:处理:通过设计器运行模型后,显示子级的输入和输出值

一张图片能很好地解释这一点!在设计器中运行算法后,现在可以看到为每个子算法的输入和输出计算的值:

image98

这对于调试模型非常有用--您可以看到通过模型的值流的更清晰的可视图片。

参考NRCan合同3000707093

此功能由开发 Nyall Dawson

特点:为模型添加“保存日志到文件”算法

此算法将执行日志的内容(直到“save log”算法执行的模型中的点)保存到文件中。

它可以用于在运行模型时自动存储调试日志,以便以后参考和透明。

参考NRCan合同3000707093

此功能由开发 Nyall Dawson

特性:允许直接在数据库(和其他非磁盘)源上运行算法,而无需先加载到项目中

此更改允许用户直接浏览到非基于磁盘的层源,以获取任何处理特征源输入。它允许直接从postgres、sqlserver、oracle、wfs、afs等层获取这些输入,而不必首先将它们加载到项目中!

我们充分利用QGIS浏览器来实现:

image99

参考NRCan合同3000707093

此功能由开发 Nyall Dawson

功能:按功能源公开处理输入的高级选项

此功能公开每个功能源的高级选项,例如:

  • 限制从源代码读取的功能的数量的能力。(在模型开发中很有用,您可以使用输入层的一小部分轻松地测试运行模型)

  • 基于每个输入重写全局处理选项以处理无效几何图形的能力。现在,您可以安全地将默认处理设置保留为保守的“当几何体无效时停止算法执行”设置,同时轻松地为一个特定输入临时覆盖此设置!

image100

参考NRCan合同3000707093

此功能由开发 Nyall Dawson

功能:在designer中为模型启用网格捕捉

此更新在处理模型设计器中实现了两个“捕捉”功能:

  1. 用户可以从“视图”菜单中启用一个新的“启用捕捉”选项,这将导致所有组件移动或调整大小操作自动捕捉到网格

  2. 在选择了一些组件之后,用户可以选择编辑->将所选组件捕捉到网格中,以手动方式仅捕捉这些选择的组件。

此外,我还添加了一个有用的“全选”操作,用于快速选择模型中的所有组件。

参考NRCan合同3000707093

此功能由开发 Nyall Dawson

特点:增加“按几何类型过滤”和“按图层类型过滤”算法

此更新为处理添加了两个新算法:

  • “按几何类型过滤”:此算法按几何类型过滤特征。根据输入要素是否具有点、线或多边形几何体,将其定向到不同的输出。它允许通过根据输入几何体类型应用不同的逻辑来创建响应不同输入层几何体类型的模型。

  • “按层类型过滤”:此算法允许基于输入层类型的条件模型分支。例如,它允许模型适应通用“映射层”参数输入的实际层类型,并决定作为结果运行模型的哪个分支。

它还添加了所需的API,允许算法根据计算结果“修剪”模型分支。例如,返回新 FlagPruneModelBranchesBasedOnAlgorithmResults 如果算法不返回特定的输出,则标志将导致模型中依赖于该算法输出的任何剩余部分被完全跳过。(这是未来通用的“按表达式进行条件分支”算法的先决组件,“按层类型筛选”也使用它来控制基于输入层类型的模型流)

参考NRCan合同3000707093

此功能由开发 Nyall Dawson

特点:“删除空几何体”算法也可以删除空几何体

空几何图形不包含坐标。因此,就像 null 几何体,空几何体不是严格意义上的空间数据。为了让用户更容易清理向量层 删除空Gometries 算法现在有一个“ 同时删除空几何图形 “选项。

image101

此功能由 SwissTierras Colombia

此功能由开发 Germán Carrillo

特点:添加多选择处理模型设计器,交互式调整大小

添加:

  • 在模型设计器中一次选择多个项的能力

  • 调整单个或多个项目大小的能力

  • 删除多个选定项的功能

  • 改进了模型设计器的“工具”交互,遵循布局设计器的方法(例如alt+space=zoom-drag模式,选择工具在布局中遵循对应的工具,因此shift+selection添加到选择中,ctrl+selection移除等)

  • 可通过光标键选择项目

参考NRCan合同3000707093

下面是它在运行中的样子(我使用的是一个特别难看的测试模型!)

image102

此功能由开发 Nyall Dawson

功能:添加对模型设计器的撤消/重做支持

让QGIS对用户更加宽容!

参考NRCan合同3000707093

正如您所期望的那样工作:

image103

请注意,我们将整个模型定义保存在撤消堆栈中,而不仅仅是受影响的组件更改。

此功能由开发 Nyall Dawson

功能:记住模型设计器运行之间的参数值

设计模型时,用户通常需要在调整模型结构时多次运行该模型。

此更改会导致从设计器运行模型时使用的参数被记住并保存到模型中,这样每次从设计器运行模型时,不必将所有输入参数值重新设置为所需的测试值。

使迭代模型设计更容易!

由Alta Ehf赞助

还包括模型设计器对话框从Python到c++的部分端口,因为c++>>Python。

此功能由开发 Nyall Dawson

特征:处理模型中的注释

这允许用户创建附加到模型组件(输入、算法或输出)的注释。注释显示链接到关联的构件,并且可以在模型中自由移动。

image104

由Fisel+König资助

此功能由开发 Nyall Dawson

功能:新的独立控制台工具,用于运行处理算法

这个新的qgis\ u进程工具允许用户直接从控制台运行处理算法(内置的和插件提供的)。

运行中:

  • qgis_process list 将输出按提供程序分组的所有可用算法的完整列表。

  • qgis_process plugins 列出公布hasProcessingProvider元数据选项的可用和激活插件(工具只加载这些插件)

  • qgis_process help algid outputs the help and input descriptions for the specified algorithm, e.g. qgis_process help native:centroids

qgis_process run :运行算法。参数由 --param=value 语法。例如。

qgis_process run native:centroids --INPUT="my_shapefile.shp" --OUTPUT="centroids.kml"

qgis_process run native:buffer --INPUT=/home/me/my.shp --DISTANCE=20 --OUTPUT=/home/me/buffered.shp

运行算法时,会显示一个基于文本的反馈栏,可以通过CTRL+C取消操作

由瑞典用户组赞助

此功能由开发 Nyall Dawson

特性:日期时间(或日期或时间)值的新参数类型

添加新的参数类型QgsProcessingParameterDateTime以处理日期/日期时间/时间值。

此功能由开发 Nyall Dawson

功能:添加从模型中发出警告和异常的算法

这些算法要么在处理日志中引发自定义警告,要么引发导致模型执行终止的异常。

可以指定一个可选的条件表达式来控制是否引发警告/异常,允许类似“如果另一个算法的输出层包含10个以上的特性,则中止模型执行”这样的逻辑。

由Fisel+König赞助

此功能由开发 Nyall Dawson

特点:添加填充节点数据单元算法

在新的QGIS版本中,我们引入了一种新的处理算法,用恒定的数值输入填充栅格数据集中的NoData单元。

该算法扫描输入栅格数据集中的NoData单元格,并用用户定义的填充值填充它们。这样,该算法将考虑输入栅格的数据类型,以便对整数栅格适当地处理浮点数。结果数据集将不包含任何NoData单元格。

image105

此功能由开发 Clemens Raffler

特点:各种修复处理

  • 完成GRASS算法中距离参数支持的工作;

  • 修正坏r级数算法

  • 对r.rescale和r。重缩放.eq

  • 修复栅格化工具

  • 草地GIS测试清理

此功能由开发 Alexander Bruy

特点:在“重构字段”算法界面显示“模板层”字段约束

迁移数据时,必须注意目标层(也称为模板)上的约束。

“重构字段”算法现在突出显示约束,甚至通过工具提示让您了解更多约束。

image106

此功能由 SwissTierras Colombia

此功能由开发 Germán Carrillo

特点:新的曲线转换算法

我们增加了一个新的曲线几何转换算法。

如果连续点的间距相等且在公差范围内,则该算法考虑连续点来表示曲线。

image107

此功能由开发 Nyall Dawson

应用程序和项目选项

功能:添加@layers,@layer\u ids项目范围变量

添加@layers,@layer\u ids project scope变量,其中包含当前项目中所有图层的地图图层和地图图层ID列表

这模仿了现有的@map\u layers,@map\u layer\u id,但与@map变量不同,这些变量返回所有项目层,而不仅仅是与当前上下文的映射设置相关联的层。

SLYR赞助

此功能由开发 Nyall Dawson

数据提供者

特性:允许在“新建暂存层”对话框中添加属性

允许用户直接在“新建暂存层”对话框中添加属性,使其与其他对话框(如新形状文件/地理包)更加一致。 image108

通过不向列表中添加任何字段,仍然可以创建没有任何属性的草稿层。

此功能由开发 Alexander Bruy

功能:允许从“新建形状文件”对话框创建无几何样式的DBF表

允许从“新建形状文件”对话框创建没有关联几何图形的“普通”DBF文件。

image109

在某些情况下,创建DBF表可能很有用,因此必须使用第三方工具而不是从QGIS中进行创建是不方便的。这也使得新的Shapefile对话框与新的Geopackage对话框更加一致,后者已经允许创建“geometryles”表。

此功能由开发 Alexander Bruy

功能:允许在源对话框中过滤WM(T)S列表

添加从“源”对话框在WMS或WMT列表之间进行筛选的功能

WMS image110

WMTS image111

由QGIS瑞士用户组赞助

此功能由开发 Denis Rouzaud

功能:将矢量平铺添加到数据源管理器对话框和层菜单

向“数据源管理器”对话框添加一个新选项卡,允许用户管理/添加矢量平铺连接,包括导入/导出。还将相应的条目添加到层菜单。

此功能由开发 Alexander Bruy

功能:导入/导出ArcGIS地图和FeatureServer连接

为ArcGIS MapServer和FeatureServer连接添加丢失的导入/导出功能。

此功能由开发 Alexander Bruy

功能:将XYZ平铺添加到“数据源管理器”对话框和“图层”菜单

向“数据源管理器”对话框添加新选项卡,允许管理/添加XYZ连接。还可以向层菜单添加相应的条目。

此功能由开发 Alexander Bruy

功能:Spatialite事务组

本机SpatiaLite提供程序的事务实现。

此功能由 ARPA Piemonte

此功能由开发 Alessandro Pasotti

特性:允许将输出直接保存为更多的数据库格式(以及其他不错的格式)

此更新允许用户将处理矢量输出直接保存为更多的数据库格式。

以前的输出只能直接写入postgres数据库。通过这一更改,此功能变得更加灵活,现在支持直接写入任何实现connections API的数据库提供程序(目前是postgres、geopackage、spacealite和sqlserver)

最终,这暴露了直接将输出保存到SQL Server或Spatialite数据库的新功能(与之前已经存在的GPKG+Postgres选项一起)

(只要oracle、db2。。。实现连接API后,我们也将立即获得对这些API的直接写入支持!)

我们通过新的“newdatabasetablename”小部件的一个不错的内联版本来实现这一点。

image112

其他好东西包括:

  • 您现在可以从资源管理器或qgis浏览器拖放文件或文件夹以输出参数,以便轻松覆盖这些文件(或保存到文件夹),将可能的行为与输入匹配

  • 实际上,您可以编写直接输出到任何qgis数据提供程序(包括oracle和db2)的脚本。。。只是这些代码不会在UI中公开,因为它们还不支持connections API

参考NRCan合同3000707093

此功能由开发 Nyall Dawson

功能:为数据库连接添加专用参数类型

允许从注册的数据库连接中选择特定的数据库提供程序类型(提供程序必须实现连接API)。

参考NRCan合同3000707093

此功能由开发 Nyall Dawson

特点:PG:暴露外部表

向浏览器和数据源选择对话框公开外部表。

此功能由开发 Alessandro Pasotti

特点:PG栅格曝光设置过滤器到应用程序

这应该是对PG栅格数据提供程序的最终更改,并显示设置过滤器选项:

  • 过滤器可以在“数据源”对话框中设置(对于矢量图层)

  • 过滤器可以从图例树的上下文菜单中设置(对于向量层)

  • 渲染器、范围和最小/最大统计信息也会在过滤器更改时更新

  • 新行为的新测试

image113

此功能由 ARPA Piemonte

此功能由开发 Alessandro Pasotti

Feature:Postgres:使用生成的字段将要素保存到表中

允许在带有生成字段的PostgreSQL表中更新/插入功能。GENERATED columns是PostgreSQL 12引入的一项功能,它允许从同一表中的其他列生成列值;这替代了触发器的创建,例如,自动填充并保持主几何体列中多边形的质心列或区域列的最新信息。

此功能由开发 José de Paula Rodrigues N. Assis

特性:日期和日期时间字段类型支持添加到Spatialite和分隔文本提供程序中

Spatialite和Delimited文本提供程序现在支持日期和日期时间字段类型。

此功能由开发 Mathieu Pellerin

QGIS服务器

功能:添加QGIS\服务器u忽略u坏u层配置选项

允许在出现坏层的情况下重写默认行为(这将使整个项目无效)。

设置为TRUE时,将跳过不正确的图层,项目的其余部分将可用。

此功能由 Geoinformatikbüro Dassau GmbH

此功能由开发 Alessandro Pasotti

功能:服务器项目设置,添加“扩展”属性

除了“visible”和“mutuallyExclusive”属性外,此更新还将“expanded”添加到服务器的GetProjectSettings响应中。更新允许web客户端查看哪些层树元素被展开/折叠,然后以相同的方式在web地图层列表中显示它们。

此功能由开发 mhugent

功能:添加DXF服务器导出参数NO\\ MTEXT和FORCE\ 2D

现在QGIS服务器支持新的参数 NO_MTEXTFORCE_2D 控制生成的DXF文件的文本和行符号。

向GetDxf请求添加缺少的参数。

此功能由开发 Matthias Kuhn

特点:WMS项目验证程序

QGIS服务器验证程序已经过审查。当您要使用WMS协议发布QGIS项目时,此工具非常有用。

对于程序员来说,验证器现在也可以从PyQGIS调用,所以插件现在也可以使用它了。

此功能由 3Liz

此功能由开发 Etienne Trimaille

特点:Webp

WebP是一种现代图像格式,它为web上的图像提供了优越的无损和有损压缩。WebP创建更小、更丰富的图像,使web更快。

与PNG相比,WebP无损图像的大小要小26%。在同等的SSIM质量指数下,WebP有损图像比可比JPEG图像小25-34%。

资料来源:https://developers.google.com/speed/webp

有了webpqgis服务器现在支持一种格式,这种格式可以为相同的质量提供更小的文件大小,甚至提供透明性。

此功能由 OPENGIS.ch

此功能由开发 Matthias Kuhn (OPENGIS.ch)

插件

特性:允许插件注册自定义的“项目打开”处理程序

这些插件允许插件通过添加对新文件过滤器的支持来扩展“openproject”对话框,这些过滤器出现在现有的“QGS Projects”条目旁边的“formats”下拉列表中。

自定义项目打开处理程序,然后第一次有机会加载项目文件。

允许从项目中直接从gz/gz文件中打开,以支持从gz/gz文件直接打开的项目。

这些非本地项目也被添加到最近的项目列表和欢迎屏幕中,让他们在QGIS中获得真正一流的体验。

SLYR赞助

image114

此功能由开发 Nyall Dawson

功能:允许用户安装稳定的或实验性的插件

此更新通过允许用户选择安装稳定版本或实验版本的插件来改进插件管理器。

这样就可以在存储库中为高级用户测试插件的预发布版本,同时还允许他们轻松地切换回稳定版本,而不必取消对全局的锁定 启用实验 选择权。

对于未检查 启用实验 选择权。

image115

此功能由 Swiss QGIS User Group

此功能由开发 Olivier Dalang

可编程性

特性:支持将dock小部件添加为选项卡:addTabifyDockWidget()

Dock小部件非常适合显示扩展QGIS功能的复杂界面。

现在,核心开发人员和插件开发人员都可以选择在现有的dock小部件的基础上对它们的dock小部件进行标签化。他们甚至可以选择在哪个dock widget上显示他们自己的dock widget。

image116

此功能由 SwissTierras Colombia

此功能由开发 Germán Carrillo

特性:端口输出参数包装到新的API

将输出参数包装器(接收器、矢量、栅格、文件和文件夹目标)移植到dialog和modeler的新c++API。

这就提供了一系列新的可能性,包括:

  • 具有子算法静态输出的模型,例如始终将子算法的输出保存到geopackage或postgres层

  • 为子算法使用基于表达式的输出值的模型,例如根据今天的日期生成自动文件名并将输出保存到该文件中

image117

参考NRCan合同3000707093

此功能由开发 Nyall Dawson

特性:将最后剩余的输入参数移植到新API

此更新将栅格带输入参数和多层输入参数传送到新的C++ API。

好处包括:

  • 模型中基于表达式的标注栏/图层列表

  • 多选择参数(字段、标注栏、图层列表、枚举)的内联(非阻塞)列表

  • 重新排列模型中多层参数的输入,以设置特定的层顺序

参考NRCan合同3000707093

此功能由开发 Nyall Dawson

特性:将特征源、栅格、矢量和网格层参数移植到新的API

现在可以在处理模型中使用基于表达式的层源。

参考NRCan合同3000707093

此功能由开发 Nyall Dawson

特征:矢量平铺层-第1部分

这是关于矢量平铺层支持的初步工作。

image118 (红线不是渲染工件,而是有意绘制以显示平铺边界。)

总结

到目前为止,这只包括对qgis\ u核心库的更改。

公共API的主要新增内容:

  • 主地图图层类

  • QgsVectorTileRenderer-矢量平铺渲染器类实现的基类

  • QgsVectorTileBasicRenderer-默认呈现器实现

新的私有类(如果需要,可以添加到公共API中):

  • QgsVectorTileLoader-处理从网络/mbtiles获取磁贴

  • QgsVectorTileMVTDecoder-处理原始分片数据到功能的解码

  • qgsvectortilelayerrender-负责整体渲染(fetch+decode+draw)

  • QgsVectorTileUtils-各种有用的函数

矢量和栅格平铺可能共享的一些新类:

  • QgsTileXYZ-平铺矩阵集中的平铺位置(缩放级别、列、行)

  • QgsTileRange-平铺矩阵中的矩形选择(开始/结束列和行)

  • QgsTileMatrix-平铺矩阵的描述(地图范围、缩放级别、比例、行/列数)

(当我们支持除GoogleCRS84Quad之外的其他tile矩阵集时,还将添加QgsTileMatrixSet)

测试

您可以从Python控制台加载向量平铺层,例如:

ds = QgsDataSourceUri() ds.setParam("type","xyz")
ds.setParam("url", "https://api.maptiler.com/tiles/v3/{z}/{x}/{y}.pbf?key=YOUR_FREE_API_KEY")
uri = bytes(ds.encodedUri()).decode('utf-8')
vtl = QgsVectorTileLayer(uri, "Vector Tiles Test")
QgsProject.instance().addMapLayer(vtl)

也可以从本地MBTiles文件加载向量tiles-对于“type”使用“MBTiles”,对于“url”使用本地路径(例如“/home/martin/x.MBTiles”)。

当前不支持标记。

谢谢

非常感谢所有为众筹做出贡献并使之成为可能的资助者-https://www.lutraconsulting.co.uk/blog/2020/04/02/vectortiles-designers

此功能由 QGIS Community

此功能由开发 Lutra Consulting (Martin Dobias)

特点:端口处理范围参数到新的api,许多其他的改进

此更新最终将extent参数移植到新的c++api中,但在此过程中:

  • 重构现有的gui小部件“QgsExtentGroupBox”以将内核移到“QgsExtentWidget”(允许它在分组框不合适/看起来不好的地方使用)。它还为小部件添加了一个新的“压缩”模式,因为默认外观非常占用空间。

  • 新的parameter小部件使用了这个公共的qgsextendwidget,因此我们删除了旧python包装器以前使用的所有重复代码

  • 允许将项目地图图层从图层树拖放到QgsExtentWidget,以自动设置要匹配的范围

  • 允许QgsExtentWidget可选为空

  • 允许为范围参数值设置QgsGeometry值。这样做是为了帮助使用模型中的“预计算值”模式中的范围参数——现在可以使用所有表达式几何函数来计算几何体,并且该几何体的边界框用于子算法中的参数值

参考NRCan合同3000707093

此功能由开发 Nyall Dawson

特性:统一开发/调试工具的接口和API

添加接口钩子以允许插件(和c++)注册“开发/调试”工具

这些工具出现在新的开发/调试工具基座中,并为这些工具在UI中提供统一的处理和位置。

这里的目的是将专门的开发/调试工具移到这个公共接口上,例如。

  • 网络记录器

  • 急救式Python局部变量检查器

  • 启动时调试工具

  • 层加载和渲染时间调试工具?

下面是一个演示“Python locals”开发工具的示例:

image119

此功能由开发 Nyall Dawson

特点:支持QgsProcessingParameterMapLayer的数据类型

允许为定义可接受的图层类型 QgsProcessingParameterMapLayer . 当一个算法可以处理不同的图层类型(例如,点和栅格)时,这很有用,并且可以避免使用不同的输入重复相同的算法。

这是一个API改进,绝大多数用户看不到。

此功能由开发 Alexander Bruy

功能:为数据库架构和表名添加处理参数类型

使用基于核心连接api构建的包装器,将以前的特殊PythonPostGIS小部件包装器替换为模式和表的适当的一级c++专用参数。

参考NRCan合同3000707093

此功能由开发 Nyall Dawson

显著的修正

功能:Alessandro Pasotti修复的错误

错误标题

url issues.qgis.org(如果报告)

URL提交(GitHub)

3.10后台提交(GitHub)

Getfeatureinfo不显示QGIS服务器的关系引用项

#36549

结果是一个功能请求

不适用

OGR提供程序QgsOgrProvider::ChangeAttributeValue在出现错误时返回true

#36583

PR #36620

不适用

GPKG事务组使用空的第二对密钥存储

#36525

PR #36660

PR #37157

使用关系的符号学不会在QGIS服务器中传播

#36614

无法复制

不适用

“加载带有QGIS 3.12.3崩溃的PostGIS栅格”

#36689

PR #36702

不相关

GetFeatureInfo Fid值在application/json和application之间不同/vnd.ogc.gml公司

#36262

PR #36733

PR #37158

OGR(和spatialite)提供程序不支持GPKG(和spatialite)DB级唯一约束

#36468

PR #36802

不适用

如果值映射中缺少值,则属性窗体中没有值

#32756

PR #36804

不适用

数据库管理器不再显示查询结果

#36205

PR #36823

不适用

数据库管理器不再显示查询结果

#36205

PR #36831

不适用

GPKG浏览器拖放不工作

未报告的

PR #36972

PR #37159

无法在地质包中保存项目

#36832

PR #36980

不适用

使用日期/时间编辑小部件,可以将文本存储到数字字段中,而不应该存储到数字字段中

#36715

#36715

不适用

使用连接时特征创建非常慢

#36167

PR #36866, PR #36963

不适用

QGIS服务器:WFS请求不在几何体上使用SrsName

#36398

PR #36926, PR #37071

不重要

无法从浏览器中删除存储的geopackage连接

#36930

PR #36937

PR #37166

约束:当0时,唯一约束未正确计算

#36962

PR #36967

不适用

PyQgis:OriginJoin fields arte不存在于地质包层的QgsLayerVector QgsFields容器中

#36977

不可复制

不适用

即使选中“可编辑连接层”选项,也无法编辑连接表

#36934

不可复制/进行中

不适用

从qgisservice/qgisserverapi中删除未使用的“allowMethod”

#36163

PR #36997

不适用

优化窗口标题

#35761

PR #36998

不适用

标签:数据定义对齐灰显激活问题

#37003

PR #37006

PR #37167

当GeoPackage目录被写保护时,QGIS报告GeoPackage中“没有层”

#36574

PR #37018

不重要(仅限UX)

即使选中“可编辑连接层”选项,也无法编辑连接表

#36934

无法修复

不适用

数据库管理器中查询的Postgis时间戳显示为`PyQT5。QTCore.QDateTime(2020年3月17日)

#35140

PR #37042

不适用

表单中的图像预览和图像预览大小错误

#33682

PR #37093

PR #37168

如果“区域设置”使用逗号作为小数分隔符,则无法更改顶点编辑器中的值

#29682

PR #37135

PR #37169

用“特征”格式识别WMS图层

#29443

PR #37171

PR #37210

尝试使用事务组和NOT NULL约束在Spatialite中创建新功能失败

#37236

无法修复

不适用

使用“Add feature”创建带有事务组的功能和子功能会导致外键错误

#37222

PR #37249

不重要

空间矢量层缺失特征和不一致特征计数

#29264

PR #37277

TODO

此功能由 QGIS.ORG (through donations and sustaining memberships)

此功能由开发 Alessandro Pasotti

功能:由Lo_c Bartoleti修复的错误

错误标题

url issues.qgis.org(如果报告)

URL提交(GitHub)

3.10后台提交(GitHub)

修正矢量层有Z时的错误

#32016

PR #36553

PR #36595

从3个点固定矩形

#35043, #35671

PR #36523

PR #36560

允许在不同路径中搜索qmlplugindump

不适用

PR #36513

不适用

修复高级配置小部件中缺少单词的问题

PR #35643 #问题建议-610215386

PR #36511

不适用

固定分割几何体上的插值

PR #36514

#33489

不适用

此功能由 QGIS.ORG (through donations and sustaining memberships)

此功能由开发 Loïc Bartoletti

功能:由Even Rouault修复错误

错误标题

url issues.qgis.org(如果报告)

URL提交(GitHub)

3.10后台提交(GitHub)

对QGIS dev(projv7.1.0)中PRJ文件中EPSG代码的错误解释

#36111

PROJ PR 2240

不适用:项目问题

将文件添加到geopackage->layer->field(BLOB)时,QGIS崩溃

#30210

PR #36722

PR #36737

WFS连接失败时出现错误消息

#29866

PR #36717

PR #36735

在CRS切换后的地图重新渲染过程中,QGIS崩溃

#29672

无法复制

不适用

当从最近的项目上下文菜单中选择“opendirectory”时,QGIS崩溃

#31630

PR #36738

PR #36755

54019和54042 CRS中的重射栅格问题

#35512

PROJ PR 2243

不适用:项目问题

WFS提供程序警告-使用flatpak安装时无法创建临时SpatiaLite缓存

#36545

PR #36745

不适用

使用GetCapabilities URI的WFS事务操作

#34307

PR #36746

不适用

显示两个PostGIS栅格图层时,QGis 3.10.2崩溃

#34456

不适用

QGIS 3.4.10崩溃-Python

#31304

已在master中修复

PR #36751

WMS提供程序要求SERVICE=WMTS关键字大写以检测WMTS

#36659

PR #36752

PR #36766

WCS DescribeCoverage响应源始终为空

#36504

PR #36754

PR #36781

如果层包含0,0处的点,则范围错误

#33823

不是QGIS错误。固定在GDAL 3.1中

不适用

无法从Mapinfo Conversation识别投影

#34471

PR #36758

PR #36783

当添加一个大的CSV文件作为分隔文本层时,QGIS崩溃/冻结

#36392

PR #36778

PR #36810

QGIS 3.12未知CRS或选择转换

#36837

GDAL Commit 68133b8

GDAL Commit 6ae7f60

BIGTIFF错误在处理日志时不明显

#36867

GDAL Commit cfc8e61

GDAL Commit fb88e3c

此功能由 QGIS.ORG (through donations and sustaining memberships)

此功能由开发 Even Rouault

特写:由保罗·布洛蒂埃修复的错误

错误标题

url issues.qgis.org(如果报告)

URL提交(GitHub)

3.10后台提交(GitHub)

添加层时修复segfault

Mailing list

PR #36910

不适用

固定信号连接

未报告问题

PR #35836

不适用

更新API以导出JSON中的图例

未报告的约束问题

PR #36370

不适用

矢量平铺层(文件)不可用时的核心转储

#36821

无法复制

不适用

当mapcanvas extents=nan时,项目打开时崩溃

#35899

无法复制

不适用

在栅格计算器崩溃QGIS中使用一些函数

#35583

PR #37273

不适用

辅助存储在不可编辑层中不可用

#30376

已经修复。关闭。

不适用

用GCC 10、Qt/PyQt 5.15.0和sip4.19.23修复编译

#37072

PR #37116

PR #37250

此功能由 QGIS.ORG (through donations and sustaining memberships)

此功能由开发 Paul Blottiere

功能:由Julien Cabieces修复的错误

错误标题

url issues.qgis.org(如果报告)

URL提交(GitHub)

3.10后台提交(GitHub)

可复制碰撞使用QgsMapCanvas.items()使用Oracle层

#33791

PR #36240

PR #36246

在“用户表达式帮助”面板中忽略换行符

#36191

PR #36249

PR #36387

“编辑用户表达式”不允许重命名用户表达式

#36192

PR #36349

不适用

无法更改栅格符号类的标签

#36172

PR #36376

PR #36533

层不可用时崩溃

#33300

无法复制

不适用

Select by表达式返回错误结果,并对形状文件进行整数字段划分

#35449

PR #2531

不适用

如果任何字段为NULL,则使用concat(field1,field2)连接0而不是空字符串(“”)

#36112

PR #36521

PR #36529

在3.10.3中打开空白文件时卡在最近的项目窗口

#34809

无法复制

不适用

如果特征被识别,QGIS在获取mapCanvas场景项目时崩溃

#34457

PR #36439

PR #36450

排序列上的值不一致

#36114

PR #36776

PR #36887

基于sqlite文件的虚拟层中的缺失点(取决于画布比例)

#36054

PR #36792

PR #36718

一旦在画布上移动光标,项目就会被修改

#36796

PR #36797

PR #36718

当多个几何图形类型时,将过滤器应用于错误的表格“版本”

#34982

PR #36801PR #36718

此功能由 QGIS.ORG (through donations and sustaining memberships)

此功能由开发 Julien Cabieces

功能:由伯特兰瑞克斯修复错误

错误标题

url issues.qgis.org(如果报告)

URL提交(GitHub)

3.10后台提交(GitHub)

顶点工具覆盖全局捕捉参数

#36229

PR #36231

不适用

使用QgsGeometry方法对空集合执行QGIS崩溃

#36142

PR #36351

不适用

选择性掩蔽:暗色背景上的幻影线

#34650

PR #36697

不适用

选择性遮罩:遮罩不透明度问题

#34947

PR #36697

不适用

此功能由 QGIS.ORG (through donations and sustaining memberships)

此功能由开发 Bertrand Rix

特写:塞巴斯蒂安·佩莱特修复错误

错误标题

url issues.qgis.org(如果报告)

URL提交(GitHub)

3.10后台提交(GitHub)

[甲骨文公司] 保存几何图形时出错,因为错误的默认值#34482

#34482

PR #36769

不适用

对oracle层的日期列的默认值的查询无效

#32401

PR #36769

不适用

拖放形式的组的“可见性按表达式”中缺少字段

#35196

PR #36824

不适用

项目自定义比例尺以科学符号显示

#36859

PR #36860

不适用

甲骨文:表格列出一次多边形和一次多角形,但都显示所有的几何图形

#32521

PR #34358

不适用

在使用QGis Linux版本的栅格符号系统中,无法将最小/最大值设置为十进制

#33859

PR #37136

不适用

此功能由 QGIS.ORG (through donations and sustaining memberships)

此功能由开发 Sebastien Peillet

功能:亚历山大·布鲁的错误修复

错误标题

url issues.qgis.org(如果报告)

URL提交(GitHub)

3.10后台提交(GitHub)

截断变量的副本复制截断的文本,而不是原始文本

#30641

PR #36554

PR #36576

关闭多重编辑模式不会返回表视图

#25099

PR #36541

PR #36630

草处理:缺少参数名称

#36520

PR #36644

PR #36690

stdout文件临时重定向处理算法

未报告的

PR #36618

PR #36684

修正GRASS r.tileset算法

未报告的

PR #36645

PR #36695

QgsRasterTerrainAnalysisPlugin:检查QgsRelief::processRaster()返回值

#17452

PR #36731

PR #36740

当图层属性窗口太小时,图层属性中分级样式的柱状图将消失

#25197

PR #36732

PR #36749

使用atlas选项“保存世界文件”导出图像会导致不正确的世界文件命名(缺少点后的文本)

#34523

PR #36742

PR #36748

从崩溃报告对话框“重新加载QGIS”无法重新打开项目

#25532

PR #36736

PR #36750

仅当输出文件有.SLD后缀时,才能将栅格样式导出到SLD

#35944

PR #36774

PR #36795

[样式管理器] 从“导出”对话框中的“按类别选择”对话框中的“按缺少的符号”导出

#27315

PR #36793

不重要

三角网插值-输出栅格格式和尺寸问题

#31970

PR #36822

PR #36844

图层面板:“编辑符号”如果没有为规则定义符号(在基于规则的渲染中)则不执行任何操作

#23048

PR #36954

不重要

服务区算法结果中的属性转移

未报告的

PR #37074, PR #37097

不适用

Processing testing framework不将舍入应用于转换为数字的值

未报告的

PR #37234

不适用

此功能由 QGIS.ORG (through donations and sustaining memberships)

此功能由Alexander Bruy开发

功能:由nyall dawson修复的bug

错误标题

url issues.qgis.org(如果报告)

URL提交(GitHub)

3.10后台提交(GitHub)

修复网格3d渲染器中的泄漏

未报告的

Commit 4b5a63d

不适用

修复了使用地图单位大小的米来渲染符号预览时的挂起

#28690

Commit 7c6286f

不--太干涉了

在CSS代码编辑器中修复字体

未报告的

Commit 63cb42c

不重要

修复返回几何体集合结果的几何体生成器表达式的呈现

#35356

Commit be281c49

不--太干涉了

[处理] 正确地将日期时间输入(以及其他一组)公开为in模型表达式的输入

#37219

Commit 281356a

不适用

修复所有Qt5.14弃用警告

未报告的

Commit 3717adc

不--太干涉了

[符号学] 渲染多部分几何体时,请确保几何体生成器符号仅渲染一次,而不是每个零件渲染一次

#23730

Commit d98fe9f

不--太干涉了

[布局] 使“显示功能计数”按钮应用于所有选定的索引

#37194

Commit 671cebc

不--太干涉了

修复容器“显示为组框”设置在关闭层属性对话框时丢失

#37205

Commit 803f507

不适用

使用更强有力的语言来劝阻用户使用Proj字符串创建自定义投影

#37204

Commit 7ec4968

否--字符串更改

在质心填充小部件中始终使用“标记”术语

#37106

Commit 2596b6b

否--字符串更改

修复了dox/PyQGIS API中的编号列表处理

未报告的

Commit 74400c7

修复PyQGIS文档中的交叉引用

未报告的

Commit 81a9db9

[布局] 修复属性表排序顺序与功能过滤器组合在空表中的结果

#36341

Commit 24897ab

不适用

将标注渲染修复到旋转的标签

#36681

Commit 2bb4aad

不适用

修正加工模型中的草产量处理

#36379

Commit ef19911

修正矢量数据集在某些CRS视图中错误地简化为矩形

#36898

Commit 47fba10

不--太干涉了

修复PyQGIS文档中的列表项格式

未报告的

Commit 84ec481

不适用

[处理] 修复小部件中范围值的手动输入

#36787

Commit ccc34c7

不适用

[装饰品] 在计算比例尺装饰的大小时,请使用适当的椭球体长度计算

#28407

Commit af19cea

PR 36718 Commit a91309d

修复镶嵌后收集的三角形几何体类型

#36638

Commit df46fba

不--太干涉了

修复通过QgsVectorFileWriter写入三角形几何体类型失败的问题

#36638

Commit e0c03f9

不--太干涉了

修复细分结果中的退化

#37077

Commit 61e7a5f

不适用

当OGR拒绝接受已编译的功能请求表达式时,将忽略修复层子集字符串

#37073

Commit b5b4221

PR 36718 Commit f486cf6

[传说] 修复布局设计器中损坏的数据定义的图例呈现

#36765

Commit 8d00ae8

不--太干涉了

避免一些QGIS启动警告

未报告的

Commit 013f682

不适用

将“向量特性”中的“三维”选项卡放置在正确的位置

#35010

Commit ce9f5194

不适用

重新打开矢量图层特性时,不会激活“修复3d”选项卡

#35011

Commit 3c0ecbf

不适用

[标记] 修复移动“取消放置”标签后不正确的标签放置

未报告的

Commit cbfb7f4

PR 36718 Commit 9189dec

不阻止在“矢量另存为”对话框中创建新的地质包

未报告的

Commit 8ccd127

不适用

[浏览器] 优化refreshConnections方法以避免触发所有浏览器内容的完全刷新

#37007

Commit a9d6b04

不--太干涉了

[3d] 显示边时,未考虑数据定义的多边形高度

未报告的

Commit e516231

不适用

修复了“全部显示”标签模式

未报告的

Commit 2b91bd0

不适用

[3d] 功能的修复重投影不显示任何功能

#34824

Commit 62bd026

不适用

[处理] 添加文件目标参数的元数据设置,以避免文件覆盖确认提示

#37011

Commit e81af2c

不适用

避免在不需要时错误地对某些对象(例如地图标签)进行抗锯齿渲染

#36964

Commit bab83844

不--太干涉了

确保在呈现时提取标签的标记符号背景所需的字段

#36944

Commit 8fb8e45

不--太干涉了

修复在属性窗体中打开筛选器模式时“缩放”和“闪光”功能按钮不起作用

#34506

Commit 6b2795

不适用

在某些情况下避免损坏的项目缩略图

未报告的

Commit f404e6e

不适用

打开“添加图层到图例”对话框时自动聚焦搜索框

#36905

Commit 019e494

不重要

[处理] 为点对层算法设置正确的输出层类型

#36941

Commit 7ee85cd

不适用

“限制将功能复制到画布和python控制台到控制台小部件的Ctrl+C快捷方式的范围”

#27035 (其他人也有)

Commit 873716c

不--太干涉了

记住布局设计器窗口位置

#36907

Commit 97d31d0

不重要

修复放大到标签太远时的崩溃

#36346

Commit 3aa5e56

Commit a22635b

[处理] 允许为模型中的字段映射输入指定父层

#26493

Commit b8d4a39

不--太干涉了

修复hidpi屏幕上消息栏“全部清除”菜单箭头的位置

未报告的

Commit 8a9975b

不重要

当用户手动触发时,总是刷新插件库

#34351

Commit 98603b7

PR 36718 Commit 0fcf6dc

[3d] 向Python公开3d算法提供程序

#36661

Commit 1f835df

不--太干涉了

[符号学] 导出点填充图案时不要强制栅格化输出

#16100

Commit 23396b7c

不--太干涉了

[布局] 在atlas导出期间不要多次刷新地图画布

#30144

Commit 57519e9

不重要

[处理] 修正了经纱输出参数的双重评价

#30095

Commit adeca2f

修复关闭atlas预览时不正确的警告消息

未报告的

Commit 3b0af960

不适用

当显示多条消息时,加快消息栏的操作

#29698

Commit 5dd29f0

不--太干涉了

固定方向的最小包围盒计算在某些情况下是错误的

#36632

Commit 97d0988

PR 36718 Commit 68c6a0e

确保选择时始终忽略符号不透明度

#27859

Commit 4de6a53

PR 36718 Commit 99eb710

修复符号导出对话框中符号的随机排序顺序

#20572

Commit 987310f

PR 36718 Commit bfa6058

允许清除热图权重字段

#20256

Commit 3961fa2

PR 36718 Commit d2600d6

将SAGA的“合并层”算法标记为存在已知问题

#36375

Commit f676c821

不适用

解决奇怪的上游Qt问题,当输出到打印机设备时,使用不带实心图案的半透明画笔的画笔将画笔不透明度错误地应用于画笔

#36580

Commit 38c8218

PR 36718 Commit a562b67

改进插件看门狗消息和用户体验

未报告的

Commit 150b373

不--太干涉了

“ [布局] 预览地图集时遇到没有几何图形的要素时发出警告,当一个或多个地图设置为由地图集要素驱动时“

#36556

Commit 6ce84d2

不--太干涉了

避免项目“对象不是串联操作”警告

未报告的

Commit 6baa209

“修复内存层如果没有关联的权限,则会丢失CRS定义”

#36241

Commit e23a49a

PR 36718 Commit c9350eb

为OGR提供者实现空间索引检测

#30530

Commit f20801a

PR 36718 Commit 536906e

修复栅格图层特性的错误对话框标题

#35510

Commit 2099261

PR 36718 Commit e809f48

不要试图识别仅为椭球体定义创建的CRE

未报告的

Commit 15b318b

不--太干涉了

此功能由 QGIS.ORG (through donations and sustaining memberships)

此功能由开发 Nyall Dawson

特写:Denis Rouzaud修复的Bug

错误标题

url issues.qgis.org(如果报告)

URL提交(GitHub)

3.10后台提交(GitHub)

允许按表中未列出的字段对属性表进行排序

#25671

PR #36236

不适用

修复层树依赖关系(showinf符号和主层)

未报告的

PR #37000

不适用

修复表达式编辑器:如果表为空,语法检查将失败

#37100

PR #37137

不适用

修复表达式预览小部件中功能的设置

#37214

PR #37221

不适用

显示WFS图层的属性表时冻结

#37224

尚未修复

不适用

在包含100多个条目的表中查找时,关系引用窗体部分的值不正确

#37266

PR #37280

PR #37286

此功能由 QGIS.ORG (through donations and sustaining memberships)

此功能由开发 Denis Rouzaud

特写:由Audun Ellertsen修复错误

错误标题

url issues.qgis.org(如果报告)

URL提交(GitHub)

3.10后台提交(GitHub)

SpatiaLite支持导入带有二进制字段的层

#36705

PR #36744

不适用

PostGIS支持使用二进制字段导入图层

#36705

PR #36708

PR #36720

此功能由 Kongsberg Digital

此功能由开发 Audun Ellertsen