Modifications apportées par QGIS 3.14

image1

Une autre version géniale dans la lignée des grandes versions de QGIS que nous avons réalisées en 18 ans de développement. Cette version est tellement remplie de nouvelles fonctionnalités et d’améliorations, petites et grandes, qu’il est difficile de savoir par où commencer. Parmi les caractéristiques les plus marquantes, citons le support des tuiles vectorielles, les énormes progrès réalisés dans le support mdal/maillage(mesh), le support natif des données temporelles dans WMS-T, PG Raster, les providers vectoriels et les couches de maillage. Les utilisateurs qui se concentrent sur la cartographie et la numérisation n’ont pas été laissés de côté non plus, avec de nombreuses nouvelles options pour vous !

Remerciements

Nous souhaitons remercier les développeurs, rédacteurs de documentation, testeurs et tous ceux qui ont volontairement donné du temps (ou donné de l’argent). La communauté QGIS espère que vous apprécierez cette version ! Si vous souhaitez donner un peu de votre temps, d’argent ou vous impliquer d’une autre manière pour rendre QGIS encore plus génial, faites un tour sur QGIS.ORG et donnez nous un coup de main !

QGIS est soutenu par des donateurs et des sponsors. Une liste actuelle des donateurs qui ont apporté des contributions financières, grandes et petites, au projet peut être consultée sur notre «liste de donateurs <https://www.qgis.org/fr/site/about/sustaining_members.html#list-of-donors>`__. Si vous souhaitez devenir sponsor officiel du projet, veuillez visiter notre page de parrainage <https://www.qgis.org/fr/site/getinvolved/governance/sustaining_members/sustaining_members.html#qgis-sustaining-memberships> __ pour plus de détails. Le parrainage de QGIS nous aide à financer nos six réunions régulières de développeurs, à maintenir l’infrastructure du projet et à financer les efforts de correction de bogues. Une liste complète des sponsors actuels est fournie ci-dessous - merci à tous nos sponsors!

QGIS est un logiciel gratuit et vous n’avez aucune obligation de payer quoi que ce soit pour l’utiliser - en fait, nous voulons encourager les personnes de tous horizons à l’utiliser quel que soit l’état de leurs finances ou leur statut social - nous croyons que mettre à disposition un outil géographique de prise de décisions concourra à une meilleure société pour l’humanité entière.

Général

Fonctionnalite : Nouveaux paramètres de police pour les annotations de décoration de la grille

Les annotations pour la décoration de la grille du canevas de la carte sont désormais entièrement personnalisables, y compris la couleur de la police, le tampon, etc.

image8

Cette fonctionnalité a été financée par iMHere Asia

Cette fonctionnalité a été développée par Mathieu Pellerin

Temporel

Fonctionnalite : Réglage cumulatif de la plage temporelle dans le contrôleur temporel

Ajoute un paramètre dans le contrôleur temporel pour régler la plage temporelle de l’animation sur cumulative. Cela signifie que toutes les images d’animation auront la même date et heure de début mais des dates et heures de fin différentes.

Ceci est utile si vous souhaitez accumuler des données dans votre visualisation temporelle au lieu d’afficher une « fenêtre temporelle mobile » sur vos données.

image2

Cette fonctionnalité a été financée par Meteorological Service of Canada

Cette fonctionnalité a été développée par Kartoza / Samweli Mwakisambwe

Fonctionnalité : Ajouter un nouveau mode « Redessiner la couche uniquement » pour les couches vectorielles temporelles

Dans ce mode, la couche sera automatiquement redessinée chaque fois que la plage temporelle sera modifiée, mais aucun filtrage temporel ne sera appliqué aux entités.

Cette configuration est utile lorsque la couche a des paramètres de symbologie qui varient en fonction de la portée temporelle. Par exemple, lorsqu’une couche utilise des expressions de rendu basées sur des règles dépendantes du temps ou des expressions de symbologie définies par les données.

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalité: Ajouter un support de base pour la manipulation temporelle des couches vectorielles

Cela permet d’exposer certaines capacités temporelles natives de base pour les couches vectorielles :

  • Plage de temps statique pour la couche (pour correspondre aux possibilités de la couche raster), cela définit une seule plage de temps statique qui s’applique à l’ensemble de la couche. Toutes les entités de la couche seront affichées chaque fois que le temps du canevas chevauche l’intervalle de temps de la couche
  • « Champ unique avec date et heure » : Permet de sélectionner un seul champ Date ou DateHeure dans la couche. Les entités seront affichées lorsque la valeur de ce champ se situe dans la plage de temps du canevas
  • « Champs séparés pour la date/heure de début et de fin » : Permet de sélectionner les champs Date/Heure de début et de fin à partir de la couche. Les caractéristiques seront affichées chaque fois que l’intervalle de temps calculé à partir de ces champs chevauchera l’intervalle de temps du canevas

Nous devrions envisager de l’étendre à l’avenir, par exemple en ajoutant des modes comme « heure de début + durée fixe », « heure de début + durée à partir du champ », « heure de début et de fin via des expressions », etc.

Quelques limites/inefficacités connues :

  • Actuellement, seuls les champs Date/DateHeure peuvent être utilisés. Cela a été fait pour simplifier le traitement des formats et éviter de devoir se soucier des champs de chaîne avec différents formats de date et d’heure. À l’avenir, nous devrions permettre la sélection des champs de chaîne et permettre aux utilisateurs de saisir une chaîne de format DateTime personnalisée
  • Contrairement à l’approche du plugin Time Manager, l’approche adoptée ici consiste à s’appuyer entièrement sur des expressions QGIS et des requêtes pour effectuer le filtrage (Time Manager utilise des chaînes de filtres de couches et tente de définir une syntaxe de filtre SQL native afin que le filtrage soit effectué en arrière-plan). Cette approche est intentionnelle car elle fournit une approche de filtrage unifiée quel que soit le fournisseur utilisé (c’est-à-dire que nous n’avons pas à nous soucier des différentes syntaxes SQL utilisées en natif par les différents fournisseurs). La beauté de la compilation des expressions de requête devrait signifier que les expressions QGIS sont magiquement transformées en requêtes natives du backend, BUUUUUUUUUUUUUT… parce que nous ne supportons pas les expressions QGIS pour les littéraux de DateTime, nous nous appuyons actuellement sur la fonction d’expression « to_datetime » et nous contraignons tout par des chaînes de caractères. Aucun des compilateurs d’expressions ne gère cette fonction, donc actuellement, le filtrage est effectué du côté du QGIS. Nous devons ajouter des fonctions pour optimiser la création des littéraux de DateTime, puis nous assurer que les différents compilateurs mettent correctement en correspondance ces littéraux avec la syntaxe du filtre dorsal pour permettre tout le travail de filtrage du côté de la base de données…

Ainsi, actuellement, les performances sont bien moins bonnes avec les grandes couches qu’avec le Time Manager (et l’ensemble des entites exposées est plus petit, par exemple pas de traitement d’interpolation) mais l’avantage est que nous pouvons utiliser le cadre temporel natif et avoir des couches vectorielles animées à côté des couches maille et raster !

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalite : Support de l’API temporelle de Postgres raster

Ajout de l’intégration des capacités temporelles pour les rasters Postgres.

image3

image4

Cette fonctionnalité a été financée par ARPA Piemonte

Cette fonctionnalité a été développée par Alessandro Pasotti

Fonctionnalite : Paramètres temporels du projet QGIS

Cette fonction ajoute une fonctionnalité de paramétrage de la durée du projet.

Vous pourrez définir la plage temporelle du projet soit en utilisant une saisie manuelle, soit en la calculant à partir des couches temporelles du projet en cours. Dans ce dernier cas, il suffit de cliquer sur le bouton « Calculer à partir des couches ».

Cette implémentation ouvre la voie à l’ajout d’une fonction d’animation pour les couches temporelles dans QGIS.

Voici un exemple d’établissement de la portée temporelle du projet. image5

Des discussions préalables sur le soutien temporel QGIS peuvent être trouvées ici et ici.

Cette fonctionnalité a été financée par Meteorological Service of Canada

Cette fonctionnalité a été développée par Kartoza / Samweli Mwakisambwe

Fonctionnalite : Prise en charge des contraintes temporelles des couches WMS-T

Cette fonctionnalité ajoute la possibilité de contraindre les couches WMS-T (WMS Temporal) à l’intérieur de QGIS. Vous pourrez limiter la plage de dates et d’heures pour n’importe quelle couche temporelle des fournisseurs de WMS-T.

Cette implémentation permet à l’utilisateur de spécifier la plage DateHeure requise sur la couche à partir de l’onglet source dans le dialogue des propriétés de la couche.

Ci-dessous un exemple de la procédure. image6

Note: Pour les demandes de point instantané dans le temps, la spécification d’une plage avec une date et une heure de début et de fin égales entraînera l’utilisation de la date et de l’heure spécifiées et non d’une plage.

image7

Cette fonctionnalité a été financée par Meteorological Service of Canada

Cette fonctionnalité a été développée par Kartoza / Samweli Mwakisambwe

Fonctionnalité : API temporelle

Cette fonctionnalité fournit une implémentation API pour le support temporel dans QGIS.

Vous pouvez trouver l’API pour Python en cherchant « Temporal » dans la documentation python (link).

Cette fonctionnalité a été financée par Meteorological Service of Canada

Cette fonctionnalité a été développée par Kartoza / Samweli Mwakisambwe

Outils cartographiques

Fonctionnalité : outils Identifier pour les couches de tuiles vectorielles QGIS.

L’outil d’identification des cartes est maintenant capable d’inspecter les attributs des caractéristiques dans les tuiles vectorielles.

image9

Cette fonctionnalité a été financée par plusieurs contributeurs

Cette fonctionnalité a été développée par Lutra Consulting (Martin Dobias)

Interface utilisateur

Fonctionnalité : Permet le glisser-déposer d’une couche sur plusieurs instances QGIS

image12

Cette fonctionnalité a été financée par QGIS Swiss user group

Cette fonctionnalité a été développée par Denis Rouzaud

Fonctionnalite : Ouvrez les tables d’attribut sous forme d’onglets

Si l’option « Ouvrir de nouvelles tables d’attribut en tant que fenêtres de dock » est active, les nouvelles tables d’attribut seront ouvertes sous forme d’onglets en plus des tables d’attribut existantes.

image13

Cette fonctionnalité a été développée par Germán Carrillo

Symbologie

Fonctionnalite : Rendu des contours de la couche de trame

Ce nouveau moteur de rendu dessine des lignes de contour qui sont calculées à la volée à partir de la bande de trame source. Il est possible de définir l’intervalle des courbes de niveau et le symbole utilisé pour le dessin.

En outre, il existe un support pour les « contours d’index » - des lignes de contour avec des intervalles plus élevés, généralement tracées avec un symbole de ligne plus large.

Si nous générons des lignes de contour sur des blocs de trame d’entrée de même taille que notre bloc de trame de sortie, les lignes générées contiendraient trop de détails. Ce détail peut être réduit par le facteur de « réduction d’échelle » - ce qui exigera une résolution plus faible de la trame source.

image14

Cette fonctionnalité a été développée par Martin Dobias

Fonctionnalite : Ajout d’une unité de taille en pourcentage pour la symbologie des marqueurs d’images tramées et des couches de remplissage tramées.

Selon la Feature Request ce patch ajoute une nouvelle valeur de pourcentage (de la taille originale de l’image) pour les unités de taille des couches Raster Image Marker et Raster fill (par nirvn suggestion).

Par exemple, une couche contient des images raster de différentes tailles et de différents ratios :

image15 image16

Si nous utilisons un marqueur d’image Raster existant unité de taille, le calque ressemblera à ceci :

image17

ou comme ça :

image18

La nouvelle valeur de pourcentage des unités de taille est destinée à régler ce problème.

Les deux tests unitaires « qgis_rasterfilltest » et « qgis_rastermarkertest » ont été réécrits avec un ensemble de nouvelles images de contrôle pour tester la valeur proposée de pourcentage des unités de taille.

Cette fonctionnalité a été développée par beketata

Fonctionnalite : Ajout d’une propriété définie par des données à la famille/au style de police pour les marqueurs de police

Des propriétés définies par les données ont été ajoutées pour la famille de polices des marqueurs de police et les toutes nouvelles propriétés de style de police. Cela peut s’avérer utile dans un certain nombre de scénarios, notamment dans un contexte multilingue où une propriété définie par les données peut éviter la duplication des ensembles de données.

image19

Cette fonctionnalité a été financée par iMHere Asia

