Log met wijzigingen voor QGIS 3.14

image1

De volgende uitgave in het spoor van fantastische uitgaven van QGIS die we de afgelopen 18 jaar hebben ontwikkeld. Deze uitgave zit zo boordevol nieuwe mogelijkheden en verbeteringen, groot en klein, dat het moeilijk is waar te beginnen. Enkele van de kenmerkende mogelijkheden omvatten ondersteuning voor vectortegels, grote voordelen in ondersteuning voor MDAL mdal / mazen, eigen ondersteuning voor tijdbeheer in WMS-T, PG Raster, vectorproviders, en lagen met mazen. Gebruikers die zich richten op cartografie en digitaliseren zijn ook niet vergeten, met heel veel nieuwe opties voor u!

Dankwoord

We willen onze dank uitspreken aan alle ontwikkelaars schrijvers van documentatie, testers en alle andere mensen die vrijwillig hun tijd en inspanningen ter beschikking stellen (of mensen sponsoren om dat te kunnen doen). Vanuit de QGIS gemeenschap hopen we dat u van deze uitgave zult genieten! Als u tijd of geld wilt doneren of op een andere wijze betrokken wilt zijn in het opwaarderen van QGIS, kijk dan ook eens op QGIS.ORG en help een handje!

QGIS wordt ondersteund door donoren en dragende leden. Een huidige lijst van donoren die grote en kleine bijdragen hebben gegeven aan het project kan worden bekeken op onze lijst van donoren. Als u een dragend lid voor het project zou willen worden, bekijk dan onze pagina voor dragende leden voor de details. Sponsoren van QGIS helpt ons om fonds te verkrijgen voor onze regelmatige ontmoetingen van ontwikkelaars, de infrastructuur van het project te onderhouden en inspanningen voor het oplossen van problemen te financieren. Een volledige lijst van huidige sponsoren wordt hieronder weergegeven - een welgemeend Bedankt voor al onze sponsoren!

QGIS is gratis software en u bent niet verplicht om maar iets te betalen voor het gebruiken ervan - in feite willen we mensen, wijd en zijd verspreid, aanmoedigen om het te gebruiken, ongeacht uw financiële of sociale status - wij geloven dat het uitrusten van mensen met gereedschappen voor het maken van ruimtelijke beslissingen zal resulteren in een betere wereld voor de gehele mensheid.

Algemeen

Mogelijkheid: Nieuwe instellingen voor lettertypen voor annotaties van Decoratie

Annotaties voor het decoreren van het raster van het kaartvenster zijn nu volledig aan te passen, inclusief kleur van het lettertype, buffer, etc.

image8

Dit werd mogelijk gemaakt door iMHere Asia

Deze mogelijkheid werd ontwikkeld door Mathieu Pellerin

Tijdelijk

Mogelijkheid: Instellen van cumulatieve tijdsperiode in Tijdbeheer

Voegt een instelling toe aan Tijdbeheer om de tijdsperiode voor de animatie cumulatief in te stellen. Dit betekent dat alle frames voor de animatie dezelfde datum-tijd voor het begin hebben, maar verschillende datums en tijden voor het einde.

Dit is nuttig voor u als u accumulerende gegevens in uw visualisatie in Tijdbeheer wilt, in plaats van een ‘verplaatsend tijdvenster’ weer te geven over uw gegevens.

image2

Dit werd mogelijk gemaakt door Meteorological Service of Canada

Deze mogelijkheid werd ontwikkeld door Kartoza / Samweli Mwakisambwe

Mogelijkheid: Nieuwe modus “Alleen laag opnieuw tekenen” toegevoegd voor vectorlagen van Tijdbeheer

Indien ingesteld voor deze modus, zal de laag automatisch opnieuw worden getekend wanneer de tijdsperiode van Tijdbeheer wordt gewijzigd, maar er zal geen op tijd gebaseerd filteren worden toegepast op de objecten.

Deze configuratie is nuttig als de laag instellingen voor Symbologie heeft die variëren gebaseerd op de tijdsperiode. Wanneer het bijvoorbeeld tijdsafhankelijke expressies voor de renderer Regel-gebaseerd gebruikt of data-bepaalde expressies voor Symbologie.

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Mogelijkheid: Ondersteuning voor basisafhandeling van Tijdbeheer voor vectorlagen toegevoegd

Dit laat enkele basismogelijkheden voor het eigen Tijdbeheer voor vectorlagen zien:

  • Statisch tijdbereik voor de laag (om overeen te komen met mogelijkheden voor rasterlagen), dit stelt één enkele statische tijdsperiode in die van toepassing is voor de gehele laag. Alle objecten van de laag zullen worden weergegeven als de tijd van het kaartvenster de tijdsperiode van de laag overlapt
  • “Enkel veld met DateTime”: Maakt selecteren van één enkel; veld Date of DateTime uit de laag mogelijk. Objecten zullen worden weergegeven als de waarde van dit veld binnen de tijdsperiode van het kaartvenster ligt
  • “Afzonderlijke velden voor begin- en einddatum/-tijd”: Maakt het mogelijk velden voor begin- en einddatum/-tijd te selecteren uit de laag. Objecten zullen worden weergegeven als de berekende tijdsinterval uit deze velden de tijdsperiode van het kaartvenster overlapt

We zouden moeten overwegen dit in de toekomst uit te breiden, bijv. om modi toe te voegen voor “begintijd + vaste duur”, “begintijd + duur vanuit veld”, “begin- en eindtijd via expressies”, etc.

Enkele bekend beperkingen/inefficiënties:

  • Momenteel kunnen alleen velden Date/DateTime worden gebruikt. Dit is gedaan om de afhandeling van de indeling te vereenvoudigen en de noodzaak om rekening te houden met velden met tekenreeksen met andere indelingen voor DateTime te vermijden. In de toekomst zouden we het selecteren van velden met tekenreeksen mogelijk moeten maken, en gebruikers toestaan om een aangepaste tekenreeks voor de indeling DateTime in te voeren
  • Anders de de benadering met de plug-in Time Manager, berust de hier geboden benaderingvolledig op expressies van QGIS en verzoeken voor objectenom het filteren uit te voeren (Time Manager gebruikt tekenreeksen voor filteren van lagen en probeert een eigen syntaxis voor het SQL-filter in te stellen zodat het filteren op de achtergrond wordt uitgevoerd). Dit is met opzet, omdat het een universele benadering voor filteren verschaft, ongeacht de gebruikte provider (d.i. we hoeven geen rekening te houden met de verschillende syntaxis voor SQL, die door de verschillende providers zelf worden gebruikt). Het mooie van het compileren van expressies voor verzoeken voor objecten zou beteken dat de expressies van QGIS magisch worden omgezet naar eigen query’s op de achtergrond, MAAAAAAAAAAAR… omdat ondersteuning voor expressies van QGIS voor letterlijke DateTime ontbreekt, kunnen we momenteel alleen vertrouwen op de functie voor de expressie “to_datetime” en alles door middel van tekenreeksen af te dwingen. Geen van de compilers voor expressies handelt deze functie af, dus momenteel wordt *alle* filteren uitgevoerd aan de zijde van QGIS. We dienen functies toe te voegen voor het geoptimaliseerd maken van letterlijke DateTime en er dan voor zorgen dat de verschillende compilers deze letterlijken correct omzetten naar de syntaxis voor het filteren op de achtergrond om het mogelijk te maken dat al het werk voor het filteren wordt uitgevoerd aan de zijde van de database…

Dis is, momenteel, de uitvoering veel slechter met grote lagen, vergeleken met Time Manager (en de weergegeven set met objecten is kleiner, bijv. geen afhandeling voor interpolatie), maar het voordeel is dat we het eigen framewerk voor Tijdbeheer kunnen gebruiken en geanimeerde vectorlagen kunnen maken, naast lagen met mazen en rasterlagen!

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Mogelijkheid: Ondersteuning voor API van Tijdbeheer voor raster in Postgres

Integratie van mogelijkheden voor Tijdbeheer voor rasters in Postgres toegevoegd.

image3

image4

Dit werd mogelijk gemaakt door ARPA Piemonte

Deze mogelijkheid werd ontwikkeld door Alessandro Pasotti

Mogelijkheid: QGIS Projectinstellingen voor Tijdbeheer

Deze mogelijkheid voegt functionaliteit voor tijdsinstellingen voor het project toe.

U zult in staat zijn de tijdsperiode voor Tijdbeheer in te stellen, ofwel met handmatige invoer of door het uit de huidige projectlagen voor Tijdbeheer te berekenen. Het laatste kan worden uitgevoerd door te klikken op de verschafte knop “Uit lagen berekenen”.

Deze implementatie stelt het podium in voor het toevoegen van geanimeerde objecten voor lagen van Tijdbeheer in QGIS.

Hier is een voorbeeld voor het instellen van de tijdsperiode voor een project. image5

Eerdere discussies over ondersteuning voor Tijdbeheer in QGIS zijn hier en hier te vinden.

Dit werd mogelijk gemaakt door Meteorological Service of Canada

Deze mogelijkheid werd ontwikkeld door Kartoza / Samweli Mwakisambwe

Mogelijkheid: Ondersteuning voor beperkingen van Tijdbeheer in lagen van WMS-T

Deze mogelijkheid maakt het mogelijk om lagen WMS voor Tijdbeheer (WMS-T) binnen QGIS te beperken. U zult in staat zijn hede periode DateTime te beperken voor elke laag voor Tijdbeheer van providers van WMS-T.

Deze implementatie laat de gebruiker de vereiste periode DateTime op de laag te specificeren vanaf de tab Bron in het dialoogvenster Laageigenschappen.

Hieronder een voorbeeld van de werkstroom. image6

Opmerking: Voor directe punten in tijdperioden zal het specificeren van ene periode met een gelijke begin en eind DateTime resulteren in het gebruiken van het gespecificeerde punt DateTime en geen periode.

image7

Dit werd mogelijk gemaakt door Meteorological Service of Canada

Deze mogelijkheid werd ontwikkeld door Kartoza / Samweli Mwakisambwe

Mogelijkheid: API Tijdbeheer

Deze mogelijkheid verschaft een implementatie van de API voor ondersteuning van Tijdbeheer in QGIS.

U kunt de API voor Python vinden door te zoeken naar ‘Temporal’ in de documentatie voor Python (link).

Dit werd mogelijk gemaakt door Meteorological Service of Canada

Deze mogelijkheid werd ontwikkeld door Kartoza / Samweli Mwakisambwe

