17.4. Een rapport maken

Dit gedeelte helpt u een rapport in te stellen in QGIS.

17.4.1. Wat is het?

Per definitie is een GIS-rapport een document dat informatie bevat die is georganiseerd op een vertellende manier en kaarten, tekst afbeeldingen, tabellen etc. bevat. Een rapport kan worden voorbereid op ad hoc basis, periodiek, terugkerend, regelmatig, of indien vereist. Rapporten kunnen verwijzen naar specifieke perioden, gebeurtenissen, incidenten, onderwerpen of locaties.

In QGIS is een Rapport een uitbreiding van een Lay-out.

Rapporten stellen gebruikers in staat hun projecten voor GIS uit te voeren op een eenvoudige, snelle en gestructureerde manier.

Een rapport kan worden gemaakt met Project ▶ Nieuw rapport of in Project ▶ Lay-out beheren.

Notitie

De kaarten in rapporten van QGIS gedragen zich op dezelfde manier als kaarten in afdruklay-outs en atlassen. We zullen ons concentreren op de specifieken van rapporten voor QGIS. Voor details voor het afhandelen van kaarten, bekijk het gedeelte over afdruklay-outs en atlassen.

17.4.2. Beginnen

In het dialoogvenster Lay-out beheren kan een rapport worden gemaakt met Nieuw uit sjabloon door de keuze-optie Leeg rapport te selecteren en te drukken op de knop Maken….

Voor dit voorbeeld gebruiken we enkele administratieve grenzen, bevolkte plaatsen, havens en vliegvelden uit de gegevensset van Natural Earth (1:10M).

../../../_images/project-1.png

Met de opdracht Project ▶ Nieuw rapport maken we een nieuw blanco rapport. Initieel is er niet veel om naar te kijken – het dialoogvenster dat wordt weergegeven ziet er bijna net zo uit als de ontwerper voor afdruklay-outs, met uitzondering van het nieuwe paneel Rapport beheren aan de linkerkant:

../../../_images/report-2.png

17.4.3. Werkruimte lay-out Rapport

Rapporten van QGIS kunnen bestaan uit meerdere, geneste gedeelten. In ons nieuwe blanco rapport hebben we initieel alleen het hoofdgedeelte van het rapport. De enige aanwezige opties voor dit gedeelte van het rapport zijn Kop rapport opnemen of Voettekst rapport opnemen. Als we deze opties inschakelen, zal een kop worden opgenomen in de allereerste pagina(‘s) (individuele gedeelten van rapporten kunnen uit meerdere pagina’s bestaan indien gewenst) in het rapport, en de voettekst zal op de laatste pagina(‘s) staan. Schakel de kop in (Kop rapport opnemen), en druk dan op de knop Bewerken ernaast:

../../../_images/report_header.png

Als resultaat gebeuren er een aantal dingen. Ten eerste wordt nu een potlood voor bewerken weergegeven naast Rapport in Rapport beheren, wat aangeeft dat dat gedeelte van het rapport momenteel wordt bewerkt in de ontwerper. We zien ook dat een nieuwe blanco pagina wordt weergegeven in de ontwerper zelf, met de kleine titel Kop rapport. De pagina heeft standaard de oriëntatie liggend, maar dat (en andere eigenschappen van de pagina) kunnen worden gewijzigd door met rechts te klikken op de pagina en Pagina-eigenschappen te kiezen. Dit zal de tab Item-eigenschappen voor de pagina openen, en kunnen Grootte, Breedte, Hoogte, en meer worden gespecificeerd voor de pagina.

In rapporten van QGIS is elke component van het rapport opgemaakt uit individuele lay-outs. Zij kunnen worden gemaakt en aangepast met exact dezelfde gereedschappen als die, welke beschikbaar zijn voor standaard afdruklay-outs – dus u kunt elke gewenste combinatie van labels, afbeeldingen, kaarten, tabellen, etc. gebruiken. Laten we enkele items toevoegen aan de kop van ons rapport om het te demonstreren:

../../../_images/header.png

We zullen ook een eenvoudige voettekst voor het rapport maken, door de optie Voettekst rapport opnemen te selecteren en te drukken op Bewerken.

../../../_images/footer.png

Laten we, voordat we verder gaan, dit rapport exporteren en zien wat we krijgen. Exporteren wordt gedaan vanuit het menu Rapport – in dit geval selecteren we Rapport als PDF exporteren om het gehele rapport te renderen als een PDF-bestand. Hier is het niet-zo-indrukwekkende resultaat – een PDF met twee pagina’s, bestaande uit onze kop- en voettekst:

../../../_images/headerfooter.png

Laten we de dingen eens wat interessanter maken. Door te drukken op de knop signPlus Gedeelte toevoegen in Rapport beheren, krijgen we de keuze om nieuwe gedeelten toe te voegen aan ons rapport.

../../../_images/add_section.png

Er zijn twee opties: Statisch lay-outgedeelte en Gedeelte Veld groeperen.