Cette fonctionnalité a été développée par Mathieu Pellerin

Fonctionnalite : Nouvelle définition du style de police pour les marqueurs de police

Grâce à ce tout nouveau paramètre de style de police, les utilisateurs peuvent choisir un style non par défaut parmi des familles de polices qui n’étaient pas disponibles auparavant.

image20

Cette fonctionnalité a été financée par iMHere Asia

Cette fonctionnalité a été développée par Mathieu Pellerin

Étiquetage

Fonctionnalite : Respecter les couleurs HTML dans les étiquettes

Lorsqu’elle est activée, cette option traite le contenu de l’étiquette comme du HTML, et toutes les options de formatage html liées à la couleur du fond seront respectées dans l’étiquette rendue.

Note : SEULS les TAGS DE COULEUR HTML sont respectés. Il ne s’agit PAS d’un bogue, mais plutôt d’un « test des eaux » avec un formatage HTML dans les étiquettes. Par conséquent, seules les options de formatage qui ne modifient pas la forme de la police ont été prises en compte.

Le côté positif est qu’il fonctionne correctement avec TOUS les autres paramètres des étiquettes, y compris les ombres, les tampons, les étiquettes courbes, etc !

Maintenant, quelques jolies photos :

image21

image22

Cette fonctionnalité a été financée par geoProRegio AG

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalite : Placement automatique des étiquettes en dehors des polygones

Cette fonction ajoute la possibilité de placer automatiquement des étiquettes en dehors des polygones.

Cette situation est exposée de plusieurs façons :

  1. Un nouveau mode de placement qui place toujours les étiquettes de polygone pour la couche en dehors des éléments : image23 image24
  2. Lors de l’utilisation d’autres modes de placement de polygones, une nouvelle case à cocher « Autoriser le placement d’étiquettes à l’extérieur des polygones » peut être cochée pour permettre de placer des étiquettes à l’extérieur lorsqu’il n’est pas possible de les placer à l’intérieur du polygone : image25 image26

La case à cocher « autoriser l’apposition d’étiquettes extérieures » peut être définie par des données, ce qui permet aux utilisateurs d’autoriser les étiquettes extérieures, d’empêcher les étiquettes extérieures ou de forcer l’apposition d’étiquettes extérieures en fonction de chaque caractéristique.

L’algorithme de placement est basé sur une modification de Rylov & Reimer (2016) « A practical algorithm for the external annotation of area features ». Alors que Rylov & Reimer proposent une approche basée sur une ligne de balayage horizontal pour la sélection des points d’étiquetage candidats, en pratique, j’ai constaté que cela donnait des résultats inférieurs (et plus lents) que de simplement traverser l’anneau extérieur du polygone et générer le point candidat à intervalles réguliers (en particulier pour les polygones étroits, presque horizontaux).

Comme le montre la capture d’écran des îles ci-dessus, le mode de placement extérieur fonctionne comme prévu avec le mode d’alignement multiligne « Follow label placement ».

Cette fonctionnalité a été financée par Swiss QGIS user group

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalite : Couche de tuiles vectorielles - partie 4 (étiquetage)

Poursuite des travaux sur la mise en œuvre de la couche de tuiles vectorielles.

Cela ajoute un support d’étiquetage pour les couches de tuiles vectorielles. Pour l’instant, cela ne fonctionne que sur qgis_core… La prise en charge de l’interface graphique viendra ensuite. L’étiquetage utilise les mêmes concepts que le rendu des tuiles vectorielles : nous avons une liste de styles d’étiquetage, chacun étant défini par le nom de la sous-couche, le type de géométrie, l’expression du filtre, la plage de zoom et bien sûr la configuration du style d’étiquetage (QgsPalLayerSettings).

Notez qu’il y a un « problème de poule et d’œuf » dans l’étiquetage : Pour les tuiles vectorielles, nous créons des QgsFields pour une sous-couche basée sur des champs qui rendent et demandent un étiquetage, mais avec l’étiquetage, il était impossible d’obtenir les champs requis s’ils n’étaient pas déjà disponibles dans le contexte de l’expression (d’où quelques petits ajouts à QgsProperty, QgsPropertyCollection, QgsPalLayerSettings pour pouvoir obtenir les noms des champs requis en ne préparant pas les expressions internes en même temps).

image27

Un exemple de la façon de définir l’étiquetage ci-dessus dans la console 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)

Cette fonctionnalité a été financée par plusieurs contributeurs

Cette fonctionnalité a été développée par Lutra Consulting (Martin Dobias)

Fonctionnalite : Ajout d’un contrôle sur le point d’ancrage de l’appel sur l’étiquette

Cela permet aux utilisateurs de contrôler l’endroit où un message doit se joindre au texte de l’étiquette (auparavant, vous ne pouviez contrôler que l’endroit où le message se joindrait à la géométrie de l’élément correspondant).

Les choix comprennent :

  • Point le plus proche (comportement antérieur)
  • Centroïde étiquette
  • Des coins fixes : En haut à gauche/en haut à droite/en bas à gauche/en bas à droite/etc

Un contrôle défini par les données sur l’ancrage de l’étiquette est également possible.

Aide à remédier à la laideur de certains appels !

Résultat précédent (mode point le plus proche) :

image28

Avec le nouveau placement « centroïde » :

image29

Cette fonctionnalité a été développée par Nyall Dawson

Mesh

Fonctionnalite : Utiliser uniquement le groupe de données spécifié

Cette fonction permet à l’utilisateur de choisir les groupes d’ensembles de données qui sont utilisés. Cela peut être fait dans le dialogue des propriétés de la couche de maillage dans l’onglet source.

Une nouvelle vue arborescente affiche tous les groupes d’ensembles de données disponibles du fournisseur de données. Les groupes de données peuvent être vérifiés/dévérifiés et renommés.

Ce widget propose également des boutons permettant de charger des groupes de données supplémentaires à partir de fichiers, de développer/réduire l’arborescence, de vérifier/décocher tous les éléments et de réinitialiser les valeurs par défaut du fournisseur (pour l’instant, seul le nom original).

Seul le groupe d’ensembles de données coché sera affiché dans le widget d’ensemble de données actif dans les paramètres du moteur de rendu.

image30

Cette fonctionnalité a été financée par Deltares

Cette fonctionnalité a été développée par Lutra Consulting (Vincent Cloarec)

Fonctionnalite : Réglages de couleurs scalaires en fonction de la classification

Grâce à cette fonction, MDAL lit les valeurs scalaires classées dans l’ensemble de données. Lorsque les valeurs sont classées, les paramètres de rendu scalaire par défaut comportent le nuanceur de rampe de couleurs et les étiquettes définies en fonction des valeurs classées.

image31

Cette fonctionnalité a été financée par Deltares

Cette fonctionnalité a été développée par Lutra Consulting (Vincent Cloarec)

Fonctionnalite : Des éléments de maillage à accrocher

Ajoute à l’API une méthode permettant d’accrocher des éléments de maillage.

La méthode retourne la position du point de rupture sur l’élément de maille le plus proche :

  • Pour un vertex, la position d’accrochage est la position du vertex
  • Pour un bord, la position d’enclenchement est le point projeté sur le bord, ou l’extrémité du bord si elle se trouve à l’extérieur du bord
  • Pour un visage, la position derupture est le centroïde du visage

La position retournée est en coordonnées cartographiques.

image32

Cette fonctionnalité a été financée par Deltares

Cette fonctionnalité a été développée par Lutra Consulting (Vincent Cloarec)

Fonctionalite : Largeur de maille 1D/couleur variable

Cette fonctionnalité offre une nouvelle façon de rendre un maillage 1D avec des largeurs de bord qui peuvent varier en fonction de la valeur. Désormais, la largeur et la couleur varient en fonction de la valeur des bords ou des sommets.

L’utilisateur peut définir la valeur min/max et la largeur min/max pour définir le rendu.

Pour la couleur, l’utilisateur peut définir un nuanceur de rampe de couleur (comme pour le maillage 2D et le raster).

Pour ce nouveau rendu, de nouvelles classes génériques sont introduites qui pourraient être utilisées en dehors du cadre du maillage.

image33

Cette fonctionnalité a été financée par Deltares

Cette fonctionnalité a été développée par Lutra Consulting (Vincent Cloarec)

Fonctionnalite : Prise en charge des maillages multiples (depuis MDAL 0.5.91)

En plus de la mise à jour vers MDAL 0.5.91, cette fonctionnalité permet de charger plusieurs maillages à partir d’un seul fichier.

Le fichier est analysé et un dialogue de sous-couche est lancé en utilisant la même logique que pour les couches vectorielles ou raster.

image34

Cette fonctionnalité a été financée par Deltares

Cette fonctionnalité a été développée par Lutra Consulting (Vincent Cloarec)

Fonctionnalite : Connecter la couche de maillage au cadre temporel QGIS

image35

Gestion du temps dans la couche de maillage

Le temps dans une couche de maillage est défini par :

  • Un temps de référence fourni par les données, le projet ou l’utilisateur
  • Chaque ensemble de données est associé à des temps relatifs
  • L’étendue temporelle est définie par la première et la dernière fois de tous les ensembles de données
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)

La classe QgsMeshDataprovidertemporalCapabilities stocke le temps de référence fourni par les données et tous les temps relatifs de l’ensemble de données. Cette classe a la capacité de renvoyer l’index de l’ensemble de données à partir d’un index de groupe d’ensembles de données et d’un temps relatif depuis le temps de référence. Le temps de référence (qui peut être différent du temps de référence du fournisseur) et l’étendue temporelle absolue sont stockés dans la classe QgsMeshTemporalProperties.

Les paramètres temporels dans le widget de propriétés ne sont que le temps de référence et l’unité de temps du fournisseur : image36

Le temps de référence par défaut de la couche est défini par (trié par priorité) :

  • Du fournisseur de données si elles sont définies dans les données
  • Du projet s’il est défini
  • De la date actuelle à l’heure 00h00

L’utilisateur peut le modifier s’il le souhaite.

Principe de rendu

Les moteurs de rendu 2D et 3D accèdent à l’index de l’ensemble de données actif à partir de la couche avec la plage de temps stockée dans le « QgsContextRenderer » et dans le « Qgs3DMapSettings » : le temps relatif est calculé comme la différence entre la plage de temps du « QgsContextRenderer » et le temps de référence stocké par le « QgsMeshTemporalProperties ». L’index de l’ensemble de données provient du logiciel « QgsMeshDataproviderTemporalCapabilities » qui associe le temps relatif à l’index de l’ensemble de données.

Les données sont apportées par le fournisseur avec l’index de l’ensemble de données.

Ensemble de données statiques

Il est également possible de définir un ensemble de données statique, c’est-à-dire de choisir un ensemble de données qui sera rendu indépendamment du contrôleur de temps QGIS. Pour ce faire, l’utilisateur peut cocher la case en bas de la page temporelle du widget de propriétés : image37 Pour l’instant, comme il est plus simple à mettre en œuvre et qu’il permet de choisir directement l’ensemble de données requis, l’utilisateur peut choisir indépendamment l’ensemble de données scalaires et l’ensemble de données vectorielles à partir de boîtes combinées avec le temps associé pour chaque ensemble de données (temps relatif pour les données sans temps de référence). Si nécessaire, un temps unique pourrait être mis en œuvre, mais cela pourrait conduire à des résultats incohérents avec des ensembles de données non synchrones. Les paramètres des ensembles de données statiques se trouvent dans la page temporelle mais peuvent être facilement placés dans la page source si vous le souhaitez.

Cette fonctionnalité a été financée par Lutra Consulting

Cette fonctionnalité a été développée par Lutra Consulting (Vincent Cloarec)

Fonctionnalite : Rééchantillonnage des valeurs des sommets vers les valeurs faciales

Le rééchantillonnage est disponible pour les ensembles de données définis sur les faces, par exemple la valeur sur les sommets est calculée à partir des valeurs sur les faces.

Cette fonction met en œuvre le rééchantillonnage des valeurs sur les sommets aux valeurs sur les faces en utilisant la méthode de la moyenne du voisin.

La méthode par défaut est réglée sur « none » pour le rééchantillonnage des sommets aux faces et sur « neighbor average » pour le rééchantillonnage des faces aux sommets. Le rendu par défaut est donc toujours lisse. image38

Cette fonctionnalité a été développée par Lutra Consulting (Vincent Cloarec)

Fontionnalite : Jeu de données de vecteurs de maillage coloré avec nuanceur de rampe de couleur