Kaartgereedschap

Mogelijkheid: Ondersteuning voor Gereedschap Identificeren in QGIS voor lagen met vectortegels.

Het gereedschap Identificeren is nu in staat attributen van objecten in vectortegels te inspecteren.

image9

Dit werd mogelijk gemaakt door Vele giften

Deze mogelijkheid werd ontwikkeld door Lutra Consulting (Martin Dobias)

Gebruikersinterface

Mogelijkheid: Attributentabellen als tabs openen

Als de optie “Nieuwe attributentabellen als vastgezette vensters openen” actief is, zullen nieuwe attributentabellen worden geopend als tabs, bovenop bestaande attributentabellen.

image13

Deze mogelijkheid werd ontwikkeld door Germán Carrillo

Symbologie

Mogelijkheid: Renderer voor contouren voor rasterlagen

Deze nieuwe renderer tekent contourlijnen die direct worden berekend uit de bron-rastwerband. Het is mogelijk de interval voor de contourlijnen en het te gebruiken symbool voor het tekenen in te stellen.

In aanvulling daarop is er ondersteuning voor “index contouren” - contourlijnen met hogere intervallen worden gewoonlijk getekend met een breder lijnsymbool.

Als we contourlijnen op rasterblokken voor de invoer maken met dezelfde grootte als onze rasterblokken voor de uitvoer, zullen de gemaakte lijnen teveel details bevatten. Deze details kunnen worden verminderd door de factor “Invoer verlagen” - dit zal een lagere resolutie van het bronraster vragen.

image14

Deze mogelijkheid werd ontwikkeld door Martin Dobias

Mogelijkheid: Eenheid percentage voor grootte symbologie markering rasterafbeelding en vulling raster toegevoegd.

Overeenkomstig het Feature Request voegt deze patch een nieuwe waarde in percentage (van de originele afbeeldingsgrootte) voor eenheden van de grootte voor lagen Markering rasterafbeelding en Vulling raster (suggestie van nirvn ).

Een laag bevat bijvoorbeeld rasterafbeeldingen van verscheidene grootten en verhoudingen:

image15 image16

Als we een bestaande waarde voor de eenheid van grootte voor de Markering rasterafbeelding gebruiken, zal de laag er zo uitzien (met een normale krokodil, maar met een grote giraffe):

image17

of zoals dit (met een normale giraffe, maar hele kleine krokodil):

image18

De nieuwe waarde percentage van de eenheid voor grootte is bedoeld om dit probleem op te lossen.

Beiode eenheidstesten “qgis_rasterfilltest” en “qgis_rastermarkertest” werden herschreven met een set van nieuwe controleafbeeldingen voor het testen van de voorgestelde waarden percentage van eenheden voor grootte.

Deze mogelijkheid werd ontwikkeld door beketata

Mogelijkheid: Data-bepaalde eigenschap voor familie/stijl lettertype voor markering lettertype toegevoegd

Data-bepaalde eigenschappen werden toegepast voor de familie van het lettertype voor markeringen van lettertypen en de nagelnieuwe eigenschappen voor de stijl van het lettertype. Dit kan handig zijn voor een aantal scenario’s, inclusief meertalige context waar een data-bepaalde eigenschap het dupliceren van gegevenssets kan voorkomen.

image19

Dit werd mogelijk gemaakt door iMHere Asia

Deze mogelijkheid werd ontwikkeld door Mathieu Pellerin

Mogelijkheid: Nieuwe instelling voor stijl van lettertype voor markeringen van lettertype

Met deze nagelnieuwe instelling, die eerder niet beschikbaar was, kunnen gebruikers en niet-standaard stijl van families van lettertypen selecteren.

image20

Dit werd mogelijk gemaakt door iMHere Asia

Deze mogelijkheid werd ontwikkeld door Mathieu Pellerin

Labelen

Mogelijkheid: Kleuren voor HTML in labels respecteren

Indien ingeschakeld zal deze optie de inhoud van labels als HTML behandelen, en KLEURGERELATEERDE opties voor opmaak van HTML voor de VOORGROND zullen in het gerenderde label worden gerespecteerd.

Opmerking: ALLEEN TAGS VOOR KLEUR IN HTML WORDEN GERESPECTEERD. Dit is GEEN bug, deze mogelijkheid is meer ontworpen als een “test van het water” met opmaak in HTML in labels, en overeenkomstig komen alleen opties voor de opmaak die niet de vorm van het lettertype wijzigen in aanmerking.

Aan de pluskant werkt het correct met ALLE andere instellingen voor labels, inclusief schaduwen, buffers, gebogen labels, etc!

Nu enkele leuke plaatjes:

image21

image22

Dit werd mogelijk gemaakt door geoProRegio AG

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Mogelijkheid: Automatisch plaatsen van labels buiten polygonen

Deze mogelijkheid maakt het mogelijk automatisch labels buiten objecten polygonen te plaatsen.

Dit wordt op een aantal manieren weergegeven:

  1. Een nieuwe modus voor plaatsing die labels voor polygonen voor de laag altijd buiten de objecten plaatst: image23 image24
  2. Bij het gebruiken van andere modi voor het plaatsen van polygonen, kan een nieuw keuzevak “Plaatsen labels buiten polygonen toestaan” worden geselecteerd om toe te staan dat labels buiten worden geplaatst, als het niet mogelijk is ze binnen de polygoon te plaatsen: image25 image26

Het keuzevak “Plaatsen labels buiten polygonen toestaan” mag data-bepaald zijn, wat het gebruikers instaat stelt om ofwel labels buiten toe te staan, labels buiten te voorkomen, of labels buiten te forceren, op een object-voor-objectbasis.

Het algoritme voor plaatsing is gebaseerd op een modificatie van Rylov & Reimer (2016) “A practical algorithm for the external annotation of area features”. Waar Rylov & Reimer een op een horizontale veeglijn gebaseerde benadering voor het selecteren van kandidaat labelpunten voorstellen, vond ik in de praktijk dat dit inferieure resultaten opleverde (en trager was) dan gewoon door de buitenste ring van de polygoon te gaan en kandidaat-punten te maken op regelmatige intervallen (speciaal voor nauwe, bijna horizontale polygonen).

Zoals weergegeven in de schermafdruk met eilanden hierboven, werkt de modus voor plaatsen buiten zoals verwacht met de meerregelige modus voor uitlijnen “Plaatsing van labels volgen”.

Dit werd mogelijk gemaakt door Zwitserse QGIS gebruikersgroep

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Mogelijkheid: Laag met vectortegels - deel 4 (labelen)

Doorgegaan met het werken aan de implementatie va lagen met vectortegels.

Dit voegt ondersteuning voor labelen voor lagen met vectortegels toe. Tot op heden werkt het alleen in qgis_core… Ondersteuning voor GUI zal het volgende zijn. Labelen gebruikt dezelfde concepten als het renderen van vectortegels: we hebben een lijst met stijlen voor labelen, elke gedefinieerd door zijn naam voor de sub-laag, type geometrie, filterexpressie, zoombereik, en natuurlijk de configuratie vor de stijl van het label (QgsPalLayerSettings).

Onthoud dat er een “kip-en-het-ei probleem” is met labelen: Voor vectortegels maken we QgsFields voor een sub-laag, gebaseerd op velden die de renderer en labelen aanvragen, maar met labelen was het onmogelijk om de aangevraagde velden op te halen als zij nog niet beschikbaar waren in de context van de expressie (ondanks enkele kleine aanvullingen aan QgsProperty, QgsPropertyCollection, QgsPalLayerSettings om in staat te zijn aangevraagde veldnamen op te halen door niet tegelijkertijd interne expressies voor t ebereiden).

image27

Een voorbeeld hoe bovenstaand labelen in te stellen in de console van 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)

Dit werd mogelijk gemaakt door Vele giften

Deze mogelijkheid werd ontwikkeld door Lutra Consulting (Martin Dobias)

Mogelijkheid: Beheer over ankerpunt voor tekstballon op label toegevoegd

Dit geeft gebruikers beheer over waar een tekstballon met de tekst van een label zou moeten worden samengevoegd (eerder had u alleen beheer over waar de tekstballon zou worden samengevoegd met de overeenkomende geometrie van het object).

Keuzes omvatten:

  • Dichtstbijzijnde punt (eerdere gedrag)
  • Zwaartepunt label
  • Vaste hoeken: Linksboven/rechtsboven/linksonder/rechtsonder/etc

Data-bepaald beheer over het anker voor het label is ook mogelijk.

Helpt enige lelijkheid van tekstballonnen op te lossen!

Eerder resultaat (modus Dichtsbijzijnde punt):

image28

Met nieuwe plaatsing “zwaartepunt”:

image29

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Mazen

Mogelijkheid: Alleen gespecificeerde groep van gegevensset gebruiken

Deze mogelijkheid stelt de gebruiker in staat de te gebruiken groepen van de gegevensset te kiezen. Dit kan worden gedaan in het dialoogvenster voor eigenschappen van de laag met mazen op de tab Bron.

Een nieuwe boomweergave geeft alle beschikbare groepen voor de gegevensset van de gegevensprovider weer. De groepen voor de gegevensset kunnen geselecteerd/gedeselecteerd en hernoemd worden.

Dit widget verschaft ook knoppen om extra groepen van gegevenssets te laden uit bestanden, om de boom uit te klappen/in te klappen, om alle items te selecteren/deselecteren en om de standaarden voor de provider te herstellen (voor nu nog alleen de originele naam).

Alleen de geselecteerde groep van de gegevensset zal worden weergegeven in de widget voor de actieve gegevensset in instellingen voor de renderer.

image30

Dit werd mogelijk gemaakt door Deltares

Deze mogelijkheid werd ontwikkeld door Lutra Consulting (Vincent Cloarec)

Mogelijkheid: Scalaire instellingen voor kleuren, afhankelijk van classificatie

Met deze mogelijkheid leest MDAL geclassificeerde scalaire waarden in de gegevensset. Wanneer waarden zijn geclassificeerd, worden standaard scalaire instellingen voor renderen ingesteld voor het contrast van het kleurverloop en worden labels ingesteld overeenkomstig de geclassificeerde waarden.

image31

Dit werd mogelijk gemaakt door Deltares

Deze mogelijkheid werd ontwikkeld door Lutra Consulting (Vincent Cloarec)

Mogelijkheid: Snappen aan elementen van mazen

Voegt een methode toe aan de API om aan elementen van mazen te snappen.