Het Statisch lay-outgedeelte toevoegen is een enkele, statische tekstlay-out. Dit kan worden gebruikt om statische lay-outs halverwege een rapport in te bedden.

Het Gedeelte Veld groeperen herhaalt zijn blok lay-out voor elk object in een laag. De objecten worden gesorteerd op het geselecteerde object voor groeperen (met een optie voor oplopend/aflopend sorteren). Als een Gedeelte Veld groeperen kind-gedeelten heeft (bijv. een ander Gedeelte Veld groeperen met een ander veld) dan zullen alleen objecten met een unieke waarde voor het groepsobject worden doorlopen. Dit maakt geneste rapporten mogelijk.

Voor nu zullen we een Gedeelte Veld groeperen toevoegen aan ons rapport. Op zijn meest basale niveau kunt u aan een Gedeelte Veld groeperen denken als het equivalent van een afdruk als atlas: u selecteert een laag om doorheen te lopen en het rapport zal een gedeelte invoegen voor elk gevonden object. Selecteren van het nieuwe gedeelte :Gedeelte Veld groeperen onthult een aantal nieuwe gerelateerde instellingen:

../../../_images/field_group.png

In dit geval hebben we Veld groeperen zo ingesteld dat we over alle staten in de laag Admin Level 1 lopen, gebruikmakend van de waarden uit het veld adm1name. Dezelfde opties voor kop en voettekst zijn aanwezig, samen met een nieuwe optie om een bloktekst voor dit gedeelte op te nemen. We zullen dat doen en de bloktekst bewerken:

../../../_images/edit_group_body.png

Onze bloktekst bestaat nu uit een kaart en een label dat de naam van de staat weergeeft. We selecteerden, om de naam van de staat op te nemen, Item toevoegen ▶ Label toevoegen en data-bepaalden de tekst onder Algemene eigenschappen met de hulp van Een expressie invoeren….

Het resultaat was de volgende expressie (name is de naam van het attribuut in de laag Admin Level 1 die de naam van de staat bevat):

[% "name" %]

De kaart is ingesteld om het huidige object van het rapport te volgen (ingeschakeld door Beheerd door Rapport te selecteren – net als een kaartitem in een atlas het huidige object van de atlas zal volgen als Beheerd door atlas is geselecteerd):

../../../_images/controlledbyreport.png

Als we door zouden gaan en ons rapport nu zouden exporteren, zouden we iets zoals dit krijgen:

../../../_images/report1.png

Fig. 17.62 De kop van het rapport header, een pagina voor elke staat, en de voettekst van het rapport.

Dus min of meer een atlas, maar met een pagina voor de kop en de voettekst.

Laten we de dingen nog wat interessanter maken door een subgedeelte aan onze groep Staat toe te voegen. We doen dit door eerst de groep van het veld Admin Level 1 te selecteren in Rapport beheren, en dan te drukken op de knop signPlus Gedeelte toevoegen en dan een nieuw Gedeelte Veld groeperen toe te voegen:

../../../_images/subsection.png

Als een Gedeelte Veld groeperen door zijn objecten gaat, zullen de objecten worden gefilterd, zodat de attributen van de objecten overeenkomen met die uit zijn veld van de ouder-groep (in dit geval adm1name). Hoer gaat het subgedeelte dat we hebben toegevoegd door een laag Populated Places, inclusief een gedeelte bloktekst voor elke plaats die het tegenkomt. De magie hier is dat de laag Populated Places een attribuut heeft met dezelfde naam als het definiërende veld uit de ouderlaag,:guilabel:adm1name, dat elke plaats tagt met de staat waarin het is gelegen (als u geluk hebt zijn uw gegevens al op deze wijze gestructureerd – indien niet, voer dan het algoritme voor Processing Join Attributes by Location uit en maak uw eigen veld). Wanneer we dit rapport exporteren, zal QGIS de eerste staat uit de laag Admin Level 1 pakken en dan doorlopen over alle Populated Places met een overeenkomende waarde voor adm1name. Dit is wat we krijgen:

../../../_images/report3.png

Hier hebben we een basis bloktekst voor de groep Populated Places gemaakt, inclusief een kaart van de plaats en een tabel van enkele attributen van de plaats. Ons rapport heeft nu dus een kop voor het rapport, een pagina voor de eerste staat, gevolgd door een pagina voor elke bevolkte plaats in die staat, dan de rest van de staten met hun bevolkte plaatsen, en tenslotte de voettekst voor het rapport. Als we nog een kop voor de groep Populated Places zouden opnemen, zou die worden opgenomen net voor de vermeldingen van de bevolkte plaatsen voor elke staat, zoals weergegeven in de afbeelding hieronder:

Op dezelfde wijze zou een voettekst voor de groep Populated Places worden ingevoegd nadat de laatste plaats voor elke staat is opgenomen.