Cette fonction permet à l’utilisateur de colorer le jeu de données vectorielles de la couche de maillage (flèche, lignes de courant, traces) avec le nuanceur de rampe de couleurs en fonction de l’amplitude du vecteur.

image39

image40

image41

Cette fonctionnalité a été financée par Deltares

Cette fonctionnalité a été développée par Lutra Consulting (Vincent Cloarec)

Fonctionnalite : Sauvegarder le style pour la couche de mailles

Cette fonctionnalité ajoute la possibilité d’enregistrer un style de couche de maillage dans un fichier qml, tel qu’il est utilisé pour les couches vectorielles et raster.

Cette fonctionnalité permet également de refaçonner le style du menu des propriétés des couches matricielles et vectorielles. image42

Cette fonctionnalité a été financée par Artelia Group

Cette fonctionnalité a été développée par Lutra Consulting (Vincent Cloarec)

Fonctionnalite : rendu des mailles 1D

Update to MDAL 0.5.90

Initial implementation of Support of 1D elements in Mesh Layers

Les mailles 1D sont constituées de sommets et d’arêtes. Une arête relie deux sommets et peut comporter des données (scalaires ou vecteurs) qui lui sont affectées. Le réseau de maillage 1D peut, par exemple, être utilisé pour la modélisation d’un système de drainage urbain.

Il existe de nouvelles options pour afficher le maillage 1D (bords) dans l’onglet cadre de maillage image43

Pour les données sur le maillage 1D (bords ou sommets), il existe également de nouvelles options dans l’onglet « Contours »

image44

Notez que toutes les fonctionnalités disponibles pour les maillages 2D ne sont pas disponibles, notamment

  • Soutien au calculateur de mailles pour les mailles 1D
  • Rendu 3D des maillages 1D
  • Identifier et tracer les graphiques (sera ajouté plus tard dans le PR suivant)

Certaines fonctions ne sont pas nécessaires pour les mailles 1D, notamment

  • Exportation des contours des mailles

Cette fonctionnalité a été développée par Peter Petrik

Fonctionnalite : Simplification des mailles

Comme une couche de maillage peut comporter des millions de triangles, le rendu peut être très lent, d’autant plus que tous les triangles sont affichés dans la vue même lorsque les triangles sont trop petits pour être vus.

Pour ces situations, cette fonction offre une option permettant de simplifier le maillage. La simplification conduit à un ou plusieurs maillages simplifiés qui représentent des niveaux de détail. Lors du rendu du maillage, le niveau de détail approprié est choisi pour fournir un rendu adéquat en fonction de la vue.

Un nouvel onglet dans le widget des propriétés de la couche de maillage permet à l’utilisateur de modifier les paramètres :

  • Le facteur de réduction est utilisé pour simplifier un maillage ; le nombre de triangles pour chaque niveau de détail est approximativement égal au nombre de triangles du niveau de détail précédent, divisé par le facteur de réduction
  • Résolution maximale du maillage : il s’agit de la taille moyenne (en pixels) des triangles qui peuvent être affichés ; si la taille moyenne du maillage est inférieure à cette valeur, un maillage avec un niveau de détail inférieur est affiché, c’est-à-dire un maillage avec une taille moyenne juste supérieure à la résolution maximale du maillage.

image45

Cette fonction permet d’accélérer le rendu comme indiqué dans ces tableaux (résultat en millisecondes) : image46

Gif de démo avant: image47

Après: image48

Cette fonctionnalité a été financée par BMT

Cette fonctionnalité a été développée par Lutra Consulting (Vincent Cloarec)

Fonctionnalités 3D

Fonctionnalite : Flèches pour le rendu des ensembles de données de la couche de maillage 3D

Cette fonctionnalité ajoute une option permettant d’afficher des flèches sur une entité 3D d’un ensemble de données de la couche de maillage, en fonction de l’ensemble de données vectorielles.

Le jeu de données utilisé pour le rendu des flèches est celui qui a été choisi pour le rendu des vecteurs en 2D.

De la même manière, la couleur des flèches est définie dans les paramètres de rendu 2D pour l’ensemble des données vectorielles.

Dans les paramètres 3D, l’utilisateur peut définir l’espacement des flèches et si la taille est fixe ou mise à l’échelle en fonction de la magnitude.

Ce paramètre d’espacement définit également la taille maximale des flèches, car les flèches ne peuvent pas se chevaucher. image49

Cette fonctionnalité a été développée par Lutra Consulting (Vincent Cloarec)

Expressions

Fonctionnalité: Nouvelles expressions

  • ascii
  • make_interval Allows direct construction of interval values from years/months/weeks/days/hours/minutes/second values, without having to construct a string representation of the interval first
  • maptip
  • layer_property('distance_units')
  • display_expression
  • eval_template
  • make_date
  • make_time
  • make_datetime
  • close_line
  • is_multipart
  • geometry Z and M minimum and maximum
  • @frame_number
  • @frame_rate
  • @frame_duration
  • @map_start_time Début de la plage temporelle de la carte (en tant que valeur date-heure)
  • @map_end_time Fin de la plage temporelle de la carte (en tant que valeur date-heure)
  • @map_interval: Durée de la plage temporelle de la carte (en tant que valeur d’intervalle)
  • @animation_start_time
  • @animation_end_time

Cette fonctionnalité a été développée par Etienne Trimaille, Jan Caha, Julien Monticolo, Nyall Dawson

Fonctionnalite : Navigateur d’entites pour la prévisualisation dans le générateur d’expressions

Cela ajoute un navigateur d’entites au constructeur d’expressions afin que l’on puisse parcourir les entités pour voir le résultat de l’expression image65

Un nouveau widget est ajouté : « QgsFeaturePickerWidget ». Pour l’instant, il s’agit d’une simple combobox (mais elle hérite du widget afin que nous puissions ajouter un bouton « map picker » plus tard). Elle se comporte de la même manière que celle du widget de référence de la relation (une combobox modifiable).

Il repose sur le même modèle de base (QgsFeatureFilterModel). Une nouvelle classe abstraite « QgsFeaturePickerModelBase » regroupe la logique du, et le nouveau modèle est appelé « QgsFeaturePickerModel ». Fondamentalement, le modèle « QgsFeaturePickerModel » utilise l’identifiant de la caractéristique pour identifier les caractéristiques, tandis que le modèle « QgsFeatureFilterModel » utilise une liste d’attributs (les clés étrangères d’une relation). Il désencombre un peu l’ancien modèle qui était assez… encombré.

Comme remarque, j’ai essayé d’utiliser des modèles pour « QgsFeaturePickerModelBase », mais comme les modèles ne peuvent pas être mélangés avec Q_OBJECT, les alternatives semblaient moins lisibles.

Des tests ont été ajoutés.

Sponsored by the QGIS Swiss User Group!

Cette fonctionnalité a été développée par Denis Rouzaud

Fonctionnalite : Possibilité de supprimer des fonctions personnalisées

Ajout d’un bouton de suppression dans l’onglet Éditeur de fonctions du dialogue de création d’expression pour permettre la suppression des fonctions utilisateur de QGIS sans avoir besoin de naviguer dans le répertoire du profil utilisateur.

Cette fonctionnalité a été développée par Alexander Bruy

Fonctionnalite : Ajout de la possibilité de modifier, d’importer et d’exporter des expressions d’utilisateurs

Un nouveau bouton est ajouté qui permet d’éditer les expressions sauvegardées. Il n’est actif que lorsqu’une expression utilisateur est sélectionnée dans l’arbre des expressions. Lorsqu’on appuie dessus, il ouvre une fenêtre qui permet d’éditer l’expression utilisateur actuellement sélectionnée. La modification du libellé de l’expression fait une copie de l’expression existante. Demo

Import/Export

Un nouveau bouton avec un menu a été ajouté, qui permet l’importation/exportation d’expressions d’utilisateurs vers/depuis un fichier JSON. En cliquant sur l’une ou l’autre des entrées du menu, on ouvre un dialogue de sélection de fichier pour les expressions source/destination du fichier JSON. En cas de conflit d’étiquettes, une boîte de dialogue supplémentaire demande comment procéder - soit pour écraser ou pour sauter l’expression courante. Import/Export Demo

Cette fonctionnalité a été développée par Ivan Ivanov

Numérisation

Fonctionnalite : Mode dédié d’évitement des intersections et des chevauchements géométriques

Cette version de QGIS est dotée d’un nouveau mode dédié permettant d’éviter les intersections et les chevauchements géométriques lors de la numérisation d’éléments.

Les trois modes disponibles sont les suivants :

Autoriser les intersections/recouvrements


Éviter les intersections/recouvrements sur la couche active


Éviter les intersections/recouvrements sur la liste des couches définie par l’utilisateur.


La liste des couches du troisième mode est configurée par l’utilisateur via les widgets de configuration avancée de l’accrochage.

image66

Cette fonctionnalité a été financée par OpenGIS.ch

Cette fonctionnalité a été développée par Mathieu Pellerin

Fonctionnalité : Nouveaux modes d’accrochage : Centroïde et milieu d’un segment (midpoint)

This feature is aimed at improving snapping modes in QGIS by getting closer to the experience of CAD tools.

Il ajoute deux nouveaux modes. L’accrochage sur le centre d’une géométrie (centroïde) et le milieu d’un segment.

Pour permettre la sélection de ces nouveaux modes, plusieurs modes d’accrochage peuvent être sélectionnés en même temps.

image67

L’ordre de préférence pour l’accrochage est le suivant : - Sommet, intersection - Milieu - Centroïde - Bord - Surface

image68

Sponsored by: Qwat group / Ville de Lausanne ( @ponceta @dsavary ) / Oslandia and some spare time

Cette fonctionnalité a été développée par lbartoletti

Fonctionnalite : Le passage à l’élément actuellement numérisé

Le snapping peut désormais également prendre en charge le snapping de l’élément en cours de numérisation. Cette option est activée/désactivée par un nouveau bouton dans la barre d’outils d’accrochage.

Cela permet des capacités d’édition de type CAO très intéressantes, comme la fermeture des éléments à un angle de 90° ou l’alignement précis des segments à l’intérieur d’un élément. C’est très efficace une fois que l’on est habitué à utiliser le raccourci alt+a pour verrouiller l’angle.

image69

Cette fonctionnalité a été financée par Kanton Solothurn et Land Vorarlberg

Cette fonctionnalité a été développée par Olivier Dalang

Fonctionnalite : Le traçage prend désormais en charge les géométries courbes

L’outil de traçage crée maintenant des géométries courbes lorsqu’on travaille sur une couche qui supporte des géométries courbes.

image70

Le support est encore expérimental, cette fonctionnalité doit donc être activée dans les options de numérisation.

Cette fonctionnalité a été financée par ecoptima et Planteam

Cette fonctionnalité a été développée par Olivier Dalang (OPENGIS.ch)

Formulaires et widgets

Fonctionnalite : Étiquettes à expression contrôlée (alias)

Cette nouvelle fonctionnalité permet d’évaluer les étiquettes de formulaire (alias) dans le contexte du formulaire.

image72

image73

Cette fonctionnalité a été financée par ARPA Piemonte

Cette fonctionnalité a été développée par Alessandro Pasotti

Fonctionnalite : Ajouter une description au widget de relation de valeur

Ajoute une option permettant d’ajouter une description à chaque valeur dans un widget de valeur de relation. La description apparaîtra sous forme d’info-bulle

Veuillez excuser les différentes langues dans la vidéo de démonstration.

image74

Cette fonctionnalité a été développée par Matthias Kuhn

Fonctionnalite : Nouveau widget de nom de table de base de données

Un nouveau widget a été ajouté à QGIS pour sélectionner une nouvelle table à partir d’une connexion DB existante :

image75

Cette fonctionnalité a été développée par Alessandro Pasotti

Fonctionnalite : Obtenir les valeurs actuelles des formulaires parents dans les formulaires enfants

Cette fonctionnalité ajoute la possibilité d’utiliser les valeurs actuelles du formulaire « parent » dans les expressions de filtrage (pour l’instant uniquement dans les widgets de valeur de relation : à utiliser dans les filtres déroulants).

Un nouveau champ d’application « parentForm » a été ajouté, ainsi qu’un nouvel ensemble de fonctions et de variables permettant d’accéder au parent à partir d’un formulaire enfant intégré. Les nouvelles fonctions et variables ont été modélisées sur la « valeur actuelle », la « fonction actuelle », etc.