De methode geeft de positie van het gesnapte punt op het dichtstbijzijnde element van mazen terug.

  • Voor een punt is de gesnapte positie de positie van het punt
  • Voor een rand is de gesnapte positie het geprojecteerde punt op de rand, of de extremiteit van de rand indien buiten de rand
  • Voor een zijde is de gesnapte positie het zwaartepunt van de zijde

De teruggegeven positie is in kaartcoördinaten.

image32

Dit werd mogelijk gemaakt door Deltares

Deze mogelijkheid werd ontwikkeld door Lutra Consulting (Vincent Cloarec)

Mogelijkheid: 1D variëren van breedte/kleur van mazen

Deze mogelijkheid verschaft een nieuwe manier om 1D-mazen te renderen met dikten van randen die kunnen variëren met hun waarden. Dus nu kunnen breedte en kleur variëren, afhankelijk van de waarde op de randen of op punten.

De gebruiker kan de min/max-waarde en min/max-breedte definiëren om het renderen in te stellen.

Voor kleur kan de gebruiker een contrast voor het kleurverloop definiëren (net zoals voor 2D-mazen en raster).

Voor dit nieuwe renderen worden nieuwe algemene klassen geïntroduceerd, die buiten het framewerk voor mazen kunnen worden gebruikt.

image33

Dit werd mogelijk gemaakt door Deltares

Deze mogelijkheid werd ontwikkeld door Lutra Consulting (Vincent Cloarec)

Mogelijkheid: Ondersteuning voor meerdere lagen met mazen (vanaf MDAL 0.5.91)

In aanvulling op het bijwerken naar MDAL 0.5.91, staat deze mogelijkheid toe dat meerdere lagen met mazen worden geladen uit één bestand.

Het bestand wordt geparset en een dialoogvenster voor een sub-laag, dat dezelfde logica gebruikt als voor vector- of rasterlagen, wordt geopend.

image34

Dit werd mogelijk gemaakt door Deltares

Deze mogelijkheid werd ontwikkeld door Lutra Consulting (Vincent Cloarec)

Mogelijkheid: Laag met mazen verbinden met QGIS framewerk Tijdbeheer

image35

Afhandelen van tijd in een laag met mazen

De tijd in een laag met mazen wordt gedefinieerd door :

  • Een referentietijd die door de gegevens, het project of de gebruiker wordt verschaft
  • Elke gegevensset wordt geassocieerd met relatieve tijden
  • Tijdperiode wordt gedefinieerd door de eerste en de laatste tijd van alle gegevenssets
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)

De klasse QgsMeshDataprovidertemporalCapabilities slaat de door de gegevens verschafte referentietijd en alle relatieve tijden van de gegevensset op. Deze klasse is in staat een index voor de gegevensset uit een groep voor de gegevensset terug te geven en een relatieve tijd vanaf de referentietijd. De referentietijd (die anders mag zijn dan de referentietijd van de provider) en de absolute tijdperiode worden opgeslagen in de klasse QgsMeshTemporalProperties

De instellingen voor Tijdbeheer in de widget Eigenschappen zijn alleen de referentietijd en de tijdseenheid van de provider: image36

De standaard referentietijd van de laag wordt ingesteld door (gesorteerd op prioriteit):

  • Vanuit de gegevensprovider indien gedefinieerd in de gegevens
  • Vanuit het project indien gedefinieerd
  • Vanuit de huidige datum met tijd 00u00

De gebruiker kan het wijzigen als hij dat wil.

Principe voor renderen

De renderers 2D en 3D hebben toegang tot de index van de actieve gegevensset vanuit de laag waarvan hde tijdperiode is opgeslagen in de QgsContextRenderer en in de Qgs3DMapSettings : Relatieve tijd wordt berekend als het verschil tussen de tijdperiode van QgsContextRenderer en de referentietijd die is opgeslagen door QgsMeshTemporalProperties. De index voor de gegevensset komt uit de QgsMeshDataproviderTemporalCapabilities, die de relatieve tijd in kaart brengt met de index van de gegevensset.

De gegevens worden vanuit de provider gebracht met de index van de gegevensset.

Statische gegevensset

Er is ook de optie om een statische gegevensset in te stellen, dat is: om een gegevensset te kiezen die onafhankelijk zal worden gerenderd van QGIS Tijdbeheer. De gebruiker kan, om dat te doen, het keuzevak selecteren aan de onderzijde van de pagina voor Tijdbeheer van de widget Eigenschappen: image37 Voor nu, omdat het eenvoudiger was om te implementeren en het mogelijk te maken de gegevens direct te kiezen, kan de gebruiker onafhankelijk kiezen tussen scalaire gegevensset en vector gegevensset uit combinatievakken waarin de tijd voor elke gegevensset is geassocieerd (relatieve tijd voor gegevens zonder referentietijd). Indien vereist zou een unieke tijd kunnen worden geïmplementeerd, maar dat zou kunnen leiden tot inconsistente resultaten met niet-synchrone gegevenssets. De instellingen voor de statische gegevensset staan op de pagina Tijdbeheer, maar kunnen eenvoudig worden ingevoerd in de pagina Bron, indien gewenst.

Dit werd mogelijk gemaakt door Lutra Consulting

Deze mogelijkheid werd ontwikkeld door Lutra Consulting (Vincent Cloarec)

Mogelijkheid: Resamplen vanuit waarden voor punten naar waarden voor zijden

Resamplen is beschikbaar voor gegevenssets die zijn gedefinieerd op zijden, bijv. de waarden voor punten wordt berekend uit waarden op zijden.

Deze mogelijkheid implementeert resamplen vanuit waarden voor punten naar waarden op zijden met behulp van de methode Neighbor average.

De standaardmethode is ingesteld op “geen” voor resamplen vanuit punten naar zijden en op “neighbor average” voor resamplen van zijden naar punten. Dan wordt het standaard renderen altijd glad. image38

Deze mogelijkheid werd ontwikkeld door Lutra Consulting (Vincent Cloarec)

Mogelijkheid: Vector gegevensset met mazen kleuren met contrast voor kleurverloop

Deze mogelijkheid stelt de gebruiker in staat de vector gegevensset met mazen (pijl, stroomlijnen, sporen) te kleuren met contrast van het kleurverloop, afhankelijk van de grootte van de vector.

image39

image40

image41

Dit werd mogelijk gemaakt door Deltares

Deze mogelijkheid werd ontwikkeld door Lutra Consulting (Vincent Cloarec)

Mogelijkheid: Stijl opslaan voor laag met mazen

Deze mogelijkheid voegt de optie toe om de stijl voor een laag met mazen op te slaan in een bestand QML, zoals die worden gebruikt voor vector- en rasterlagen.

Deze mogelijkheid past ook de stijl voor het menu Eigenschappen van raster- en vectorlagen aan. image42

Dit werd mogelijk gemaakt door Artelia Group

Deze mogelijkheid werd ontwikkeld door Lutra Consulting (Vincent Cloarec)

Mogelijkheid: Renderer 1D-mazen

Bijgewerkt naar MDAL 0.5.90

Initiële implementatie van Support of 1D elements in Mesh Layers

1D-mazen bestaan uit punten en randen. Een rand verbindt twee punten en kan eraan toegewezen gegevens hebben (scalaire of vectors). Het netwerk voor 1D-mazen kan, bijvoorbeeld, worden gebruikt voor het modelleren van een stedelijk drainagesysteem.

Er zijn nieuwe opties om 1D-mazen (randen) weer te geven op de tab Mazen image43

Ook voor gegevens voor 1D-mazen (randen of punten) zijn er nieuwe opties op de tab Contouren

image44

Onthoud dat niet alle functionaliteiten, beschikbaar voor 2D-mazen, beschikbaar is, met name

  • Ondersteuning voor Mazen berekenen voor 1D-mazen
  • 3D-renderen van 1D-mazen
  • Identificeren en plotten in Crayfish (zal later, met het volgende PR, worden toegevoegd)

Sommige functies zijn niet nodig voor 1D-mazen, speciaal

  • Exporteren van contouren van mazen

Deze mogelijkheid werd ontwikkeld door Peter Petrik

Mogelijkheid: Mazen vereenvoudigen

Omdat een laag met mazen miljoenen driehoeken zou kunnen hebben, zou renderen heel traag kunnen zijn, speciaal als alle driehoeken worden weergegeven in de weergave, zelfs als driehoeken te klein zijn om te worden gezien.

Voor deze situaties verschaft deze mogelijkheid een optie om de mazen te vereenvoudigen. Vereenvoudiging leidt tot één of meer vereenvoudigde mazen die niveaus van detail vertegenwoordigen. Bij het renderen van de laag met mazen wordt het van toepassing zijnde niveau van detail gekozen om adequaat renderen te verschaffen, afhankelijk van de weergave.

Een nieuwe tab in de widget met eigenschappen voor de laag met mazen stelt de gebruiker in staat de instellingen te wijzigen :

  • De verkleiningsfactor wordt gebruikt om mazen te vereenvoudigen; het aantal driehoeken voor elk niveau van detail is bij benadering gelijk aan het aantal driehoeken van het vorige niveau van detail, gedeeld door de verkleiningsfactor
  • Maximale resolutie voor mazen: dit is de gemiddelde grootte (in pixels) van de driehoeken waarvan is toegestaan dat zij worden weergegeven; Als de gemiddelde grootte van de mazen kleiner is dan deze waarde, zullen mazen met een lager niveau van detail worden weergegeven, d.i. mazen met een gemiddelde grootte die net iets groter is dan de maximale resolutie voor mazen.

image45

Deze mogelijkheid maakt het mogelijk het renderen te versnellen, zoals weergegeven in deze tabellen (resultaten in milliseconden) : image46

Demo GIF Vóór: image47

Na: image48

Dit werd mogelijk gemaakt door BMT

Deze mogelijkheid werd ontwikkeld door Lutra Consulting (Vincent Cloarec)

3D-objecten

Mogelijkheid: Pijlen voor renderen van 3D gegevensset voor laag met mazen

Deze mogelijkheid voegt een optie toe voor het weergeven van pijlen op een 3D-entiteit gegevensset voor een laag met mazen, afhankelijk van een vector gegevensset.

De gebruikte gegevensset om pijlen te renderen is die, welke is gekozen voor het renderen van vectors bij 2D-renderen.

Op dezelfde manier worden de kleuren voor de pijlen gedefinieerd in de instellingen voor 2D-renderen voor de vector gegevensset.

In instellingen voor 3D kan de gebruiker de afstand voor de pijlen definiëren en of de grootte vast is of geschaald op grootte.