In aanvulling op geneste subgedeelten, kunnen subgedeelten in een rapport ook achter elkaar worden opgenomen. Als we een tweede subgedeelte toevoegen aan de groep Admin Level 1 voor Airports, dan (als de laag Airports een attribuut adm1name heeft dat het kan koppelen aan de oudergroep) zou ons rapport eerst ALLE bevolkte plaatsen vermelden voor elke staat, gevolgd door de vliegvelden in die staat, voordat wordt doorgegaan naar de volgende staat.

../../../_images/report_consec.png

Het sleutelpunt hier is dat onze groep Airports een subgedeelte is van de groep Admin Level 1 – niet van de groep Populated Places.

In dat geval zou ons rapport zijn gestructureerd zoals dit (onthoud dat ook vlaggen van de staat zijn opgenomen - de procedure voor het op deze manier toevoegen van objectspecifieke afbeeldingen wordt hieronder beschreven):

../../../_images/report_all_img.png

17.4.3.1. Afbeeldingen opnemen in een rapport

Afbeeldingen kunnen bijzonder nuttig zijn in rapporten, en QGIS staat afbeeldingen toe in zowel de statische als de dynamische delen van een rapport. Afbeeldingen worden op dezelfde manier toegevoegd als voor standaard afdruklay-outs, en voor de statische delen van het rapport (en statische afbeeldingen in dynamische delen) is er niet meer dan dat.

Maar als u illustraties wilt die op maat gemaakt zijn voor de objecten in het rapport, moet uw laag een attribuut hebben dat kan worden gebruikt om de op te nemen afbeelding te definiëren.

QGIS is afhankelijk van absolute bestandsnamen voor afbeeldingen in rapporten.

Voor dynamische afbeeldingen voegt u eerst een afbeelding toe aan de bloktekst van die groep, zoals gewoonlijk. In de Item-eigenschappen van de afbeelding, stelt u de Bron afbeelding in met de knop dataDefined Data-bepaalde ‘override’, en selecteer ofwel een attribuut dat het absolute pad bevat van de afbeeldingen of Bewerken… (om een expressie in te voeren die het absolute pad voor de afbeelding maakt).

Hieronder staat een voorbeeldexpressie die het samenvoegen van tekenreeksen gebruikt om het absolute pad naar de afbeelding te specificeren, met de map waar het projectbestand is geplaatst (@project_path) en een attribuut (adm1name) van waaruit de bestandsnaam wordt gemaakt (in dit geval door de tekenreeks in het attribuut adm1name om te zetten naar hoofdletters en ‘_flag.png’ toe te voegen):

concat(@project_folder, '/naturalearth/pictures/' ,
       upper("adm1name"), '_flag.png')

Dit betekent dat de afbeeldingen zijn geplaatst in de submap naturalearth/pictures van de map met het projectbestand.

../../../_images/report_dynamic_picture.png

17.4.3.2. Accentueren van het huidige object van het rapport op een kaart

In het bovenstaande rapport worden de objecten in het rapport benadrukt in de kaarten met accentueren (state) en cirkels (populated places). U moet, om de objecten in het rapport te benadrukken in de kaarten (los van ze te plaatsen in het midden van de kaarten), de stijl data-bepalen met een vergelijking tussen zijn @id en de @atlas_featureid, net als voor atlassen.

Als u bijvoorbeeld een dikkere lijn / grens zou willen hebben voor het object in het rapport dan voor de andere objecten, kunt u de lijndikte data-bepalen:

if([email protected]_featureid, 2.0, 0.1)

Het object van het rapport zal een 2 eenheden brede polygoonomtrek krijgen, terwijl alle andere objecten een 0.1 eenheden brede lijn zullen krijgen. Het is ook mogelijk de kleur data te bepalen (niet-transparant donker magenta voor het object van het rapport en semi-transparant lichtgrijs voor de andere objecten):

if([email protected]_featureid, '#FF880088', '#88CCCCCC')

17.4.3.3. Meer groepen op niveau 1

Combineren van geneste en opeenvolgende gedeelten, samen met koppen en voetteksten voor gedeelten, geeft bijzonder veel flexibiliteit. Bijvoorbeeld in het onderstaande rapport voegen we een ander groepsveld toe als kind van het hoofdrapport voor de laag Ports. Nu, na het vermelden van de staten, samen met hun bevolkte plaatsen en vliegvelden, zullen we een overzichtslijst krijgen van alle havens in de regio:

../../../_images/report_flex.png

Dit geeft voor het laatste deel van de export ons rapport het volgende:

../../../_images/ports.png

17.4.4. Instellingen voor exporteren

Wanneer u een rapport exporteert (Rapport ▶ Rapport als afbeelding exporteren… / SVG… / PDF…), zult u worden gevraagd naar een bestandsnaam, en dan krijgt u de gelegenheid om de instellingen voor het exporteren fijn af te stemmen om de meest toepasselijke uitvoer te krijgen.

Zoals u ziet zijn rapporten in QGIS bijzonder krachtig en flexibel!

Notitie

De huidige informatie werd aangepast vanuit een blog van North Road, Exploring Reports in QGIS 3.0 - the Ultimate Guide!