Les nouvelles fonctions et variables sont également disponibles lorsque le formulaire parent est ouvert à partir une nouvelle entite (non sauvegardée, pas buffer), ce qui facilite la création de filtres de recherche basés sur les valeurs du parent lors de l’ajout d’enfants à partir d’un formulaire parent non sauvegardé

Nouvelles fonctions et variables

image77 image78 image79

Financée par: ARPA Piemonte

Cette fonctionnalité a été financée par ARPA Piemonte

Cette fonctionnalité a été développée par Alessandro Pasotti

Fonctionnalite : Widget relationnel : ajout d’une case à cocher pour cacher le bouton de sauvegarde des modifications de l’enfant

Cela est très utile pour les formulaires intégrés.

Financée par: ARPA Piemonte

image80

Cette fonctionnalité a été financée par ARPA Piemonte

Cette fonctionnalité a été développée par Alessandro Pasotti

Fonctionnalite : La force du widget relationnel supprime les popups

Ajoute une option à la configuration du widget de relation pour supprimer le popup de formulaire ouvert lorsque de nouvelles fonctionnalités sont ajoutées dans un contexte de formulaire intégré.

Cette option a priorité sur l’option au niveau du formulaire (ce qui pourrait encore être le comportement souhaité lorsque le formulaire est utilisé comme un formulaire autonome).

image81

Note : l’étiquette finale est Force hide form on add feature

Cette fonctionnalité a été financée par ARPA Piemonte

Cette fonctionnalité a été développée par Alessandro Pasotti

Légende des couches

Fonctionnalite : Ajout du déplacement vers le bas dans le menu contextuel de l’arborescence des couches

Le déplacement des couches sur les grands projets a été facilité par l’option Move to top, mais il fallait toujours déplacer manuellement les cartes de base vers le bas de la liste des couches, une tâche encombrante dans les grands arbres de couches. Cette fonctionnalité ajoute une option Move to bottom au menu contextuel de l’arbre des calques qui fonctionne de la même manière que Move to top.

Cette fonctionnalité a été développée par uclaros

Fonctionnalite : Faire en sorte que le bouton « Ajouter un groupe » agisse comme un groupe sélectionné si les couches sélectionnées >= 2

Lorsqu’il y a plus d’une couche sélectionnée et que l’utilisateur appuie sur le bouton Ajouter un groupe, créez un nouveau groupe et placez-y aussi les couches sélectionnées ! image82

Cette fonctionnalité a été développée par uclaros

Fonctionnalite : Permet de renommer le thème actuel de la carte

Cela ajoute la possibilité de renommer un thème de carte à partir du menu déroulant des thèmes de carte.

image83

Cette fonctionnalité a été développée par Harrissou Sant-anna

Fonctionnalite : Activation/désactivation de TOUTES les couches sélectionnées avec le bouton « Espace

Permet de basculer la visibilité des couches ou groupes actuellement sélectionnés en utilisant le bouton d’espacement : image84

Cette fonctionnalité a été développée par Ivan Ivanov

Outils d’analyse

Fonctionnalité : Logger réseau - fonctionnalités supplémentaires

Ajoute des outils plus utiles pour le logger de réseau :

  • Copier l’URL
  • Copier la demande en tant que JSON
  • Enregistrer le log dans un fichier (après avoir averti les utilisateurs que le log peut contenir des informations sensibles et doit être traité de manière confidentielle)

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalite : Outil intégré de log du réseau

Cet outil, disponible à partir du nouveau panneau F12 « dev tools », est un port natif du plugin d’enregistrement logger du réseau de @rduivenvoorde.

Il affiche une liste des demandes de réseau en cours et terminées, ainsi que toute une série de détails utiles comme l’état des demandes et des réponses, les en-têtes, les erreurs, les erreurs de configuration SSL, les délais d’attente, l’état du cache, etc.

Il possède également de nombreuses fonctionnalités utiles, telles que la possibilité de filtrer les demandes par sous-chaîne d’URL et par statut, et vous pouvez cliquer avec le bouton droit de la souris sur les demandes pour ouvrir l’URL dans un navigateur ou les copier sous forme de commande cURL.

Pourquoi voulons-nous que ce soit un outil natif plutôt qu’un plugin ? Eh bien :

  • C’est extrêmement utile, donc c’est bien d’avoir des informations prêtes à l’emploi
  • En le déplaçant vers c++, nous pouvons démarrer le processus de journalisation beaucoup plus tôt. Cela permet au journal d’inclure des informations supplémentaires, telles que les demandes déclenchées par d’autres plugins qui se produisent avant que le plugin d’enregistrement du réseau n’ait été chargé (ainsi que d’autres demandes intégrées, par exemple le fil d’actualité)
  • La performance a été une lutte constante avec le plugin Python. Bien qu’il s’agisse d’un port 1:1 aussi proche que possible, les problèmes de performances ont tous été résolus comme par magie. Les classes ont des opérations de liste très intensives, ce qui est probablement la cause des mauvaises performances sous Python.

image85

Cette fonctionnalité a été financée par Meteorological Service of Canada

Cette fonctionnalité a été développée par Nyall Dawson (pour Kartoza)

Traitement

Fonctionnalité : Collection d’algorithmes de génération de trames raster aléatoires

Avec cette fonctionnalité, nous avons ajouté une grande collection d’algorithmes de génération de trames raster aléatoires. Ces algorithmes sont capables de produire des trames aléatoires suivant des distributions de nombres aléatoires spécifiques. Les distributions suivantes sont disponibles :

  1. Créer une couche raster aléatoire (distribution binomiale)
  2. Créer une couche raster aléatoire (distribution exponentielle)
  3. Créer une couche raster aléatoire (distribution gamma)
  4. Créer une couche raster aléatoire (distribution binomiale négative)
  5. Créer une couche raster aléatoire (distribution normale)
  6. Créer une couche raster aléatoire (distribution poisson)
  7. Créer une couche raster aléatoire (distribution uniforme)

image86

Cette fonctionnalité a été développée par Clemens Raffler

Fonctionnalité : Couche de tuiles vectorielles - partie 8 (writer Processing)

Cette fonctionnalité ajoute l’intégration du traitement pour l’écriture des tuiles vectorielles. Il s’agit juste d’un contournement de la classe QgsVectorTileWriter existante.

Nouveaux algorithmes dans la boîte à outils :

image87

Les paramètres de l’algorithme pour XYZ :

image88

Paramètres de l’algorithme pour les MBTiles:

image89

Liste des couches en entrée :

image90

Détails de la couche d’entrée :

image91

Cette fonctionnalité a été financée par la communauté QGIS

Cette fonctionnalité a été développée par Lutra Consulting (Martin Dobias)

Fonctionnalite : Nouvel algorithme de modélisation pour la création de branches conditionnelles

Cet algorithme permet aux utilisateurs de définir plusieurs conditions (via des expressions qgis), qui font que la branche correspondante du modèle est exécutée ou ignorée selon le résultat de l’évaluation de l’expression.

image92

Cette fonctionnalité a été financée par Andreas Neumann

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalité : permettre de réorganiser les entrées du modèle

Au lieu de forcer un ordre quasi-aléatoire des entrées pour les modèles, cette fonctionnalité expose une nouvelle option « Réorganiser les entrées du modèle » dans le concepteur de modèle qui permet aux utilisateurs de contrôler l’ordre exact des entrées pour montrer aux utilisateurs leur modèle.

Plus d’ordre illogique comme de montrer un choix de champ avant le choix de couche sur lequel il est basé !

Sponsored by NaturalGIS

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalite : Reporter la validation du modèle

Au lieu de forcer tous les algorithmes enfants à être immédiatement valides et à avoir tous les paramètres correctement remplis, cette fonctionnalité reporte la validation du modèle jusqu’au moment de l’exécution ou lorsqu’une nouvelle action « Valider le modèle » est déclenchée.

Une frustration courante chez le concepteur de modèles QGIS est qu’il force constamment les modèles à être valides, même les modèles de travail en cours. Cela signifie qu’il est impossible d’ajouter un composant à un modèle et de ne remplir que partiellement ses paramètres - vous devez tout remplir au préalable. Si vous vous rendez compte à mi-chemin que vous devez apporter une modification à un autre endroit de votre modèle, il est impossible de le faire sans annuler et perdre tous les paramètres que vous avez déjà configurés.

Cette modification permet de reporter la validation du modèle jusqu’au moment de l’exécution. Les modèles peuvent être temporairement invalides (par exemple, si les composants de l’algorithme ne sont que partiellement configurés). Les valeurs requises manquantes peuvent maintenant être complétées ultérieurement, sans perdre les paramètres existants. Si un modèle non valide est exécuté, l’utilisateur reçoit un avertissement descriptif l’informant des modifications qu’il doit apporter pour terminer la configuration du modèle.

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalite : Ajout de la prise en charge de différents types de données raster dans l’algorithme de création de couches raster constantes

Avec cette fonctionnalité, nous avons ajouté un nouveau paramètre avancé OUTPUT_TYPE pour l’algorithme créer une couche raster constante. Grâce à ce paramètre, vous pouvez maintenant spécifier un type de données de sortie pour vos couches raster constantes.

  • Byte
  • Integer16
  • Unsigned Integer16
  • Integer32
  • Unsigned Integer32
  • Float32
  • Float 64

image93

Cette fonctionnalité a été développée par Clemens Raffler

Fonctionnalite : Ajout de l’algorithme Round raster

Grâce à ce nouvel algorithme de traitement, nous permettons aux QGIS d’arrondir les valeurs Raster.

La principale fonctionnalité de l’algorithme est soit l’arrondi standard vers le haut/le bas/le plus proche des valeurs des cellules à virgule flottante, soit l’arrondi aux puissances d’une base n spécifiée par l’utilisateur. L’algorithme peut être utilisé avec des rasterr de tous types (même des raster d’octets/entiers lorsqu’il est arrondi à des puissances de n) et produit le même type de données draster. Un arrondi standard en virgule flottante d’une trame d’entier la copiera et provoquera un avertissement.

L’exemple montre un raster sortie arrondie à des multiples de 10

image94

Cette fonctionnalité a été développée par Clemens Raffler

Fonctionnalite : Permet de copier/couper/coller les composants du modèle

Cette fentité permet aux utilisateurs de copier et de coller les composants d’un modèle, à la fois dans le même modèle et entre différents modèles

image95

Refs NRCan Contract#3000707093

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalité : Permet d’ajouter les résultats du traitement aux couches existantes

Lorsqu’ils ajoutent des résultats, les utilisateurs ont le choix d’un panneau de mise en correspondance des champs pour leur permettre de définir manuellement la façon dont les champs sont mis en correspondance avec les champs de la couche de destination :

image96

Refs NRCan Contract#3000707093

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalité : Permettre la création de boîtes de groupe dans les modèles

Ajoute les fonctions suivantes au concepteur de modèles :

  • La possibilité de personnaliser la couleur des commentaires individuels dans un modèle
  • Permettre la création de « boîtes de groupe » dans les modèles, qui sont un indicateur visuel des composants du modèle lié logiquement (par exemple « étapes de préparation des données », « étapes de calcul de l’ndvi », etc.) ). Les utilisateurs peuvent personnaliser la couleur et le titre des boîtes de groupe.
  • Permet de naviguer directement vers les boîtes de groupe à partir du menu Affichage, ce qui facilite la navigation dans les modèles complexes.

image97

Refs NRCan Contract#3000707093

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalité : Traitement : affichage des valeurs d’entrée et de sortie pour les enfants après avoir fait passer le modèle par le concepteur

Une image explique mieux cela ! Après avoir lancé l’algorithme dans le concepteur, vous voyez maintenant les valeurs calculées pour les entrées et les sorties de chaque algorithme enfant :

image98

Cela est très utile pour le débogage des modèles – vous pouvez voir une image visuelle beaucoup plus claire du flux de valeurs à travers le modèle.

Refs NRCan Contract#3000707093

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalité : Ajout de l’algorithme « Sauvegarder le log en fichier » pour les modèles

Cet algorithme enregistre dans un fichier le contenu du journal d’exécution (jusqu’au point du modèle où l’algorithme de « sauvegarde du journal » s’exécute).

Il peut être utilisé pour stocker automatiquement le journal de débogage lors de l’exécution des modèles pour référence ultérieure et transparence.

Refs NRCan Contract#3000707093

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalité : permet d’exécuter des algorithmes directement sur des bases de données (et d’autres sources qui ne sont pas dans disque) sans avoir à les charger dans les projets au préalable

