17.12. Bereiken definiëren

Notitie

In deze les zullen we zien hoe we bereiken definiëren, die bij sommige algoritmes nodig zijn, in het bijzonder voor rasters.

Sommige algoritmes vereisen een bereik om het gebied te definiëren dat moet worden bedekt door de analyse die zij uitvoeren, en gewoonlijk ook om het bereik van de resulterende laag te definiëren.

Wanneer een bereik wordt vereist, kan het handmatig gedefinieerd worden door de vier waarden die het definieert in te voeren (min X, min Y, max X, max Y), maar er zijn ook meer praktische en interessantere manieren om dat te doen. We zullen ze allemaal zien in deze les.

Laten we eerst een algoritme openen dat vereist dat een bereik wordt gedefinieerd. Open het algoritme Rasterize, wat een rasterlaag uit een vectorlaag maakt.

../../../_images/rasterize1.png

Alle parameters, met uitzondering van de laatste twee, worden gebruikt om te definiëren welke laag moet worden omgezet naar een raster, en configureren hoe het proces van het omzetten naar raster zou moeten werken. De twee laatste parameters, aan de andere kant, definiëren de karakteristieken voor de uitvoerlaag. Dat betekent dat zij het gebied definiëren dat wordt bedekt (wat niet noodzakelijkerwijze hetzelfde gebied is als dat wat wordt bedekt door de invoerlaag), en de resolutie/celgrootte (die niet kan worden afgeleid vanuit de vectorlaag, omdat vectorlagen geen celgrootten hebben).

Het eerste dat u kunt doen is de 4 waarden voor de definitie, zoals hierboven besproken, in te typen, gescheiden door komma’s.

../../../_images/type.png

Dat behoeft geen nadere extra uitleg. Hoewel dit de meest flexibele optie is, is het in sommige gevallen ook minder praktisch, en dat is waarom ander opties werden geïmplementeerd. U moet op de knop aan de rechterkant van het tekstvak voor het bereik klikken om daar toegang toe te krijgen.

../../../_images/menu1.png

Laten we eens kijken wat elk ervan doet.

De eerste optie is Use layer/canvas extent, wat het dialoogvenster voor selectie zal weergeven dat hieronder staat.

../../../_images/layer.png

Hier kunt u het bereik voor het kaartvenster selecteren (het bereik dat wordt bedekt door de huidige zoom), of het bereik van elk van de beschikbare lagen. Selecteer het en klik op OK, en het tekstvak zal automatisch worden gevuld met de overeenkomende waarden.

De tweede optie is Select extent on canvas. In dit geval verdwijnt het dialoogvenster van het algoritme en kunt u in het kaartvenster van QGIS klikken en slepen om het gewenste bereik te definiëren.

../../../_images/extent_drag.png

Als u de muisknop weer loslaat zal het dialoogvenster weer verschijnen en zal het tekstvak al de waarden bevatten die overeenkomen met het gedefinieerde bereik.

De laatste optie is Use min covering extent from input layers, wat de standaard optie is. Dit zal de minimale bedekte bereik berekenen van alle lagen die gebruikt zullen worden om het algoritme uit te voeren, en er is geen reden om enige waarde in het tekstvak in te voeren. In het geval van één enkele invoerlaag, zoals in het algoritme dat we uitvoeren, kan hetzelfde bereik worden verkregen door diezelfde invoerlaag te selecteren in Use layer/canvas extent die we al eerder zagen. Echter, wanneer er verscheidene invoerlagen zijn, correspondeert het minimale bedekte bereik niet met enig bereik van de invoerlaag, omdat het uit alle tezamen wordt berekend.

We zullen deze laatste methode gebruiken om ons algoritme voor het omzetten naar raster uit te voeren.

Vul het dialoogvenster voor de parameters zoals hieronder weergegeven en druk op OK.

../../../_images/parameters.png

Notitie

In dit geval is het beter een Integer (1 byte) te gebruiken in plaats van een Floating point (4 byte), omdat de NAME een integer is met de maximale waarde=64. Dit zal resulteren in een kleinere bestandsgrootte en snellere berekeningen.

U zult een rasterlaag verkrijgen die exact het gebied bedekt dat wordt bedekt door de originele vectorlaag.

../../../_images/result.png

In sommige gevallen zou de laatste optie, Use min covering extent from input layers, niet beschikbaar kunnen zijn. Dit zal gebeuren bij die algoritmes die geen invoerlagen hebben, maar slechts parameters van andere typen. In dat geval zult u de waarde handmatig moeten invoeren of een van de andere opties gebruiken.

Onthoud dat, wanneer een selectie bestaat, het bereik van de laag dat van de gehele verzameling objecten is, en de selectie wordt niet gebruikt voor de berekening van het bereik, zelfs hoewel het rasteriseren werd uitgevoerd op alleen de geselecteerde items. In dat geval wilt u misschien een nieuwe laag maken van de selectie, en die dan gebruiken als invoer.