Deze instelling voor afstand definieert ook de maximale grootte van de pijlen, omdat pijlen niet mogen overlappen. image49

Deze mogelijkheid werd ontwikkeld door Lutra Consulting (Vincent Cloarec)

Expressies

Mogelijkheid: Nieuwe expressies

  • ascii
  • make_interval Maakt direct construeren van waarden voor intervallen uit waarden years/months/weeks/days/hours/minutes/second mogelijk, zonder eerst een weergave tekenreeks van de interval te moeten maken
  • maptip
  • layer_property('distance_units')
  • display_expression
  • eval_template
  • make_date
  • make_time
  • make_datetime
  • close_line
  • is_multipart
  • geometrie Z en M minimum en maximum
  • @frame_number
  • @frame_rate
  • @frame_duration
  • @map_start_time Begin van de tijdsperiode van de kaart (als een waarde datetime)
  • @map_end_time Einde van de tijdsperiode van de kaart (als een waarde datetime)
  • @map_interval: Duur van de tijdsperiode van de kaart (als een waarde interval)
  • @animation_start_time
  • @animation_end_time

Deze mogelijkheid werd ontwikkeld door Etienne Trimaille, Jan Caha, Julien Monticolo, Nyall Dawson

Mogelijkheid: Browser voor objecten voor voorbeeld in expressiebouwer

Dit voegt een browser voor objecten toe aan de expressiebouwer, zodat iemand door objecten kan bladeren om het resultaat van de expressie te zien image65

Een nieuw widget is toegevoegd: QgsFeaturePickerWidget. Voor dit moment is het een eenvoudig combinatievak (maar erft widget dus kunnen we later een knoop voor het selecteren van de kaart eraan toevoegen). Het gedraagt zich op dezelfde manier als die in de widget relatieverwijzing (een bewerkbaar combinatievak).

Het vertrouwt op hetzelfde basismodel (QgsFeatureFilterModel). Een nieuwe abstracte klasse QgsFeaturePickerModelBase hergroepeert de logica ervan en het nieuwe model is genaamd QgsFeaturePickerModel. In de basis gebruikt QgsFeaturePickerModel het object-ID om de objecten te identificeren, terwijl QgsFeatureFilterModel een lijst met attributen gebruikt (de vreemde sleutels van een relatie). Het ruimt het vorige model een beetje op, omdat dat nogal …vol was.

Als een opmerking terzijde, ik probeerde sjablonen te gebruiken voor QgsFeaturePickerModelBase, maar omdat sjablonen niet kunnen worden gemixt met Q_OBJECT, zouden alternatieven leiden tot minder leesbare code.

Testen zijn toegevoegd.

Gesponsord door de QGIS Zwitserse gebruikersgroep!

Deze mogelijkheid werd ontwikkeld door Denis Rouzaud

Mogelijkheid: Het is mogelijk aangepaste functies te verwijderen

Voegt een knop voor verwijderen toe aan de tab Functiebewerker in het dialoogvenster Expressiebouwer om het verwijderen van gebruikersfuncties uit QGIS mogelijk te maken, zonder naar de map voor het gebruikersprofiel te hoeven navigeren.

Deze mogelijkheid werd ontwikkeld door Alexander Bruy

Mogelijkheid: Bewerken, importeren en exporteren van expressies van gebruikers mogelijk gemaakt

Een nieuwe knop is toegevoegd die het bewerken van opgeslagen expressies mogelijk maakt. Die is alleen actief als een gebruikersexpressie is geselecteerd in de boom met expressies. Als erop wordt gedrukt, opent een venster dat het mogelijk maakt dat de momenteel geselecteerde gebruikersexpressie wordt bewerkt. Wijzigen van het label van de expressie maakt een kopie van de momenteel bestaande. Demo

Importeren/Exporteren

Een nieuwe knop met een menu is toegevoegd, die het mogelijk maakt gebruikersexpressies te importeren/exporteren naar/vanuit een bestand JSON. Klikken op een van de menu-items opent een dialoogvenster voor bestandsselectie voor de/het bron/doel van het bestand van JSON voor de expressies. In het geval van conflicten met het label, vraagt een aanvullend dialoogvenster hoe door te gaan - ofwel overschrijven of de huidige expressie overslaan. Importeren/Exporteren demo

Deze mogelijkheid werd ontwikkeld door Ivan Ivanov

Digitaliseren

Mogelijkheid: Toegewezen modus Kruisen/overlappen van geometrie voorkomen

Deze versie van QGIS komt met een nieuwe modusinstelling voor het vermijden van kruisen/overlappen van geometrie, bij het digitaliseren van objecten.

De drie beschikbare modi zijn:

Kruisen/overlappen toestaan


Kruisen/overlappen op actieve laag vermijden


Kruisen/overlappen op gebruikergedefinieerde lagenlijst vermijden


De lagenlijst voor de derde modus wordt door de gebruiker ingesteld via de widgets voor het configureren van geavanceerd snappen.

image66

Dit werd mogelijk gemaakt door OPENGIS.ch

Deze mogelijkheid werd ontwikkeld door Mathieu Pellerin

Mogelijkheid: Nieuwe modi voor snappen: Zwaartepunt en midden van een segment (middelpunt)

Deze mogelijkheid is gericht op het verbeteren van modi voor snappen in QGIS door dichter bij de ervaring van CAD-programma’s te komen.

Het voegt twee nieuwe modi toe. Snappen aan het midden van een geometrie (zwaartepunt) en het midden van een segment.

Verschillende modi voor snappen kunnen tegelijkertijd worden geselecteerd, om het selecteren van deze nieuwe modi toe te staan.

image67

De volgorde van voorkeur voor snappen is de volgende: - Hoekpunt, Kruising - Midden - Zwaartepunt - Rand - Gebied

image68

Gesponsored door: Qwat group / Ville de Lausanne ( @ponceta @dsavary ) / Oslandia en enige vrije tijd

Deze mogelijkheid werd ontwikkeld door lbartoletti

Mogelijkheid: Snappen aan het huidige te digitaliseren object

Snappen kan nu ook snappen aan het object dat momenteel wordt gedigitaliseerd. Deze optie wordt in-/uitgeschakeld door een nieuwe knop op de werkbalk Snappen.

Dit schakelt enkele leuke CAD-achtige mogelijkheden voor bewerken in, zoals het sluiten van objecten onder een hoek van 90° of precies uitlijnen van segmenten binnen een object. Het is bijzonder efficiënt als men gewend is aan het gebruiken van de sneltoets Alt+A om de hoek te vergrendelen.

image69

Dit werd mogelijk gemaakt door Kanton Solothurn en Land Vorarlberg

Deze mogelijkheid werd ontwikkeld door Olivier Dalang

Mogelijkheid: Traceren ondersteunt nu gebogen geometrieën

Het gereedschap Traceren maakt nu gebogen geometrieën bij het werken op een laag die gebogen geometrieën ondersteunt.

image70

De ondersteuning is nog experimenteel, dus moet deze mogelijkheid worden ingeschakeld in de opties voor digitaliseren.

Dit werd mogelijk gemaakt door ecoptima en Planteam

Deze mogelijkheid werd ontwikkeld door Olivier Dalang (OPENGIS.ch)

Formulieren en widgets

Mogelijkheid: Expressie-beheerde labels (aliassen)

Deze nieuwe mogelijkheid maakt het mogelijk dat labels in formulieren (aliassen) worden geëvalueerd in de context van het formulier.

image72

image73

Dit werd mogelijk gemaakt door ARPA Piemonte

Deze mogelijkheid werd ontwikkeld door Alessandro Pasotti

Mogelijkheid: Beschrijving toevoegen aan widget Waarde relatie

Voegt een optie toe voor het toevoegen van een beschrijving aan elke waarde in een widget Waarde relatie. De beschrijving zal zichtbaar zijn als helptip

Excuses voor de verschillende talen in de demonstratievideo.

image74

Deze mogelijkheid werd ontwikkeld door Matthias Kuhn

Mogelijkheid: Widget Nieuwe database tabelnaam

Een nieuw widget werd aan QGIS toegevoegd om een nieuwe tabel uit een bestaande verbinding naar een database te selecteren:

image75

Deze mogelijkheid werd ontwikkeld door Alessandro Pasotti

Mogelijkheid: Waarden huidige ouderformulier ophalen in kindformulieren

Deze mogelijkheid voegt de optie toe om huidige waarden uit het “oudert”-formulier in filterexpressies te gebruiken (voor nu alleen in widgets Waarde-relatie: te gebruiken in filters voor dieper zoeken).

Een nieuw bereik “parentForm” werd toegevoegd als ook een nieuwe set functies en variabelen om toegang te verkrijgen tot het ouderformulier binnen een ingebed kindformulier. De nieuwe functies en variabelen werden gemodelleerd op de bestaande “current_value”, “current_feature” etc.

De nieuwe functies en variabelen zijn ook beschikbaar als het ouderformulier is geopend in een nieuw (niet opgeslagen, niet gebufferd) object, wat het gemakkelijker maakt filters voor dieper zoeken te maken, gebaseerd op de waarden van de ouder, bij het toevoegen van kinderen uit een niet opgeslagen ouderformulier.

Nieuwe functies en variabelen

image77 image78 image79

Mogelijk gemaakt door: ARPA Piemonte

Dit werd mogelijk gemaakt door ARPA Piemonte

Deze mogelijkheid werd ontwikkeld door Alessandro Pasotti

Mogelijkheid: Widget Relatie: keuzevak toegevoegd om de knop voor bewerken van kinderen te verbergen

Dit is bijzonder nuttig voor ingebedde formulieren.

Mogelijk gemaakt door: ARPA Piemonte

image80

Dit werd mogelijk gemaakt door ARPA Piemonte

Deze mogelijkheid werd ontwikkeld door Alessandro Pasotti

Mogelijkheid: Widget Relatie forceert onderdrukken van pop-up

Voegt een optie toe aan de configuratie van de widget Relatie om het openen van pop-up in een formulier te onderdrukken, als nieuwe objecten worden toegevoegd in de context van een ingebed formulier.

Deze optie overschrijft de optie op het niveau van het formulier (wat nog steeds het gewenste gedrag zou kunnen zijn als het formulier wordt gebruikt als een zelfstandig formulier).

image81

Opmerking: het uiteindelijke label is Formulier verbergen bij toevoegen nieuw object forceren

Dit werd mogelijk gemaakt door ARPA Piemonte