Ce changement permet aux utilisateurs de naviguer directement vers des sources de couches non basées sur disque pour toute entrée de source de fonction de traitement. Il permet de prendre ces entrées directement dans les couches postgres, sql server, oracle, wfs, afs, etc. sans avoir à les charger au préalable dans un projet !

Nous tirons pleinement parti du navigateur QGIS pour l’activer :

image99

Refs NRCan Contract#3000707093

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalité : Exposez les options avancées de traitement des intrants par source d’entité

Cette fonction expose les options avancées par source, telles que :

  • La possibilité de limiter le nombre d’entités lues à partir de la source. (Utile dans le développement de modèles, vous pouvez facilement tester des modèles d’exécution en utilisant un petit sous-ensemble d’une couche d’entrée)
  • La possibilité de passer outre l’option de traitement global par entrée pour le traitement des géométries non valables. Vous pouvez maintenant laisser le paramètre de traitement par défaut au paramètre conservateur « Arrêter l’exécution de l’algorithme lorsqu’une géométrie est invalide » tout en le remplaçant temporairement pour une entrée particulière !

image100

Refs NRCan Contract#3000707093

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalité : Permettre l’accrochage à la grille pour les modèles dans le designer

Cette mise à jour met en œuvre deux fonctions « d’accrochage » dans le concepteur de modèles de traitement :

  1. Les utilisateurs peuvent activer une nouvelle option « Enable Snapping » dans le menu d’affichage, qui permettra à toutes les opérations de déplacement ou de redimensionnement des composants de s’accrocher automatiquement aux grilles
  2. Après avoir sélectionné certains composants, l’utilisateur peut sélectionner Éditer -> Coller les composants sélectionnés sur la grille pour ne coller manuellement que les composants sélectionnés.

En outre, j’ai ajouté une action « sélectionner tout » utile pour sélectionner rapidement tous les composants d’un modèle.

Refs NRCan Contract#3000707093

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalité : Ajout des algorithmes « filtre par type de géométrie » et « filtre par type de couche » au traitement

Cette mise à jour ajoute deux nouveaux algorithmes au traitement :

  • « Filtrer par type de géométrie » : Cet algorithme filtre les caractéristiques en fonction de leur type de géométrie. Les éléments entrants seront dirigés vers différentes sorties selon qu’ils ont une géométrie de point, de ligne ou de polygone. Il permet la création de modèles qui répondent à différents types de géométrie de la couche d’entrée en appliquant une logique différente selon le type de géométrie en entrée.
  • « Filtrer par type de couche » : Cet algorithme permet un branchement conditionnel du modèle basé sur un type de couche d’entrée. Par exemple, il permet à un modèle de s’adapter au type de couche réel d’une entrée de paramètre générique « couche de carte », et de décider quelle branche du modèle doit être exécutée en conséquence.

Il ajoute également l’API nécessaire pour permettre aux algorithmes de « tailler » les branches du modèle en fonction de leurs résultats calculés. Par exemple, un modèle qui renvoie le nouveau drapeau FlagPruneModelBranchesBasedOnAlgorithmResults fera en sorte que toutes les parties restantes du modèle qui dépendent des sorties de cet algorithme seront entièrement ignorées SI l’algorithme ne renvoie pas cette sortie particulière. (Il s’agit d’un composant préalable pour un futur algorithme générique de « branchement conditionnel par expression », et également utilisé par le « filtre par type de couche » pour contrôler le flux du modèle en fonction du type de couche d’entrée)

Refs NRCan Contract#3000707093

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalite : L’algorithme « Remove Null Geometries » peut également supprimer les géométries vides

Les géométries vides ne contiennent pas de coordonnées. Ainsi, comme les géométries nulles, les géométries vides ne sont pas des données spatiales au sens strict. Pour faciliter le nettoyage d’une couche vectorielle par les utilisateurs, l’algorithme Remove Null Gometries dispose désormais d’une option « Also remove empty geometries ».

image101

Cette fonctionnalité a été financée par SwissTierras Colombia

Cette fonctionnalité a été développée par Germán Carrillo

Fonctionnalite : Ajout d’une gestion multi-sélection au concepteur du modèle, redimensionnement interactif

Ajoute :

  • La possibilité de sélectionner plusieurs éléments à la fois dans le concepteur du modèle
  • La possibilité de redimensionner des item individuels ou multiples
  • La possibilité de supprimer plusieurs éléments sélectionnés
  • Amélioration de l’interaction entre les « outils » du concepteur de modèle, suivant l’approche du concepteur de mise en page (par exemple, alt + espace = mode de glissement du zoom, et les outils de sélection suivent leurs homologues dans les mises en page, de sorte que shift+selection ajoute à la sélection, ctrl+selection enlève, etc)
  • Les éléments sélectionnés peuvent être déplacés à l’aide des touches de curseur

Refs NRCan Contract#3000707093

Voici à quoi cela ressemble en action (avec un modèle de test que j’utilise !)

image102

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalité : Ajout d’un support d’annulation/rétablissement au concepteur de modèles

Rend les utilisateurs de QGIS plus indulgents !

Refs NRCan Contract#3000707093

Il fonctionne comme on peut s’y attendre :

image103

Notez que nous sauvegardons toute la définition du modèle dans la pile d’annulation, et pas seulement les modifications des composants affectés.

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalite : Mémoriser les valeurs des paramètres entre les exécution du concepteur de modèles.

Lors de la conception d’un modèle, les utilisateurs devront généralement l’exécuter plusieurs fois, car ils doivent en modifier la structure.

Cette modification fait que les paramètres utilisés lors de l’exécution du modèle depuis le concepteur sont mémorisés et sauvegardés dans le modèle, de sorte que chaque fois que vous exécutez le modèle depuis le concepteur, vous n’avez pas à réinitialiser toutes les valeurs des paramètres d’entrée aux valeurs de test souhaitées.

Rend la conception itérative de modèles tellement plus facile !

Sponsored by Alta Ehf

Comprend également un portage partiel du dialogue du concepteur de modèle de Python vers c++, car c++ >> Python.

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalité : Commentaires dans les modèles de traitement

Cela permet aux utilisateurs de créer des commentaires attachés aux composants du modèle (entrées, algorithmes ou sorties). Les commentaires sont affichés liés au composant associé, et peuvent être librement déplacés dans le modèle.

image104

Financée par Fisel + König

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalite : Nouvel outil de console autonome pour l’exécution d’algorithmes de traitement

Ce nouvel outil qgis_process permet aux utilisateurs d’exécuter des algorithmes de traitement (à la fois intégrés, et ceux fournis par des plugins) directement depuis la console.

En cours d’exécution :

  • ``qgis_process list``produira une liste complète de tous les algorithmes disponibles, regroupés par fournisseur.
  • qgis_process plugins liste les plugins disponibles et activés qui annoncent l’option de métadonnées hasProcessingProvider (seuls ces plugins sont chargés par l’outil).
  • L’algorithme qgis_process help algid fournit l’aide et les descriptions d’entrée pour l’algorithme spécifié, par exemple qgis_process help native:centroids.

qgis_process run : exécute un algorithme. Les paramètres sont spécifiés par une syntaxe --param=valeur. Par exemple

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

ou

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

Pendant l’exécution d’un algorithme, une barre de rétroaction textuelle s’affiche, et l’opération peut être annulée via CTRL+C

Sponsored by the Swedish User Group

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalite : Nouveau type de paramètre pour les valeurs de date-heure (ou date, ou heure)

Ajout d’un nouveau type de paramètre QgsProcessingParameterDateTime pour le traitement des valeurs de date/date/heure.

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalite : Ajout d’algorithmes permettant de déclencher des avertissements et des exceptions aux modèles

Ces algorithmes déclenchent soit un avertissement personnalisé dans le journal de traitement, soit une exception qui entraîne l’arrêt de l’exécution du modèle.

Une expression de condition optionnelle peut être spécifiée pour contrôler si l’avertissement/l’exception est levée ou non, permettant une logique telle que « si la couche de sortie d’un autre algorithme contient plus de 10 caractéristiques, alors l’exécution du modèle est interrompue ».

Sponsored by Fisel + König

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalite : Ajout de l’algorithme de remplissage des cellules NoData

Dans la nouvelle version de QGIS, nous introduisons un nouvel algorithme de traitement pour remplir les cellules NoData dans un ensemble de données matricielles avec une entrée numérique constante.

L’algorithme analyse un ensemble de données raster d’entrée pour détecter les cellules NoData et les remplit avec la valeur de remplissage définie par l’utilisateur. Ce faisant, l’algorithme respecte le type de données raster d’entrée de sorte que, par exemple, les nombres à virgule flottante seront traités de manière appropriée pour une trame entière. L’ensemble de données résultant ne contiendra aucune cellule NoData.

image105

Cette fonctionnalité a été développée par Clemens Raffler

Fonctionnalite : Diverses corrections pour le traitement

  • Finaliser le travail sur le support des paramètres de portée dans les algorithmes GRASS ;
  • Correction de l’algorithme des séries R brisées
  • Corrections mineures de r.rescale et r.rescale.eq
  • Correction pour l’outil de rasterisation
  • GRASS GIS tests cleanup

Cette fonctionnalité a été développée par Alexander Bruy

Fonctionnalite : Afficher les contraintes de champ de la « couche modèle » dans l’interface de l’algorithme « Refactoriser champs »

Lorsque vous migrez des données, il est important d’être conscient des contraintes sur les couches cibles (aussi appelées modèles).

L’algorithme « Refactoriser champs » met désormais en évidence les contraintes, et vous permet même d’en savoir plus sur celles-ci grâce à des info-bulles.

image106

Cette fonctionnalité a été financée par SwissTierras Colombia

Cette fonctionnalité a été développée par Germán Carrillo

Fonctionnalite : Nouvel algorithme de conversion en courbes

Nous avons ajouté un nouvel algorithme pour convertir les géométries segmentées en géométries courbes.

L’algorithme considère que les points successifs représentent une courbe s’ils sont espacés uniformément et dans une tolérance.

image107

Cette fonctionnalité a été développée par Nyall Dawson

Options de l’application et du projet

Fonctionnalite : Ajout des variables @layers, @layer_ids sur la portée du projet

Ajouter les variables @layers, @layer_ids project scope qui contiennent les listes des couches de la carte et les ids des couches de la carte pour toutes les couches du projet actuel

Ceci imite les couches @map_ existantes, @map_layer_ids, mais contrairement aux variantes @map, elles renvoient TOUTES les couches du projet, pas seulement celles associées aux paramètres de la carte du contexte actuel.

Parrainé par SLYR

Cette fonctionnalité a été développée par Nyall Dawson

Fournisseurs de données

Fonctionnalite : Permet d’ajouter des attributs dans la boîte de dialogue New scratch Layer

Permet à l’utilisateur d’ajouter des attributs directement dans le dialogue Nouvelle Switch Layer, ce qui le rend plus cohérent avec d’autres dialogues comme Nouveau fichier de forme/boîte à outils. image108

Il est toujours possible de créer une switch layer sans aucun attribut en n’ajoutant aucun champ à la liste.

Cette fonctionnalité a été développée par Alexander Bruy

Fonctionnalite : Permet de créer des tables DBF sans géométrie à partir du dialogue New Shapefile

Permet de créer des fichiers DBF « simples » sans géométrie associée à partir du dialogue Nouveau fichier de forme.

image109

La création de tables DBF peut être utile dans certains cas et il n’est pas pratique de devoir utiliser des outils tiers pour cela au lieu de le faire à partir de QGIS. Cela rend également le dialogue « New Shapefile » plus cohérent avec le dialogue « New Geopackage », qui permet déjà de créer des tables « sans géométrie ».

Cette fonctionnalité a été développée par Alexander Bruy

Fonctionnalité : Permet de filtrer la liste des WM(T)S dans le dialogue source

Ajouter la possibilité de filtrer entre les listes de WMS ou WMTS à partir du dialogue source

WMS image110

WMTS image111

Sponsored by the QGIS Swiss user group

Cette fonctionnalité a été développée par Denis Rouzaud

Fonctionnalite : Ajout de tuiles vectorielles dans le dialogue du gestionnaire de sources de données et dans le menu Couche

Ajout d’un nouvel onglet au dialogue du gestionnaire de sources de données permettant à l’utilisateur de gérer/ajouter des connexions de tuiles vectorielles, y compris importation/exportation. Ajoute également une entrée correspondante dans le menu Couche.

Cette fonctionnalité a été développée par Alexander Bruy

Fonctionnalite : Importation/exportation pour les connexions ArcGIS Map et FeatureServer

Ajout de la fonctionnalité d’import/export manquée pour les connexions ArcGIS MapServer et FeatureServer.

Cette fonctionnalité a été développée par Alexander Bruy

Fonctionnalite : Ajout de tuiles XYZ dans le dialogue du gestionnaire de sources de données et dans le menu Couche

Ajout d’un nouvel onglet au dialogue du gestionnaire de sources de données permettant de gérer/ajouter des connexions XYZ. Ajoute également l’entrée correspondante au menu Couches.

Cette fonctionnalité a été développée par Alexander Bruy

Fonctionnalite : Groupe de transactions spatialite

Implémentation des transactions pour le fournisseur natif de SpatiaLite.

Cette fonctionnalité a été financée par ARPA Piemonte

Cette fonctionnalité a été développée par Alessandro Pasotti

Fonctionnalite : Permet de sauvegarder les résultats directement dans d’autres formats de base de données (et d’autres trucs sympas)

Cette mise à jour permet aux utilisateurs d’enregistrer les traitements des sorties vecteurs directement dans d’autres formats de base de données.

Auparavant, les résultats ne pouvaient être écrits directement dans les bases de données de postgres. Avec ce changement, cette fonctionnalité a été rendue plus flexible et permet désormais d’écrire directement dans n’importe quel fournisseur de base de données qui met en œuvre l’API de connexion (actuellement postgres, geopackage, spatialite et sql server)

En fin de compte, cela expose la nouvelle possibilité de sauvegarder directement les sorties vers des bases de données SQL Server ou Spatialite (à côté des options GPKG+Postgres précédentes qui existaient déjà)

(Dès qu’oracle, db2, … auront l’API de connexion implémentée, nous obtiendrons instantanément le support d’écriture directe pour ceux-ci aussi !)

Nous le faisons via une belle version en ligne du nouveau widget « new database table name ».

image112

Il y a aussi d’autres choses intéressantes :

  • Vous pouvez maintenant glisser et déposer des fichiers ou des dossiers depuis l’explorateur ou le navigateur qgis vers les paramètres de sortie afin d’écraser facilement ces fichiers (ou de les enregistrer dans le dossier), en faisant correspondre le comportement possible avec les entrées
  • Vous pouvez en fait écrire des scripts qui sortent directement vers n’importe quel fournisseur de données qgis (y compris oracle et db2) … c’est juste que ceux-ci ne sont pas exposés dans l’interface utilisateur car ils ne supportent pas encore l’API de connexion

Refs NRCan Contract#3000707093

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalite : Ajout d’un type de paramètre dédié pour les connexions aux bases de données

Permet de faire une sélection parmi les connexions de base de données enregistrées pour un type de fournisseur de base de données spécifique (le fournisseur doit mettre en œuvre l’API de connexions).

Refs NRCan Contract#3000707093

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalite : PG : exposer les foreign table

Expose les foreign tables étrangères au navigateur et au dialogue de sélection de la source de données.

Cette fonctionnalité a été développée par Alessandro Pasotti

Fonctionnalite : exposer un filtre sur des données raster dans l’application (PG)

Cette modification devrait être la dernière du fournisseur de données raster PostG et expose les options de filtrage définies :

  • Le filtre peut être défini dans le dialogue de la source de données (comme pour les couches vecteur)
  • Le filtre peut être défini à partir du menu contextuel de l’arbre de légende (comme pour les couches vectorielles)
  • Le moteur de rendu, l’étendue et les statistiques min/max sont également mis à jour lorsque le filtre change
  • De nouveaux tests pour un nouveau comportement

image113

Cette fonctionnalité a été financée par ARPA Piemonte

Cette fonctionnalité a été développée par Alessandro Pasotti

Fonctionnalite : Postgres : enregistrer les caractéristiques dans des tables avec les champs générés

Permet de mettre à jour/insérer des entités dans les tables PostgreSQL avec les champs générés. Les colonnes générées sur une entité est supportée à partir PostgreSQL 12, qui permet de générer des valeurs de colonne à partir d’autres colonnes de la même table ; cela remplace la création de triggers pour, par exemple, remplir et maintenir automatiquement à jour une colonne de centroïdes ou de surfaces pour les polygones de la colonne géométrique principale.

Cette fonctionnalité a été développée par José de Paula Rodrigues N. Assis

Fonctionnalite : Prise en charge des types de champs Date et DateTime ajoutée aux fournisseurs de Spatialite et de Delimited Text

Les fournisseurs Spatialite et Delimited Text prennent désormais en charge les types de champs Date et DateTime.

Cette fonctionnalité a été développée par Mathieu Pellerin

QGIS Server

Feature: Add QGIS_SERVER_IGNORE_BAD_LAYERS config option

Permet d’outrepasser le comportement par défaut dans le cas de mauvaises couches (ce qui a pour effet d’invalider l’ensemble du projet).

Lorsqu’il est réglé sur VRAI, les mauvaises couches sont ignorées et le reste du projet devient disponible.

Cette fonctionnalité a été financée par Geoinformatikbüro Dassau GmbH

Cette fonctionnalité a été développée par Alessandro Pasotti

Fonctionnalite : Paramètres du projet de serveur, ajout de l’attribut « étendu »

En plus de l’attribut « visible » et « mutuellement exclusif », cette mise à jour ajoute « étendu » à la réponse GetProjectSettings du serveur. La mise à jour permet à un client web de voir quels éléments de l’arbre des couches sont développés / réduits et de les présenter de la même manière dans la liste des couches de la carte web.

Cette fonctionnalité a été développée par mhugent

Fonctionnalité: Ajouter les paramètres d’exportation du serveur DXF NO_MTEXT et FORCE_2D

Le serveur QGIS supporte maintenant les nouveaux paramètres NO_MTEXT et FORCE_2D pour contrôler le texte et la symbologie des lignes pour les fichiers DXF.

Ajoute les paramètres manquants à la requête GetDxf.

Cette fonctionnalité a été développée par Matthias Kuhn

Fonctionnalite : Validateur de projet WMS

Le validateur du serveur QGIS a été revu. Cet outil est utile lorsque vous souhaitez publier un projet QGIS en utilisant le protocole WMS.

Pour les programmeurs, le validateur est maintenant aussi appelable depuis PyQGIS, donc les plugins peuvent maintenant l’utiliser aussi.

Cette fonctionnalité a été financée par 3Liz

Cette fonctionnalité a été développée par Etienne Trimaille

Fonctionnalite : Webp

WebP est un format d’image moderne qui offre une compression supérieure sans perte et avec perte pour les images sur le web. WebP crée des images plus petites et plus riches qui rendent le web plus rapide.

Les images WebP sans perte sont 26 % plus petites que les PNG. Les images WebP avec perte sont 25-34% plus petites que les images JPEG comparables à indice de qualité SSIM équivalent.

Source: https://developers.google.com/speed/webp

Avec webp, le serveur QGIS prend désormais en charge un format qui permet de réduire la taille des fichiers pour une qualité identique et même d’assurer la transparence.

Cette fonctionnalité a été financée par OPENGIS.ch

Cette fonctionnalité a été développée par Matthias Kuhn (OPENGIS.ch)

Extensions

Fonctionnalite : Permettre aux plugins d’enregistrer des gestionnaires de « Project Open » personnalisés

Ceux-ci permettent aux plugins d’étendre le dialogue « Ouvrir un projet » en ajoutant la prise en charge de nouveaux filtres de fichiers, qui apparaissent dans la liste déroulante des formats à côté de l’entrée « Projets QGS » existante.

Les gestionnaires d’ouverture de projet personnalisés ont alors la chance de charger les fichiers de projet.

Cela permet aux plugins d’étendre le support QGIS en ajoutant un support intégré pour l’ouverture de projets à partir de formats non QGS/QGZ, par exemple en permettant aux utilisateurs d’ouvrir des documents ArcGIS MXD ou des espaces de travail MapInfo WOR directement à partir du dialogue d’ouverture de projet.

Ces projets non natifs sont également ajoutés à la liste des projets récents et à l’écran d’accueil, ce qui leur donne une expérience vraiment de premier ordre au sein de QGIS.

Parrainé par SLYR

image114

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalite : Permettre aux utilisateurs d’installer des plugins stables ou expérimentaux

Cette mise à jour améliore le gestionnaire de plugin en permettant aux utilisateurs de choisir entre l’installation de la version stable ou de la version expérimentale d’un plugin.

Cela permet d’avoir des pré-livraisons de plugins dans le dépôt pour que les utilisateurs puissent les tester, tout en leur permettant de revenir facilement à des versions stables, sans avoir à décocher l’option globale activer l’expérimentation.

Ce changement ne fait aucune différence pour les utilisateurs qui n’ont pas coché l’option activer l’expérimentation.

image115

Cette fonctionnalité a été financée par Swiss QGIS User Group

Cette fonctionnalité a été développée par Olivier Dalang

Programmation

Fonctionnalite : Support pour l’ajout de widgets du dock sous forme d’onglets : addTabifyDockWidget()

Les widgets du dock sont parfaits pour afficher des interfaces complexes qui étendent les fonctionnalités du QGIS.

Désormais, les développeurs du noyau et des plugins ont la possibilité de tabuler leurs widgets de dock en plus de ceux qui existent déjà. Ils peuvent même choisir sur quel widget ils veulent que leur propre widget apparaisse.

image116

Cette fonctionnalité a été financée par SwissTierras Colombia

Cette fonctionnalité a été développée par Germán Carrillo

Fonctionnalite : portage des paramètres de sortie du port vers la nouvelle API

Porte les enveloppes des paramètres de sortie (sinks, vector, raster, fichiers et dossiers de destination) vers la nouvelle API c++ pour le dialogue et le modeleur.

Cela permet une série de nouvelles possibilités, notamment :

  • Modèles avec sorties statiques pour les algorithmes enfants, par exemple en sauvegardant toujours la sortie d’un algorithme enfant dans une couche géopackage ou postgres
  • Modèles avec des valeurs de sortie basées sur des expressions pour les algorithmes enfants, par exemple en générant un nom de fichier automatique basé sur la date du jour et en enregistrant les sorties dans ce fichier

image117

Refs NRCan Contract#3000707093

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalite : Porter les derniers paramètres d’entrée restants vers la nouvelle API

Cette mise à jour porte le paramètre d’entrée Raster Band et le paramètre d’entrée Multi Layer sur la nouvelle API C++.

Les avantages comprennent :

  • Listes de bandes/couches basées sur l’expression dans les modèles
  • Listes en ligne (non bloquantes) pour les paramètres de multi-sélection (champs, bandes, listes de couches, énumérations)
  • Réorganisation des entrées pour les paramètres multicouches dans les modèles, afin de définir des ordres de couches spécifiques

Refs NRCan Contract#3000707093

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalité : Porter des paramètres de source, de raster, de vecteur et de couche de maillage dans la nouvelle API

Il est maintenant possible d’utiliser des sources de couches basées sur des expressions dans les modèles de traitement.

Refs NRCan Contract#3000707093

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalite : Couche de tuiles vectorielles - partie 1

Il s’agit du travail initial sur le support des couches de tuiles vectorielles.

image118 (Les lignes rouges ne sont pas des artefacts de rendu, elles sont tracées intentionnellement pour montrer les bordures des tuiles).

Résumé

Jusqu’à présent, cela n’inclut que les modifications apportées à la bibliothèque qgis_core.

Principaux ajouts à l’API publique :

  • QgsVectorTileLayer - la principale classe de couches cartographiques
  • QgsVectorTileRenderer - classe de base pour les implémentations de classe de rendu pour les tuiles vectorielles
  • QgsVectorTileBasicRenderer - implémentation du moteur de rendu par défaut

Nouvelles classes privées (peuvent être ajoutées à l’API publique si nécessaire) :

  • QgsVectorTileLoader - gère l’extraction des tuiles du réseau / mbtiles
  • QgsVectorTileMVTDecoder - gère le décodage des données brutes des tuiles en fonction des caractéristiques
  • QgsVectorTileLayerRenderer - s’occupe du rendu global (extraction + décodage + dessin)
  • QgsVectorTileUtils - diverses fonctions utiles

Quelques nouvelles classes qui peuvent être partagées par les tuiles vectorielles et rasters :

  • QgsTileXYZ - position d’une tuile dans l’ensemble de la matric des tuiles (niveau de zoom, colonne, ligne)
  • QgsTileRange - sélection rectangulaire dans une matrice de tuiles (colonne et ligne de début/fin)
  • QgsTileMatrix - description d’une matrice de tuiles (étendue de la carte, niveau de zoom, échelle, nombre de lignes/colonnes)