Deze mogelijkheid werd ontwikkeld door Alessandro Pasotti

Legenda van laag

Mogelijkheid: Verplaats naar onderste toegevoegd aan contextmenu in weergave lagenboom

Verplaatsen van lagen in grote projecten werd al gemakkelijker gemaakt met Verplaats naar bovenste , maar men moest nog steeds handmatig basiskaarten verplaatsen naar de onderzijde van de lagenlijst, een bewerkelijke taak in grote lagenbomen. Deze mogelijkheid voegt een optie Verplaats naar onderste aan het contextmenu van de lagenboom dat op dezelfde manier werkt als Verplaats naar bovenste.

Deze mogelijkheid werd ontwikkeld door uclaros

Mogelijkheid: Knop Groep toevoegen laten acteren als Geselecteerde groeperen als geselecteerde lagen >= 2

Wanneer er meer dan één laag is geselecteerd en de gebruiker drukt op de knop Groep toevoegen, maak dan een nieuwe groep en plaats daar de geselecteerde lagen ook in! image82

Deze mogelijkheid werd ontwikkeld door uclaros

Mogelijkheid: Hernoemen van het huidige kaartthema toestaan

Dit voegt de optie toe voor het hernoemen van een kaartthema uit het keuzemenu voor de kaartthemas’.

image83

Deze mogelijkheid werd ontwikkeld door Harrissou Sant-anna

Mogelijkheid: ALLE geselecteerde lagen in-/uitschakelen met de knop “Spatie”

Schakelt de zichtbaarheid van de momenteel geselecteerde lagen of groepen met de spatiebalk: image84

Deze mogelijkheid werd ontwikkeld door Ivan Ivanov

Analyse-gereedschappen

Mogelijkheid: Netwerk loggen - meer functionaliteit

Voegt enkele nuttige gereedschappen toe aan de netwerklogger:

  • URL kopiëren
  • Verzoek als JSON kopiëren
  • Log naar bestand opslaan (na een belangrijke waarschuwing aan gebruikers dat het log gevoelige informatie zou kunnen bevatten en daarom als vertrouwelijk zou moeten worden behandeld)

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Mogelijkheid: Ingebouwd gereedschap voor loggen van netwerk

Dit gereedschap, dat beschikbaar is vanuit het nieuwe F12 paneel “Debugging/Development tools”, is een eigen bewerking van de plug-in Network logger van @rduivenvoorde.

Het geeft een lijst weer van lopende en voltooide netwerkverzoeken, naast heel veel nuttige details, zoals status van verzoek en antwoord, headers, fouten, SSL configuratiefouten, time-outs, status van de cache, etc.

Heeft ook heel veel nuttige mogelijkheden en om op te poetsen, zoals de mogelijkheid om verzoeken te filteren op sub-tekenreeksen van URL’s en status, en u kunt met rechts klikken op verzoeken om de URL in een browser te openen of ze te kopiëren als een opdracht cURL.

Waarom willen we dit als een eigen bewerking in plaats van als een plug-in? Wel:

  • Het is bijzonder nuttig, dus goed om out-of-the-box beschikbaar te hebben
  • Door het te verplaatsen naar C++ kunnen we het proces voor loggen veel eerder opstarten dan dat een plug-in daar de mogelijkheid voor krijgt. Dit maakt het mogelijk dat het log aanvullende informatie kan bevatten, zoals verzoeken die worden ingediend door andere plug-ins die optreden voordat de plug-in Network logger is geladen (ook andere ingebouwde verzoeken, bijv. nieuwsfeed)
  • Uitvoering is een doorlopende strijd geweest met de plug-in voor Python. Hoewel dit voor zover mogelijk een 1:1 port is als maar mogelijk is, zijn de problemen met de uitvoering op magische wijze opgelost. De klassen bevatten enkele bijzonder intensieve lijstbewerkingen, wat waarschijnlijk de oorzaak is van de povere uitvoering onder Python.

image85

Dit werd mogelijk gemaakt door Meteorological Service of Canada

Deze mogelijkheid werd ontwikkeld door Nyall Dawson (voor Kartoza)

Processing

Mogelijkheid: Collectie algoritmen voor maken van willekeurige rasters

Met deze mogelijkheid hebben we een grote collectie van algoritmen voor het maken van willekeurige rasters toegevoegd. De algoritmen zijn in staat willekeurige rasters uit te voeren die specifieke verdelingen voor willekeurige getallen volgen. De volgende verdelingen zijn beschikbaar:

  1. Willekeurige rasterlaag maken (binomiale verdeling)
  2. Willekeurige rasterlaag maken (exponentiële verdeling)
  3. Willekeurige rasterlaag maken (gamma verdeling)
  4. Willekeurige rasterlaag maken (negatieve binomiale verdeling)
  5. Willekeurige rasterlaag maken (normale verdeling)
  6. Willekeurige rasterlaag maken (poisson verdeling)
  7. Willekeurige rasterlaag maken (uniforme verdeling)

image86

Deze mogelijkheid werd ontwikkeld door Clemens Raffler

Feature: Laag vectortegel - deel 8 (schrijven in Processing)

Deze mogelijkheid voegt integratie voor Processing toe voor het schrijven van vectortegels. Het is slechts een verpakking rondom de bestaande klasse QgsVectorTileWriter.

Nieuwe algoritmen in de Toolbox van Processing:

image87

Parameters voor algoritme voor XYZ:

image88

Parameters voor algoritme voor MBTiles:

image89

Lijst met invoerlagen:

image90

Details Invoerlaag:

image91

Dit werd mogelijk gemaakt door QGIS gemeenschap

Deze mogelijkheid werd ontwikkeld door Lutra Consulting (Martin Dobias)

Mogelijkheid: Nieuw algoritme voor Grafische modellen maken voor het maken van voorwaardelijke aftakkingen

Dit algoritme stelt gebruikers in staat om meerdere voorwaarden in te stellen (via expressies van QGIS), die er voor zorgen dat de corresponderende tak van het grafische model wordt uitgevoerd of overgeslagen, afhankelijk van het resultaat van het evalueren van de expressie.

image92

Dit werd mogelijk gemaakt door Andreas Neumann

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Opnieuw ordenen invoer voor modellen toestaan

In plaats van het forceren van een quasi-willekeurige ordening van invoer voor modellen, geeft deze mogelijkheid een nieuwe optie “Invoer modellen opnieuw ordenen” in de ontwerper voor Grafische modellen, die gebruikers beheer geeft over de exacte volgorde van aan gebruikers weer te geven invoer voor hun model.

Geen onlogische volgorde meer, zoals een veldkeuze weergeven voordat de laag is gekozen waarop het is gebaseerd!

Gesponsord door NaturalGIS

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Mogelijkheid: Validatie model uitstellen

In plaats van te forceren dat alle kind-algoritmen onmiddellijk geldig zijn en dat alle parameters juist zijn ingevuld, stelt deze mogelijkheid het valideren van het model uit tot de feitelijke uitvoering of tot wanneer een nieuwe actie “Model valideren” wordt getriggerd.

Een veel voorkomende frustratie met de QGIS ontwerper voor Grafische modellen is dat het constant forceert dat modellen geldig moeten zijn, zelfs modellen waaraan nog wordt gewerkt. Dit betekent dat het onmogelijk is een component aan een model toe te voegen en slechts gedeeltelijk de instellingen te vullen — u dient alles van tevoren in te voeren. Als u zich halverwege realiseert dat u ergens anders in uw model een wijziging moet maken, is het onmogelijk om dat te doen zonder te annuleren en alle instellingen te verliezen die u al hebt geconfigureerd.

Deze wijziging ziet er op toe dat het valideren van het model wordt uitgesteld tot de feitelijke uitvoering. Modellen mogen tijdelijk ongeldig zijn (bijv. componenten voor het algoritme hebben die slechts gedeeltelijk geconfigureerd zijn). De ontbrekende vereiste waarden kunnen nu in een later stadium worden ingevuld, zonder bestaande instellingen te verliezen. Als een niet-geldig model wordt uitgevoerd, krijgt de gebruiker een waarschuwing met een beschrijving die hen informeert over de wijzigingen die zij moeten maken om de configuratie van het model te voltooien.

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Mogelijkheid: Ondersteuning toegevoegd voor verschillende typen rastergegevens in algoritme Constante rasterlaag maken

Met deze mogelijkheid hebben we een nieuwe gevorderde parameter OUTPUT_TYPE voor het algoritme Constante rasterlaag maken. Via deze parameter kunt u nu een gegevenstype voor de uitvoer specificeren voor uw constante rasterlagen.

  • Byte
  • Integer16
  • Unsigned Integer16
  • Integer32
  • Unsigned Integer32
  • Float32
  • Float64

image93

Deze mogelijkheid werd ontwikkeld door Clemens Raffler

Mogelijkheid: Algoritme Raster afronden

Met dit nieuwe algoritme voor Processing stellen we QGIS in staat Rasterwaarden af te ronden.

De belangrijkste functionaliteit van het algoritme is ofwel standaard afronden naar boven/dichtstbijjzijnde/naar beneden van floating point celwaarden of afronden naar machten van een door de gebruiker gespecificeerd basis n. Het algoritme kan worden gebruikt met rasters van alle typen (zelfs rasters byte/integer bij het afronden nar machten van n) en uitvoeren van hetzelfde gegevenstype raster. Een standaard floating point afronden van een integer raster zal het kopiëren en een waarschuwing geven.

Het voorbeeld geeft een uitvoerraster weer dat is afgerond naar veelvouden van 10

image94

Deze mogelijkheid werd ontwikkeld door Clemens Raffler

Feature: Allow copying/cut/paste of model components

This feature allows users to copy and paste model components, both within the same model and between different models

image95

Refs NRCan Contract#3000707093

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Allow appending processing results to existing layers

When appending results, users are given a field mapping panel choice to allow them to manually set how fields are mapped to the destination layer’s fields:

image96

Refs NRCan Contract#3000707093

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Allow creation of group boxes in models

Adds the following functions to the model designer:

  • The ability to customise the color of individual comments in a model
  • Allow creation of “Group Boxes” in models, which are a visual indicator of logically linked model components (e.g. ‘Data Preparation Steps’, ‘NDVI Calculation Steps’, … etc). Users can customise the color and title for group boxes.
  • Allow navigation direct to group boxes from the View menu, aiding navigation of complex models.

image97

Refs NRCan Contract#3000707093

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Processing: show input and output values for children after running model through designer