(également QgsTileMatrixSet à ajouter ultérieurement lorsque nous prendrons en charge d’autres ensembles de matrices de tuiles que GoogleCRS84Quad)

Test

Vous pouvez charger une couche de tuiles vectorielles depuis la console Python, par exemple: :

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)

Il est également possible de charger des tuiles vectorielles à partir d’un fichier MBTiles local - pour « type » utilisez « mbtiles » et pour « url » utilisez un chemin local (par exemple « /home/martin/x.mbtiles »).

Il n’y a actuellement aucun soutien pour l’étiquetage.

Merci

Un grand merci à tous les bailleurs de fonds qui ont contribué au crowdfunding et ont rendu cela possible - https://www.lutraconsulting.co.uk/blog/2020/04/02/vectortiles-donors

Cette fonctionnalité a été financée par la communauté QGIS

Cette fonctionnalité a été développée par Lutra Consulting (Martin Dobias)

Fonctionnalite : Paramètre d’étendue du traitement des ports pour la nouvelle api, nombreuses autres améliorations

Cette mise à jour porte finalement le paramètre extent sur la nouvelle api c++, mais en cours de route :

  • Refonte du widget gui existant « QgsExtentGroupBox » afin de le remplacer par « QgsExtentWidget » (permettant de l’utiliser dans les endroits où un groupe est inapproprié ou semble mauvais). Il ajoute également un nouveau mode « condensé » pour le widget, car l’apparence par défaut est très lourde en espace.
  • Le nouveau widget de paramètres utilise ce QgsExtentWidget commun, de sorte que nous supprimons tout le code dupliqué qui était auparavant utilisé par l’ancien wrapper python
  • Permet de glisser et de déposer les couches de la carte du projet depuis l’arbre des couches vers un QgsExtentWidget afin de définir automatiquement l’étendue à faire correspondre
  • Permet l’annulation facultative du QgsExtentWidget
  • Permet de définir les valeurs de QgsGeometry pour les paramètres d’étendue. Ceci est fait pour faciliter l’utilisation des paramètres d’étendue avec le mode « valeur précalculée » dans les modèles – vous pouvez maintenant utiliser toutes les fonctions de géométrie d’expression pour calculer une géométrie et la boîte englobante de celle-ci est utilisée pour la valeur du paramètre dans l’algorithme enfant

Refs NRCan Contract#3000707093

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalite : Interface et API pour des outils de développement/débogage unifiés

Ajout de hooks d’interface pour permettre aux plugins (et c++) d’enregistrer des outils de « développement/débogage

Ces outils apparaissent dans un nouveau dock « Outils de développement/débogage » et offrent une manipulation et une place unifiées pour ces outils dans l’interface utilisateur.

L’intention ici est que les outils de développement/débogage spécialisés soient déplacés vers cette interface commune, par exemple

  • Loggeur réseau
  • Inspecteur de variables locales en Python
  • Outils de débogage au démarrage
  • Outils de débogage de la charge des couches et du temps de rendu … ?

Voici un exemple de démo montrant un outil de développement « Python locals » :

image119

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalite : Support des types de données pour QgsProcessingParameterMapLayer

Permettre la définition des types de couches acceptés pour « QgsProcessingParameterMapLayer ». Ceci est utile lorsqu’un algorithme peut fonctionner avec différents types de couches (par exemple, des points et des trames) et évite la duplication du même algorithme avec des entrées différentes.

Il s’agit d’une amélioration de l’API qui n’est pas visible pour la grande majorité des utilisateurs.

Cette fonctionnalité a été développée par Alexander Bruy

Fonctionnalite : Ajout de types de paramètres de traitement pour le schéma de la base de données et le nom de la table

Remplace les anciens wrappers ad-hoc de widgets Python postgis par des paramètres de première classe en c++ pour les schémas et les tables, avec des wrappers construits à partir de l’api des connexions de base.

Refs NRCan Contract#3000707093

Cette fonctionnalité a été développée par Nyall Dawson

Correctifs notables

Fonctionnalité : Bug fixes by Alessandro Pasotti

Bug Titre URL du ticket (le cas échéant) URL du commit (Github) Commit sur la 3.10 - backport (GitHub)
Getfeatureinfo ne montre pas les éléments de référence de la relation sous QGIS server #36549 Il s’est avéré qu’il s’agissait d’une demande d’amelioration N/A
OGR provider QgsOgrProvider::changeAttributeValues returns true on errors #36583 PR #36620 N/A
GPKG transaction groups are stored with empty second pair of the key #36525 PR #36660 PR #37157
Symbology using relations does not propagate in QGIS Server #36614 ne peut pas se reproduire N/A
« Loading PostGIS raster with QGIS 3.12.3 crashes » #36689 PR #36702 not relevant
GetFeatureInfo Fid value is different between application/json and application/vnd.ogc.gml #36262 PR #36733 PR #37158
GPKG (and spatialite) DB-level unique constraints are not supported by OGR (and spatialite) provider #36468 PR #36802 N/A
no value in the attribute form if value missing in the value map #32756 PR #36804 N/A
DB Manager does not show anymore query results #36205 PR #36823 N/A
DB Manager does not show anymore query results #36205 PR #36831 N/A
GPKG browser drag&drop not working non signalé PR #36972 PR #37159
it is not possible to save a project in the geopackage #36832 PR #36980 N/A
It is possible to store text into a numeric field, while it shouldn’t be, using the Date/Time edit widget #36715 #36715 N/A
Feature creation very slow when using joins #36167 PR #36866, PR #36963 N/A
QGIS Server: WFS Request does not use SrsName on the geometry #36398 PR #36926, PR #37071 non critique
Unable to delete a stored geopackage connection from browser #36930 PR #36937 PR #37166
Constraints: unique constraint not correctly evaluated when 0 #36962 PR #36967 N/A
PyQgis: OriginJoin fields arte not present into QgsLayerVector QgsFields container for GeoPackage layers #36977 non reproductible N/A
Joined tables cannot be edited even if the « editable join layer » option is checked #36934 not reproducible/in progress N/A
Removal of unused “allowMethod” from qgisservice/qgisserverapi #36163 PR #36997 N/A
Omogenize window title #35761 PR #36998 N/A
Labeling: data-defined alignment grey-out activation issue #37003 PR #37006 PR #37167
QGIS reports « no layers » in GeoPackage when geopackage directory is write protected #36574 PR #37018 not critical (UX only)
Joined tables cannot be edited even if the « editable join layer » option is checked #36934 won’t fix N/A
Postgis Timestamps from query in DB Manager displayed as `PyQT5.QTCore.QDateTime(2020, 3, 17 #35140 PR #37042 N/A
Wrong image preview and image preview size in form #33682 PR #37093 PR #37168
can’t change value in vertex editor if « locale » settings use commas as decimal separator #29682 PR #37135 PR #37169
Identifying a WMS layer with format « feature » crashes QGIS #29443 PR #37171 PR #37210
Attempting to create a new feature in Spatialite with transaction group and NOT NULL constraint fails #37236 won’t fix N/A
Using « Add feature » to create feature and child feature with transaction group causes foreign key error #37222 PR #37249 non critique
Vectorlayer from spatialite missing features and inconsistent feature count #29264 PR #37277 À faire

Cette fonctionnalité a été financée par QGIS.ORG (grâce aux dons et adhésions de soutien)

Cette fonctionnalité a été développée par Alessandro Pasotti

Fonctionnalité : Correction de bugs par Loïc Bartoletti

Bug Titre URL du ticket (le cas échéant) URL du commit (Github) Commit sur la 3.10 - backport (GitHub)
Fix error when vector layer has Z #32016 PR #36553 PR #36595
Fix rectangle from 3 points #35043, #35671 PR #36523 PR #36560
Allow to search qmlplugindump in different paths N/A PR #36513 N/A
Fix the absence of words in the advanced configuration widget PR #35643#issuecomment-610215386 PR #36511 N/A
Fix interpolation on split geometry PR #36514 #33489 N/A

Cette fonctionnalité a été financée par QGIS.ORG (grâce aux dons et adhésions de soutien)

Cette fonctionnalité a été développée par Loïc Bartoletti

Fonctionnalité : Correction de bugs par Even Rouault

Bug Titre URL du ticket (le cas échéant) URL du commit (Github) Commit sur la 3.10 - backport (GitHub)
Wrong interpretation of EPSG code from a PRJ file in QGIS-dev (proj v7.1.0) #36111 PROJ PR 2240 N/A: PROJ issue
QGIS crashes when adding file to geopackage -> layer -> field(BLOB) #30210 PR #36722 PR #36737
Bad error message on WFS connection fail #29866 PR #36717 PR #36735
QGIS crashes during map re-rendering after CRS switch #29672 ne peut pas se reproduire N/A
QGIS crashes when « open directory » is selected from the recent projects contextual menu #31630 PR #36738 PR #36755
Problem reprojecting rasters in 54019 and 54042 CRSs #35512 PROJ PR 2243 N/A: PROJ issue
WFS Provider WARNING - Cannot create temporary SpatiaLite cache when using flatpak install #36545 PR #36745 N/A
WFS Transaction operation using GetCapabilities URI #34307 PR #36746 N/A
QGis 3.10.2 crashes when displaying two PostGIS raster layers #34456
N/A
Crashs de QGIS 3.4.10 - Python #31304 already fixed in master PR #36751
WMS provider expects SERVICE=WMTS keyword in uppercase to detect WMTS #36659 PR #36752 PR #36766
WCS DescribeCoverage response origin always empty #36504 PR #36754 PR #36781
Extent wrong if layer contains point at 0,0 #33823 Not a QGIS bug. Fixed in GDAL 3.1 N/A
Projection not recognised from Mapinfo converstion #34471 PR #36758 PR #36783
QGIS crashes/freezes when adding a large CSV file as delimited text layer #36392 PR #36778 PR #36810
QGIS 3.12 unknown CRS or Select Transformation #36837 GDAL Commit 68133b8 GDAL Commit 6ae7f60
BIGTIFF error is not obvious in processing log #36867 GDAL Commit cfc8e61 GDAL Commit fb88e3c

Cette fonctionnalité a été financée par QGIS.ORG (grâce aux dons et adhésions de soutien)

Cette fonctionnalité a été développée par Even Rouault

Fonctionnalité : Correction de bugs par Paul Blottiere

Bug Titre URL du ticket (le cas échéant) URL du commit (Github) Commit sur la 3.10 - backport (GitHub)
Fix segfault when adding a layer Mailing list PR #36910 N/A
Fix signal connection Unreported issue PR #35836 N/A
Update the API to export a legend in JSON Unreported binding issue PR #36370 N/A
Core dump if vector tile layer (file) becomes unavailable #36821 ne peut pas se reproduire N/A
Crash on project open when mapcanvas extents = nan #35899 ne peut pas se reproduire N/A
Using some functions in raster calulator crashes QGIS #35583 PR #37273 N/A
Auxiliary storage not usable in non editable layer #30376 Déjà corrigé. Fermé. N/A
Fix compilation with GCC 10, Qt/PyQt 5.15.0 and SIP 4.19.23 #37072 PR #37116 PR #37250

Cette fonctionnalité a été financée par QGIS.ORG (grâce aux dons et adhésions de soutien)

Cette fonctionnalité a été développée par Paul Blottiere

Feature: Bug fixes by Julien Cabieces

Bug Titre URL du ticket (le cas échéant) URL du commit (Github) Commit sur la 3.10 - backport (GitHub)
Reproducible crash using QgsMapCanvas.items() with Oracle layers #33791 PR #36240 PR #36246
Line breaks are ignored in the user expression help panel #36191 PR #36249 PR #36387
« Edit user expression » does not allow to rename the user expression #36192 PR #36349 N/A
Cannot change labels of raster symbology classes #36172 PR #36376 PR #36533
Crash when layer not available #33300 Ne peut pas se reproduire N/A
Select by expression returns erroneous results with integer field division for shapefiles #35449 PR #2531 N/A
Using concat(field1, field2) concatenates 0 instead of empty string (“”) if any of the fields is NULL #36112 PR #36521 PR #36529
Stuck at Recent Project window when opening blank file in 3.10.3 #34809 Ne peut pas se reproduire N/A
QGIS crashes on getting items of mapCanvas scene if features are identified #34457 PR #36439 PR #36450
sorting on a column that has a value relation is inconsistent #36114 PR #36776 PR #36887
Missing points (depending on canvas scale) in virtual layer based on sqlite file #36054 PR #36792 PR #36718
Project is modified as soon as you move cursor on canvas #36796 PR #36797 PR #36718
Set filter applied to wrong « version » of table when multiple geometry types #34982 PR #36801PR #36718  

Cette fonctionnalité a été financée par QGIS.ORG (grâce aux dons et adhésions de soutien)

Cette fonctionnalité a été développée par Julien Cabieces

Feature: Bug fixes by Bertrand Rix

Bug Titre URL du ticket (le cas échéant) URL du commit (Github) Commit sur la 3.10 - backport (GitHub)
Vertex tool override global snapping parameters #36229 PR #36231 N/A
QGIS crashes with QgsGeometry method on empty collection #36142 PR #36351 N/A
Selective masking: phantom lines on dark background #34650 PR #36697 N/A
Selective masking: issue with mask opacity #34947 PR #36697 N/A

Cette fonctionnalité a été financée par QGIS.ORG (grâce aux dons et adhésions de soutien)

Cette fonctionnalité a été développée par Bertrand Rix

Feature: Bug fixes by Sebastien Peillet

Bug Titre URL du ticket (le cas échéant) URL du commit (Github) Commit sur la 3.10 - backport (GitHub)
[Oracle]Error on save geometries because wrong default values #34482 #34482 PR #36769 N/A
Invalid query for default value of date column of an oracle layer #32401 PR #36769 N/A
Fields missing in Visibility by expression for a group in drag/drop form #35196 PR #36824 N/A
Project custom scales are displayed with scientific notation #36859 PR #36860 N/A
Oracle : tables are listed once for Polygons and once for MultiPolygons but both show all geometries #32521 PR #34358 N/A
Can’t set min/max values to decimal in raster symbology with QGis Linux versions #33859 PR #37136 N/A

Cette fonctionnalité a été financée par QGIS.ORG (grâce aux dons et adhésions de soutien)

Cette fonctionnalité a été développée par Sebastien Peillet

Fonctionnalité : Correction de bugs par Alexander Bruy

Bug Titre URL du ticket (le cas échéant) URL du commit (Github) Commit sur la 3.10 - backport (GitHub)
Copy of truncated variable copies truncated text, not original #30641 PR #36554 PR #36576
Turning Multi edit mode off does not go back to table view #25099 PR #36541 PR #36630
GRASS processing: missing parameter name #36520 PR #36644 PR #36690
Fix redirection of the stdout results to temporary files in GRASS Processing algorithms non signalé PR #36618 PR #36684
Fix GRASS r.tileset algorithm non signalé PR #36645 PR #36695
QgsRasterTerrainAnalysisPlugin: check QgsRelief::processRaster() returned value #17452 PR #36731 PR #36740
Histogram for graduated style in layer properties disappears when the layer properties window is too small #25197 PR #36732 PR #36749
Exporting image with atlas option « Save World file » lead to incorrect world file naming (text after dot is missing) #34523 PR #36742 PR #36748
« Reloading QGIS » from the crash report dialog fails to reopen the project #25532 PR #36736 PR #36750
Exporting raster style to SLD only works when output file has .sld suffix #35944 PR #36774 PR #36795
[Style Manager] Missing Favorites category in the « select by group » dialog from « Export symbols » #27315 PR #36793 non critique
TIN Interpolation - output raster format and size issues #31970 PR #36822 PR #36844
Layer panel: « Edit Symbol » does nothing if no symbol defined for a rule (in rule-based rendering) #23048 PR #36954 non critique
Attributes shift in the Service area algorithm results non signalé PR #37074, PR #37097 N/A
Processing testing framework does not apply rounding to values casted to numbers non signalé PR #37234 N/A

Cette fonctionnalité a été financée par QGIS.ORG (grâce aux dons et adhésions de soutien)

Cette fonctionnalité a été développée par Alexander Bruy

Fonctionnalité: correction de bugs par Nyall Dawson

Bug Titre URL du ticket (le cas échéant) URL du commit (Github) Commit sur la 3.10 - backport (GitHub)
Fix leak in mesh 3d renderer non signalé Commit 4b5a63d N/A
Fix hang when rendering symbol previews using Meters in Map Unit sizes #28690 Commit 7c6286f No – too intrusive
Fix font in CSS code editor non signalé Commit 63cb42c non critique
Fix rendering of geometry generator expressions which return geometry collection results #35356 Commit be281c49 No – too intrusive
[processing] Correctly expose date time inputs (and a bunch of others) as inputs for in-model expressions #37219 Commit 281356a N/A
Fix all Qt 5.14 deprecation warnings non signalé Commit 3717adc No – too intrusive
[symbology] When rendering a multipart geometry, ensure that geometry generator symbol is only rendered once, instead of once per part #23730 Commit d98fe9f No – too intrusive
[layout] Make « show feature count » button apply to all selected indexes #37194 Commit 671cebc No – too intrusive
Fix for container « show as group box » setting is lost when closing layer properties dialog #37205 Commit 803f507 N/A
Use even more forceful language to dissuade users from creating custom projections using Proj strings #37204 Commit 7ec4968 No – string change
Use « markers » terminology consistently in centroid fill widget #37106 Commit 2596b6b No – string change
Fixes to numbered list handling in dox/PyQGIS API non signalé Commit 74400c7 Non
Fix cross references in PyQGIS docs non signalé Commit 81a9db9 Non
[layouts] Fix attribute table sort order combined with feature filter results in empty tables #36341 Commit 24897ab N/A
Fix callout rendering to rotated labels #36681 Commit 2bb4aad N/A
Fix grass output handling in Processing models #36379 Commit ef19911  
Fix vector datasets incorrectly simplify to rectangles in some CRS views #36898 Commit 47fba10 No – too intrusive
Fix list item formatting in PyQGIS docs non signalé Commit 84ec481 N/A
[processing] Fix manual entry of extent values in widget #36787 Commit ccc34c7 N/A
[decorations] Use a proper ellipsoidal length calculation when calculating the size of the scalebar decoration #28407 Commit af19cea PR 36718 Commit a91309d
Fix collecting Triangle geometry types after tesselation #36638 Commit df46fba No – too intrusive
Fix writing triangle geometry type via QgsVectorFileWriter fails #36638 Commit e0c03f9 No – too intrusive
Fix degradation in Tesselation results #37077 Commit 61e7a5f N/A
Fix layer subset string is ignored when OGR refuses to accept a compiled feature request expression #37073 Commit b5b4221 PR 36718 Commit f486cf6
[legends] Fix corrupted data defined legend rendering in layout designer #36765 Commit 8d00ae8 No – too intrusive
Avoid some QGIS startup warnings non signalé Commit 013f682 N/A
Place 3d tab in vector properties at the correct position #35010 Commit ce9f5194 N/A
Fix 3d tab is not activated when reopening vector layer properties #35011 Commit 3c0ecbf N/A
[labeling] Fix incorrect label placement after moving an “unplaced” label non signalé Commit cbfb7f4 PR 36718 Commit 9189dec
Don’t block creation of new geopackages in vector save as dialog non signalé Commit 8ccd127 N/A
[browser] Refine refreshConnections method to avoid triggering a full refresh of ALL browser content #37007 Commit a9d6b04 No – too intrusive
[3d] When showing edges, data defined polygon height was not accounted for non signalé Commit e516231 N/A
Fixes for « Show all » labeling mode non signalé Commit 2b91bd0 N/A
[3d] Fix reprojection of features shows no features #34824 Commit 62bd026 N/A
[processing] Add metadata setting for file destination parameters to avoid file overwrite confirmation prompt #37011 Commit e81af2c N/A
Avoid incorrectly antialiasing rendering of certain objects (such as map labels) when not wanted #36964 Commit bab83844 No – too intrusive
Ensure that fields required by marker symbol backgrounds for labels are fetched when rendering #36944 Commit 8fb8e45 No – too intrusive
« Fix «  »zoom » » and «  »flash » » features buttons have no effect when opening filter mode in attribute form » #34506 Commit 6b2795 N/A
Avoid corrupted project thumbnail images in some circumstances non signalé Commit f404e6e N/A
Auto focus search box when opening « add layer to legend » dialog #36905 Commit 019e494 non critique
[processing] Set correct output layer type for Point to Layer algorithm #36941 Commit 7ee85cd N/A
« Limit scope of Ctrl+C shortcut for copy features to canvas and for python console to console widget » #27035 (many others too) Commit 873716c No – too intrusive
Remember layout designer window positions #36907 Commit 97d31d0 non critique
Fix crash when zooming in too far to labels #36346 Commit 3aa5e56 Commit a22635b
[processing] Allow parent layer to be specified for field mapping inputs in models #26493 Commit b8d4a39 No – too intrusive
Fix placement of message bar “clear all” menu arrow on hidpi screens non signalé Commit 8a9975b non critique
Always refresh plugin repositories when manually triggered by user #34351 Commit 98603b7 PR 36718 Commit 0fcf6dc
[3d] Expose 3d algorithms provider to Python #36661 Commit 1f835df No – too intrusive
[symbology] Don’t force rasterized output when exporting point pattern fills #16100 Commit 23396b7c No – too intrusive
[layouts] Don’t refresh the map canvas multiple times during atlas exports #30144 Commit 57519e9 non critique
[processing] Fix double-evaluation of warp output parameter #30095 Commit adeca2f  
Fix incorrect warning message when turning off atlas preview non signalé Commit 3b0af960 N/A
Speed up message bar operations when many messages are shown #29698 Commit 5dd29f0 No – too intrusive
Fix oriented minimum bounding box calculation is wrong in some cases #36632 Commit 97d0988 PR 36718 Commit 68c6a0e
Ensure symbol opacity is always ignored for selections #27859 Commit 4de6a53 PR 36718 Commit 99eb710
Fix random sort order of symbols in Symbol Export dialog #20572 Commit 987310f PR 36718 Commit bfa6058
Allow clearing heatmap weighting field #20256 Commit 3961fa2 PR 36718 Commit d2600d6
Flag SAGA “Merge Layers” algorithm as having known issues #36375 Commit f676c821 N/A
Workaround odd upstream Qt issue where a painter with a semi-transparent brush with no solid pattern incorrectly applies the brush opacity to the pen when exporting to printer devices #36580 Commit 38c8218 PR 36718 Commit a562b67
Improve plugin watchdog message and UX non signalé Commit 150b373 No – too intrusive
« [layouts] Warn when previewing an atlas and a feature with no geometry is encountered, when one or more maps are set to be driven by atlas feature » #36556 Commit 6ce84d2 No – too intrusive
Avoid proj “object is not a concatenated operation” warnings non signalé Commit 6baa209  
« Fix memory layers lose CRS definition if it does not have an authority associated with it » #36241 Commit e23a49a PR 36718 Commit c9350eb
Implement spatial index detection for OGR provider #30530 Commit f20801a PR 36718 Commit 536906e
Fix incorrect dialog title for raster layer properties #35510 Commit 2099261 PR 36718 Commit e809f48
Don’t try to identify CRSes created just for ellipsoid definitions non signalé Commit 15b318b No – too intrusive

Cette fonctionnalité a été financée par QGIS.ORG (grâce aux dons et adhésions de soutien)

Cette fonctionnalité a été développée par Nyall Dawson

Fonctionnalité : Correction de bugs par Denis Rouzaud

Bug Titre URL du ticket (le cas échéant) URL du commit (Github) Commit sur la 3.10 - backport (GitHub)
allow sorting attribute table by field not listed in the table #25671 PR #36236 N/A
fix layer tree dependencies (showinf symbols and main layer) non signalé PR #37000 N/A
fix Expression editor: syntax check fails if table is empty #37100 PR #37137 N/A
fix setting of feature in expression preview widget #37214 PR #37221 N/A
Freeze when showing attribute table of WFS layer #37224 pas encore corrigé N/A
Lookups in tables with more than 100 entries show wrong value in Relation Reference form parts #37266 PR #37280 PR #37286

Cette fonctionnalité a été financée par QGIS.ORG (grâce aux dons et adhésions de soutien)

Cette fonctionnalité a été développée par Denis Rouzaud

Feature: Bug fixes by Audun Ellertsen

Bug Titre URL du ticket (le cas échéant) URL du commit (Github) Commit sur la 3.10 - backport (GitHub)
SpatiaLite support for importing layers with binary fields #36705 PR #36744 N/A
PostGIS support for importing layers with binary fields #36705 PR #36708 PR #36720

Cette fonctionnalité a été financée par Kongsberg Digital

Cette fonctionnalité a été développée par Audun Ellertsen