A picture explains this best! After running the algorithm through the designer, you now see the values calculated for the inputs and outputs for each child algorithm:

image98

This is very useful for debugging models – you can see a much clearer visual picture of the flow of values through the model.

Refs NRCan Contract#3000707093

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Add “Save Log to File” algorithm for models

This algorithm saves the contents of the execution log (right up to the point in the model at which the ‘save log’ algorithm executes) to a file.

It can be used to automatically store the debugging log when running models for later reference and transparency.

Refs NRCan Contract#3000707093

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Allow running algorithms directly on database (and other non-disk) sources without loading into projects first

This change allows users to directly browse to non disk-based layer sources for any processing feature source inputs. It allows these inputs to be taken direct from postgres, sql server, oracle, wfs, afs, etc layers directly without having to first load them into a project!

We take full advantage of the QGIS browser to enable this:

image99

Refs NRCan Contract#3000707093

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Expose per-feature-source advanced options for processing inputs

This feature exposes per-feature-source advanced options, such as:

  • The ability to limit the number of features read from the source. (Useful in model development, you can easily test run models using a small subset of an input layer)
  • The ability to override on a per-input basis the global processing option for how to handle invalid geometries. Now you can safely leave the default processing setting at the conservative “Stop algorithm execution when a geometry is invalid” setting while easily temporarily overriding this for one particular input!

image100

Refs NRCan Contract#3000707093

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Enable snapping to grid for models in designer

This update implements two “snapping” features in the Processing model designer:

  1. Users can enable a new “Enable Snapping” option from the view menu, which will cause all component moving or resizing operations to automatically snap to grids
  2. After selecting some components, users can select Edit -> Snap Selected Components to Grid to manually snap just those selected components.

Additionally, I’ve added a helpful “select all” action for quickly selecting all components in a model.

Refs NRCan Contract#3000707093

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Add “filter by geometry type” and “filter by layer type” algorithms to processing

This update adds two new algorithms to processing:

  • “Filter by geometry type”: This algorithm filters features by their geometry type. Incoming features will be directed to different outputs based on whether they have a point, line or polygon geometry. It allows for model creation which responds to different input layer geometry types by applying different logic depending on the input geometry type.
  • “Filter by layer type”: This algorithm allows conditional model branching based on an input layer type. For instance, it allows a model to adapt to the actual layer type of a generic “map layer” parameter input, and decide which branch of the model to run as a result.

It also adds in the required API to allow algorithms to “prune” model branches based on their calculated results. For example, a model which returns the new FlagPruneModelBranchesBasedOnAlgorithmResults flag will cause any remaining parts of the model which are dependent on the outputs of that algorithm to be entirely skipped IF the algorithm does not return that particular output. (This is a prerequisite component for a future generic “conditional branching by expression” algorithm, and also used by “filter by layer type” to control the model flow based on the input layer type)

Refs NRCan Contract#3000707093

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: “Remove Null Geometries” algorithm can also remove EMPTY geometries

Empty geometries do not contain coordinates. Thus, like null geometries, empty geometries are not spatial data in a strict sense. To make it easier for users to clean a vector layer, the Remove Null Gometries algorithm now has an “Also remove empty geometries” option.

image101

This feature was funded by SwissTierras Colombia

Deze mogelijkheid werd ontwikkeld door Germán Carrillo

Feature: Add multi-selection handling to model designer, interactive resizing

Adds:

  • The ability to select multiple items at once in the model designer
  • The ability to resize individual or multiple items
  • The ability to delete multiple selected items
  • Improved model designer “tool” interaction, following the layout designer approach (e.g. alt + space = zoom drag mode, and selection tools follow their counterparts in layouts so shift+selection adds to selection, ctrl+selection removes, etc)
  • Selected items can be moved by the cursor keys

Refs NRCan Contract#3000707093

Here’s how it looks in action (with a particular ugly looking test model I use!)

image102

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Add undo/redo support to model designer

Makes QGIS more forgiving for users!

Refs NRCan Contract#3000707093

Works just like you’d expect:

image103

Note that we save the whole model definition in the undo stack, not just the affected component changes.

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Remember parameter values between model designer runs

When designing a model, users typically will need to run the model many times as they tweak its structure.

This change causes the parameters used when running the model from the designer to be remembered and saved into the model, so that each time you run the model from the designer you don’t have to re-set all the input parameter values to the desired test ones.

Makes iterative model design SO much easier!

Sponsored by Alta Ehf

Also includes a partial port of the model designer dialog from Python to c++, because c++ >> Python.

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Comments in Processing Models

This allows users to create comments attached to model components (inputs, algorithms or outputs). Comments are shown linked to the associated component, and can be freely moved around the model.

image104

Funded by Fisel + König

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: New standalone console tool for running processing algorithms

This new qgis_process tool allows users to run processing algorithms (both built-in, and those provided by plugins) directly from the console.

Running:

  • qgis_process list will output a complete list of all available algorithms, grouped by provider.
  • qgis_process plugins lists available and activated plugins which advertise the hasProcessingProvider metadata option (only these plugins are loaded by the tool)
  • qgis_process help algid outputs the help and input descriptions for the specified algorithm, e.g. qgis_process help native:centroids

qgis_process run: runs an algorithm. Parameters are specified by a --param=value syntax. E.g.

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

of

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

While running an algorithm a text-based feedback bar is shown, and the operation can be cancelled via CTRL+C

Sponsored by the Swedish User Group

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: New parameter type for datetime (or date, or time) values

Adds a new parameter type QgsProcessingParameterDateTime for handling date/datetime/time values.

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Add algorithms for raising warnings and exceptions from models

These algorithms raise either a custom warning in the processing log OR raise an exception which causes the model execution to terminate.

An optional condition expression can be specified to control whether or not the warning/exception is raised, allowing logic like “if the output layer from another algorithm contains more than 10 features, then abort the model execution”.

Sponsored by Fisel + König

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Add Fill NoData cells algorithm

In the new QGIS version we introduce a new processing algorithm for filling NoData cells in a raster dataset with a constant numerical input.

The algorithm scans an input raster dataset for NoData cells and fills them with the user defined fill value. Doing so, the algorithm respects the data type of the input raster so that e.g. floating point numbers will be dealt with appropriately for an integer raster. The resulting dataset will not contain any NoData cells.

image105

Deze mogelijkheid werd ontwikkeld door Clemens Raffler

Feature: Various fixes for Processing

  • Finalize work on range parameters support in GRASS algorithms;
  • Fix broken r.series algorithm
  • Minor fixes to r.rescale and r.rescale.eq
  • Fix for rasterize tool
  • GRASS GIS tests cleanup

Deze mogelijkheid werd ontwikkeld door Alexander Bruy

Feature: Show “template layer” field constraints in the “Refactor Fields” algorithm interface

When you are migrating data, it is important to be aware of constraints on target (a.k.a. template) layers.

The “Refactor Fields” algorithm now highlights constraints, and even lets you know more about them via tool-tips.

image106

This feature was funded by SwissTierras Colombia

Deze mogelijkheid werd ontwikkeld door Germán Carrillo

Feature: New convert to curves algorithm

We added a new algorithm to convert segmentized geometries to curved geometries.

The algorithm considers successive points to represent a curve if they are evenly spaced and within a tolerance.

image107

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Opties voor toepassing en projecten

Feature: Add @layers, @layer_ids project scope variables

Add @layers, @layer_ids project scope variables which contain lists of map layers and map layers ids for all layers from the current project

This mimics the existing @map_layers, @map_layer_ids, but unlike the @map variants these return ALL project layers, not just those associated with the current context’s map settings.

Gesponsord door SLYR

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Gegevensproviders

Feature: Allow adding attributes in the New Scratch Layer dialog

Allows the user to add attributes directly in the New Scratch Layer dialog making it more consistent with other dialogs like New Shapefile/Geopackage. image108

It is still possible to create a scratch layer without any attributes by not adding any fields to the list.

Deze mogelijkheid werd ontwikkeld door Alexander Bruy

Feature: Allow creating geometryless DBF tables from the New Shapefile dialog

Allow creating “plain” DBF files without associated geometries from the New Shapefile dialog.

image109

Creating DBF tables can be useful in some cases and having to use third-party tools for this instead of doing it from within QGIS is inconvenient. This also makes the New Shapefile dialog more consistent with the New Geopackage dialog, which already allows “geometryless” tables to be created.

Deze mogelijkheid werd ontwikkeld door Alexander Bruy

Feature: Allow filtering WM(T)S list in source dialog

Add ability to filter between lists of WMS or WMTS from the source dialog

WMS image110

WMTS image111

Gesponsord door de QGIS Zwitserse gebruikersgroep

Deze mogelijkheid werd ontwikkeld door Denis Rouzaud

Feature: Add vector tiles to Datasource manager dialog and Layers menu

Adds a new tab to the Datasource Manager dialog allowing the user to manage/add vector tile connections, including import/export. Also adds a corresponding entry to Layers menu.

Deze mogelijkheid werd ontwikkeld door Alexander Bruy

Feature: Import/export for ArcGIS Map and FeatureServer connections

Add missed import/export functionality for ArcGIS MapServer and FeatureServer connections.

Deze mogelijkheid werd ontwikkeld door Alexander Bruy

Feature: Add XYZ tiles to Datasource manager dialog and Layers menu

Adds new tab to Datasource Manager dialog allowing to manage/add XYZ connections. Also add corresponding entry to Layers menu.

Deze mogelijkheid werd ontwikkeld door Alexander Bruy

Feature: Spatialite transaction group

Transactions implementation for the native SpatiaLite provider.

Dit werd mogelijk gemaakt door ARPA Piemonte

Deze mogelijkheid werd ontwikkeld door Alessandro Pasotti

Feature: Allowing saving outputs direct to more database formats (and other nice stuff)

This update allows users to save processing vector outputs directly to more database formats.

Previously outputs could only be written directly to postgres databases. With this change, this functionality has been made more flexible and now supports direct writing to any database provider which implements the connections API (currently postgres, geopackage, spatialite and sql server)

Ultimately this exposes the new ability to directly save outputs to SQL Server or Spatialite databases (alongside the previous GPKG+Postgres options which already existed)

(As soon as oracle, db2, … have the connections API implemented we’ll instantly gain direct write support for those too!)

We do this via a nice inline version of the new “new database table name” widget.

image112

Other nice stuff includes:

  • You can now drag and drop file or folders from explorer or the qgis browser to output parameters in order to easily overwrite these files (or save to the folder), matching the behavior possible with inputs
  • You can actually write scripts which output direct to ANY qgis data provider (including oracle and db2)… it’s just that these don’t get exposed in the UI because they don’t yet support the connections API

Refs NRCan Contract#3000707093

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Add dedicated parameter type for database connections

Allows selection from the registered database connections for a specific database provider type (the provider must implement the connections API).

Refs NRCan Contract#3000707093

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: PG: expose foreign tables

Expose foreign tables to the browser and data source select dialog.

Deze mogelijkheid werd ontwikkeld door Alessandro Pasotti

Feature: PG raster expose set filter to app

This should be the final change to the PG raster data provider and exposes the set filter options:

  • Filter can be set in the data source dialog (as for vector layers)
  • Filter can be set from the legend tree’s context menu (as for vector layers)
  • The renderer, the extent and the min/max stats are also updated when the filter changes
  • New tests for the new behavior

image113

Dit werd mogelijk gemaakt door ARPA Piemonte

Deze mogelijkheid werd ontwikkeld door Alessandro Pasotti

Feature: Postgres: save features into tables with generated fields

Allow updating/inserting features in PostgreSQL tables with generated fields. GENERATED columns is a feature introduced by PostgreSQL 12, which allows column values to be generated from other columns in the same table; this replaces the creation of triggers to, for instance, automatically populate and keep up-to-date a column of centroids or areas for the polygons in the main geometry column.

This feature was developed by José de Paula Rodrigues N. Assis

Feature: Date and DateTime field types support added to Spatialite and Delimited Text providers

The Spatialite and Delimited Text providers now support Date and DateTime field types.

Deze mogelijkheid werd ontwikkeld door Mathieu Pellerin

QGIS Server

Feature: Add QGIS_SERVER_IGNORE_BAD_LAYERS config option

Allows the overriding of the default behavior in the case of bad layers (which is to invalidate the whole project).

When set to TRUE, bad layers are skipped and the remainder of the project becomes available.

This feature was funded by Geoinformatikbüro Dassau GmbH

Deze mogelijkheid werd ontwikkeld door Alessandro Pasotti

Feature: Server project settings, add ‘expanded’ attribute

In addition to the ‘visible’ and ‘mutuallyExclusive’ attribute, this update adds ‘expanded’ to the GetProjectSettings response of the server. The update allows a web client to see which layer tree elements are expanded / collapsed and to then present them the same way in the web map layer list.

This feature was developed by mhugent

Mogelijkheid: Toegevoegd DXF server export parameters NO_MTEXT en FORCE_2D

QGIS server now supports the new parameters NO_MTEXT and FORCE_2D to control text and line symbology for generated DXF files.

Adds missing parameters to GetDxf request.

Deze mogelijkheid werd ontwikkeld door Matthias Kuhn

Feature: WMS project validator

The QGIS Server validator has been reviewed. This tool is useful when you want to publish a QGIS project using the WMS protocol.

For programmers, the validator is also now callable from PyQGIS, so plugins can now use it too.

This feature was funded by 3Liz

Deze mogelijkheid werd ontwikkeld door Etienne Trimaille

Feature: Webp

WebP is a modern image format that provides superior lossless and lossy compression for images on the web. WebP creates smaller, richer images that make the web faster.

WebP lossless images are 26% smaller in size compared to PNGs. WebP lossy images are 25-34% smaller than comparable JPEG images at equivalent SSIM quality index.

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

With webp QGIS server now supports a format that provides smaller file sizes for the same quality and even provides transparency.

This feature was funded by OPENGIS.ch

Deze mogelijkheid werd ontwikkeld door Matthias Kuhn (OPENGIS.ch)

Plugins

Feature: Allow plugins to register custom “Project Open” handlers

These allow plugins to extend the “Open Project” dialog by adding in support for new file filters, which appear in the formats drop down list alongside the existing “QGS Projects” entry.

Custom project open handlers then get first chance at loading project files.

This allows plugins to extend QGIS support by adding integrated support for opening projects from non QGS/QGZ formats, e.g. allowing users to open ArcGIS MXD documents or MapInfo WOR Workspaces direct from the project open dialog.

These non-native projects are also added to the recent projects list and welcome screen, giving them a truly first-class experience within QGIS.

Gesponsord door SLYR

image114

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Allow users to install stable or experimental plugins

This update improves the plugin manager by allowing users to choose between installing the stable or the experimental version of a plugin.

This makes it possible to have pre-releases of plugins in the repository for power-users to test, while still allowing them to switch back easily to stable versions, without having to untick the global enable experimental option.

This change makes no difference for users who haven’t checked the enable experimental option.

image115

This feature was funded by Swiss QGIS User Group

Deze mogelijkheid werd ontwikkeld door Olivier Dalang

Programmeerbaarheid

Feature: Support for adding dock widgets as tabs: addTabifyDockWidget()

Dock widgets are great for displaying complex interfaces that extend QGIS functionality.

Now, both core and plugin devs have the option to tabify their dock widgets on top of existing ones. They can even choose on top of which dock widget they want their own dock widget appear.

image116

This feature was funded by SwissTierras Colombia

Deze mogelijkheid werd ontwikkeld door Germán Carrillo

Feature: Port output parameter wrappers to new API

Ports the output parameter wrappers (sinks, vector, raster, file and folder destinations) to the new c++ API for dialog and modeler.

This allows a range of new possibilities, including:

  • Models with static outputs for child algorithms, e.g. always saving a child algorithm’s output to a geopackage or postgres layer
  • Models with expression based output values for child algorithms, e.g. generating an automatic file name based on today’s date and saving outputs to that file

image117

Refs NRCan Contract#3000707093

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Port last remaining input parameters to new API

This update ports the Raster Band input parameter and Multi Layer input parameter to the new C++ API.

Benefits include:

  • Expression based band/layer lists in models
  • Inline (non-blocking) lists for multi selection parameters (fields, bands, layer lists, enums)
  • Rearrangement of inputs for multi-layer parameters in models, to set specific layer orders

Refs NRCan Contract#3000707093

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Port Feature Source, Raster, Vector and Mesh Layer parameters to new API

It’s now possible to use expression-based layer sources in processing models.

Refs NRCan Contract#3000707093

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Vector tile layer - part 1

This is the initial work on vector tile layer support.

image118 (The red lines are not rendering artifacts, they are drawn intentionally to show tile borders.)

Overzicht

So far this only includes changes to the qgis_core library.

Main additions to the public API:

  • QgsVectorTileLayer - the main map layer class
  • QgsVectorTileRenderer - base class for renderer class implementations for vector tiles
  • QgsVectorTileBasicRenderer - default renderer implementation

New private classes (may be added to public API if needed):

  • QgsVectorTileLoader - handles fetching of tiles from network / mbtiles
  • QgsVectorTileMVTDecoder - handles decoding of raw tile data to features
  • QgsVectorTileLayerRenderer - takes care of overall rendering (fetch + decode + draw)
  • QgsVectorTileUtils - various useful functions

Some new classes that may be shared by vector and raster tiles:

  • QgsTileXYZ - position of a tile in tile matrix set (zoom level, column, row)
  • QgsTileRange - rectangular selection in a tile matrix (start/end column and row)
  • QgsTileMatrix - description of a tile matrix (map extent, zoom level, scale, number of rows/columns)

(also QgsTileMatrixSet to be added later when we support other tile matrix sets than just GoogleCRS84Quad)

Testing

You can load a vector tile layer from Python console, e.g.:

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)

It is also possible to load vector tiles from a local MBTiles file - for “type” use “mbtiles” and for “url” use a local path (e.g. “/home/martin/x.mbtiles”).

There is currently no support for labeling.

Dank u wel

Huge thanks to all funders who have contributed to the crowdfunding and made this possible - https://www.lutraconsulting.co.uk/blog/2020/04/02/vectortiles-donors

Dit werd mogelijk gemaakt door QGIS gemeenschap

This feature was developed by Lutra Consulting (Martin Dobias)

Feature: Port processing extent parameter to new api, many other improvements

This update ultimately ports the extent parameter to the new c++ api, but along the way it:

  • Refactors the existing gui widget “QgsExtentGroupBox” to move the guts out to “QgsExtentWidget” (allowing it to be used in places where a group box is inappropriate/looks bad). It also adds a new “condensed” mode for the widget, because the default appearance is very space heavy.
  • The new parameter widget utilises this common QgsExtentWidget, so that we remove all the duplicate code which was previously used by the old python wrapper
  • Allows drag and drop of project map layers from the layer tree to a QgsExtentWidget to auto-set the extent to match
  • Allows QgsExtentWidget to be optionally nullable
  • Allows QgsGeometry values to be set for extent parameter values. This is done to aid use of extent parameters with the “precalculated value” mode in models – you can now use all the expression geometry functions to calculate a geometry and the bounding box of this is used for the parameter value in the child algorithm

Refs NRCan Contract#3000707093

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Interface and API for unified development/debugging tools

Adds interface hooks to allow plugins (and c++) to register “development/debugging” tools

These tools appear in a new Development/Debugging Tools dock, and provide a unified handling and place for these tools in the UI.

The intention here is that specialised development/debugging tools will be moved to this common interface, e.g.

  • Network logger
  • First aid style Python local variables inspector
  • Startup time debugging tools
  • Layer load and rendering time debugging tools … ?

Here’s an example demo showing a “Python locals” dev tool:

image119

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Feature: Data type support for QgsProcessingParameterMapLayer

Allow the definition of accepted layer types for QgsProcessingParameterMapLayer. This is useful when an algorithm can work with different layer types (for example, points and rasters) and avoids duplication of the same algorithm with different inputs.

This is an API improvement and is not visible for the vast majority of users.

Deze mogelijkheid werd ontwikkeld door Alexander Bruy

Feature: Add processing parameter types for database schema and table name

Replaces the previous ad-hoc Python postgis widget wrappers with proper first class c++ dedicated parameters for schemas and tables, with wrappers built off the core connections api.

Refs NRCan Contract#3000707093

Deze mogelijkheid werd ontwikkeld door: Nyall Dawson

Belangrijke reparaties

Mogelijkheid: Reparaties van problemen door Alessandro Pasotti

Titel probleem URL issues.qgis.org (indien gerapporteerd) URL Commit (Github) 3.10 backport commit (GitHub)
Getfeatureinfo does not show relation reference items for QGIS Server #36549 Turned out to be a feature request N/B
OGR provider QgsOgrProvider::changeAttributeValues returns true on errors #36583 PR #36620 N/B
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 cannot reproduce N/B
“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/B
no value in the attribute form if value missing in the value map #32756 PR #36804 N/B
DB Manager does not show anymore query results #36205 PR #36823 N/B
DB Manager does not show anymore query results #36205 PR #36831 N/B
GPKG browser drag&drop not working niet gerapporteerd PR #36972 PR #37159
it is not possible to save a project in the geopackage #36832 PR #36980 N/B
It is possible to store text into a numeric field, while it shouldn’t be, using the Date/Time edit widget #36715 #36715 N/B
Feature creation very slow when using joins #36167 PR #36866, PR #36963 N/B
QGIS Server: WFS Request does not use SrsName on the geometry #36398 PR #36926, PR #37071 not critical
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/B
PyQgis: OriginJoin fields arte not present into QgsLayerVector QgsFields container for GeoPackage layers #36977 not reproducible N/B
Joined tables cannot be edited even if the “editable join layer” option is checked #36934 not reproducible/in progress N/B
Removal of unused ‘allowMethod’ from qgisservice/qgisserverapi #36163 PR #36997 N/B
Omogenize window title #35761 PR #36998 N/B
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 zal niet gerepareerd worden N/B
Postgis Timestamps from query in DB Manager displayed as `PyQT5.QTCore.QDateTime(2020, 3, 17 #35140 PR #37042 N/B
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 zal niet gerepareerd worden N/B
Using “Add feature” to create feature and child feature with transaction group causes foreign key error #37222 PR #37249 not critical
Vectorlayer from spatialite missing features and inconsistent feature count #29264 PR #37277 NOG TE DOEN

Deze mogelijkheid werd mogelijk gemaakt door QGIS.ORG (door donoren en dragende leden)

Deze mogelijkheid werd ontwikkeld door Alessandro Pasotti

Mogelijkheid: Reparaties van problemen door Loïc Bartoletti

Titel probleem URL issues.qgis.org (indien gerapporteerd) URL Commit (Github) 3.10 backport commit (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/B PR #36513 N/B
Fix the absence of words in the advanced configuration widget PR #35643#issuecomment-610215386 PR #36511 N/B
Fix interpolation on split geometry PR #36514 #33489 N/B

Deze mogelijkheid werd mogelijk gemaakt door QGIS.ORG (door donoren en dragende leden)

Deze mogelijkheid werd ontwikkeld door Loïc Bartoletti

Mogelijkheid: Reparaties van problemen door Even Rouault

Titel probleem URL issues.qgis.org (indien gerapporteerd) URL Commit (Github) 3.10 backport commit (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 cannot reproduce N/B
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/B
WFS Transaction operation using GetCapabilities URI #34307 PR #36746 N/B
QGis 3.10.2 crashes when displaying two PostGIS raster layers #34456
N/B
QGIS 3.4.10 crashes - 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/B
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

Deze mogelijkheid werd mogelijk gemaakt door QGIS.ORG (door donoren en dragende leden)

Deze mogelijkheid werd ontwikkeld door Even Rouault

Mogelijkheid: Reparaties van problemen door Paul Blottiere

Titel probleem URL issues.qgis.org (indien gerapporteerd) URL Commit (Github) 3.10 backport commit (GitHub)
Fix segfault when adding a layer Mailing list PR #36910 N/B
Fix signal connection Unreported issue PR #35836 N/B
Update the API to export a legend in JSON Unreported binding issue PR #36370 N/B
Core dump if vector tile layer (file) becomes unavailable #36821 cannot reproduce N/B
Crash on project open when mapcanvas extents = nan #35899 cannot reproduce N/B
Using some functions in raster calulator crashes QGIS #35583 PR #37273 N/B
Auxiliary storage not usable in non editable layer #30376 Already fixed. Closed. N/B
Fix compilation with GCC 10, Qt/PyQt 5.15.0 and SIP 4.19.23 #37072 PR #37116 PR #37250

Deze mogelijkheid werd mogelijk gemaakt door QGIS.ORG (door donoren en dragende leden)

Deze mogelijkheid werd ontwikkeld door Paul Blottiere

Mogelijkheid: Reparaties van problemen door Julien Cabieces

Titel probleem URL issues.qgis.org (indien gerapporteerd) URL Commit (Github) 3.10 backport commit (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/B
Cannot change labels of raster symbology classes #36172 PR #36376 PR #36533
Crash when layer not available #33300 Cannot reproduce N/B
Select by expression returns erroneous results with integer field division for shapefiles #35449 PR #2531 N/B
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 Cannot reproduce N/B
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  

Deze mogelijkheid werd mogelijk gemaakt door QGIS.ORG (door donoren en dragende leden)

Deze mogelijkheid werd ontwikkeld door Julien Cabieces

Mogelijkheid: Reparaties van problemen door Bertrand Rix

Titel probleem URL issues.qgis.org (indien gerapporteerd) URL Commit (Github) 3.10 backport commit (GitHub)
Vertex tool override global snapping parameters #36229 PR #36231 N/B
QGIS crashes with QgsGeometry method on empty collection #36142 PR #36351 N/B
Selective masking: phantom lines on dark background #34650 PR #36697 N/B
Selective masking: issue with mask opacity #34947 PR #36697 N/B

Deze mogelijkheid werd mogelijk gemaakt door QGIS.ORG (door donoren en dragende leden)

Deze mogelijkheid werd ontwikkeld door Bertrand Rix

Mogelijkheid: Reparaties van problemen door Sebastien Peillet

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

Deze mogelijkheid werd mogelijk gemaakt door QGIS.ORG (door donoren en dragende leden)

Deze mogelijkheid werd ontwikkeld door Sebastien Peillet

Mogelijkheid: Reparaties van problemen door Alexander Bruy

Titel probleem URL issues.qgis.org (indien gerapporteerd) URL Commit (Github) 3.10 backport commit (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 niet gerapporteerd PR #36618 PR #36684
Fix GRASS r.tileset algorithm niet gerapporteerd 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 not critical
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 not critical
Attributes shift in the Service area algorithm results niet gerapporteerd PR #37074, PR #37097 N/B
Processing testing framework does not apply rounding to values casted to numbers niet gerapporteerd PR #37234 N/B

Deze mogelijkheid werd mogelijk gemaakt door QGIS.ORG (door donoren en dragende leden)

Deze mogelijkheid werd ontwikkeld door Alexander Bruy

Mogelijkheid: Reparaties van problemen door Nyall Dawson

Titel probleem URL issues.qgis.org (indien gerapporteerd) URL Commit (Github) 3.10 backport commit (GitHub)
Fix leak in mesh 3d renderer niet gerapporteerd Commit 4b5a63d N/B
Fix hang when rendering symbol previews using Meters in Map Unit sizes #28690 Commit 7c6286f No – too intrusive
Fix font in CSS code editor niet gerapporteerd Commit 63cb42c not critical
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/B
Fix all Qt 5.14 deprecation warnings niet gerapporteerd 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/B
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 niet gerapporteerd Commit 74400c7 Nee
Fix cross references in PyQGIS docs niet gerapporteerd Commit 81a9db9 Nee
[layouts] Fix attribute table sort order combined with feature filter results in empty tables #36341 Commit 24897ab N/B
Fix callout rendering to rotated labels #36681 Commit 2bb4aad N/B
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 niet gerapporteerd Commit 84ec481 N/B
[processing] Fix manual entry of extent values in widget #36787 Commit ccc34c7 N/B
[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/B
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 niet gerapporteerd Commit 013f682 N/B
Place 3d tab in vector properties at the correct position #35010 Commit ce9f5194 N/B
Fix 3d tab is not activated when reopening vector layer properties #35011 Commit 3c0ecbf N/B
[labeling] Fix incorrect label placement after moving an ‘unplaced’ label niet gerapporteerd Commit cbfb7f4 PR 36718 Commit 9189dec
Don’t block creation of new geopackages in vector save as dialog niet gerapporteerd Commit 8ccd127 N/B
[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 niet gerapporteerd Commit e516231 N/B
Fixes for “Show all” labeling mode niet gerapporteerd Commit 2b91bd0 N/B
[3d] Fix reprojection of features shows no features #34824 Commit 62bd026 N/B
[processing] Add metadata setting for file destination parameters to avoid file overwrite confirmation prompt #37011 Commit e81af2c N/B
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/B
Avoid corrupted project thumbnail images in some circumstances niet gerapporteerd Commit f404e6e N/B
Auto focus search box when opening “add layer to legend” dialog #36905 Commit 019e494 not critical
[processing] Set correct output layer type for Point to Layer algorithm #36941 Commit 7ee85cd N/B
“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 not critical
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 niet gerapporteerd Commit 8a9975b not critical
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 not critical
[processing] Fix double-evaluation of warp output parameter #30095 Commit adeca2f  
Fix incorrect warning message when turning off atlas preview niet gerapporteerd Commit 3b0af960 N/B
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/B
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 niet gerapporteerd 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 niet gerapporteerd 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 niet gerapporteerd Commit 15b318b No – too intrusive

Deze mogelijkheid werd mogelijk gemaakt door QGIS.ORG (door donoren en dragende leden)

Deze mogelijkheid werd ontwikkeld door Nyall Dawson

Mogelijkheid: Reparaties van problemen door Denis Rouzaud

Titel probleem URL issues.qgis.org (indien gerapporteerd) URL Commit (Github) 3.10 backport commit (GitHub)
allow sorting attribute table by field not listed in the table #25671 PR #36236 N/B
fix layer tree dependencies (showinf symbols and main layer) niet gerapporteerd PR #37000 N/B
fix Expression editor: syntax check fails if table is empty #37100 PR #37137 N/B
fix setting of feature in expression preview widget #37214 PR #37221 N/B
Freeze when showing attribute table of WFS layer #37224 not yet fixed N/B
Lookups in tables with more than 100 entries show wrong value in Relation Reference form parts #37266 PR #37280 PR #37286

Deze mogelijkheid werd mogelijk gemaakt door QGIS.ORG (door donoren en dragende leden)

Deze mogelijkheid werd ontwikkeld door Denis Rouzaud

Feature: Bug fixes by Audun Ellertsen

Titel probleem URL issues.qgis.org (indien gerapporteerd) URL Commit (Github) 3.10 backport commit (GitHub)
SpatiaLite support for importing layers with binary fields #36705 PR #36744 N/B
PostGIS support for importing layers with binary fields #36705 PR #36708 PR #36720

This feature was funded by Kongsberg Digital

This feature was developed by Audun Ellertsen