Een topic over een kompasroos met plaatsnamen op het Geo Forum triggerde bij mij de gedachte om hier eens verder naar te kijken. Er werden terechte opmerkingen gemaakt over de mogelijke incorrectheid van de afstanden en van de richtingen, dit alles in verband met de projectie natuurlijk. Maar als je alleen een leuk plaatje wilt waarin de richting best meer dan 10 graden mag afwijken en de rechtstreekse afstand in kilometers toch nooit werkelijk nagemeten wordt? Dan kun je best leuk spelen in QGIS!

Om te beginnen moet je je afvragen wat je gaat verzamelen. Een lijnobject vanaf een bepaald centrumpunt tot aan een aantal bekende plaatsen? Dat kan, maar je bent niet zo flexibel. Je zou ook kunnen overwegen om het centrumpunt als variabele in het project op te slaan en alleen puntobjecten te verzamelen als een lijstje met bekende plaatsen. De tussenliggende lijn naar het centrumpunt kun je heel eenvoudig genereren in QGIS.

Je hebt dus een nieuwe tekenlaag nodig van het type Punt en je hebt een aanvullend administratief veld nodig met de plaatsnaam:

Let op dat je een tekstveld hebt toegevoegd, anders kun je geen plaatsnaam kwijt. 

Na het aanmaken kun je de laag op Bewerken zetten als dat nog niet automatisch is gebeurd en via het menu Bewerken > Object punt toevoegen kun je op de locatie waar alle gewenste plaatsen zich bevinden, een punt plaatsen. Na het toevoegen zie je een invoervenster waarin je de plaatsnaam kunt invoeren. Je kunt voor het overzicht natuurlijk een BRT achtergrond gebruiken zodat je ziet waar je een plaats aanklikt. Omdat je nog geen stijl hebt opgegeven worden ze afgebeeld als stipjes.

Om nu een lijn te tekenen tussen het gewenste centrumpunt moet je dit eerst bekend maken. Maak hiervoor twee project-variabelen aan via het menu Project > Eigenschappen, tabblad Variabelen. Met de groene plus-knop maak je zelf nieuwe velden aan. Eén voor een X-coördinaat en één voor een Y-coördinaat.

Nu kun je naar de Layer eigenschappen, tabblad Symbologie. Default wordt een ‘Enkel symbool’ getoond met een markering van het type ‘Eenvoudige markering’. Selecteer deze laatste en wijzig de Symboollaagtype in ‘Geometrie-generator’ dat als type geometrie een ‘Lijn/Multilijn’ genereert. Je gaat namelijk lijnen genereren tussen de plaatsnaampunten en het opgegeven centrumpunt. Geef de volgende expressie op:

make_line(make_point(@center_x ,@center_y), $geometry)

Simpelweg gezegd maakt deze expressie een lijn tussen een nieuw te maken punt (make_point) van de aangemaakte variabelen (@center_x, @center_y) en de geometrie ($geometry) van het gekozen woonplaatspunt zelf. De gegenereerde lijn kun je nog stijlen met een andere kleur en lijndikte. Op het tabblad Label kun je uiteraard ‘Enkele labels’ tonen met als waarde de ‘Woonplaats’.

Als je nu de variabelen aanpast naar een ander centrumpunt dan worden daar alle lijnen naartoe getekend. Maar heel fraai is het nog niet. Wat als je gebogen lijnen wilt? Ook dat is niet heel moeilijk en er zullen vast meerdere methoden voor zijn. Eén daarvan is een Geometrie-generator die iets doet met de geometrie van een andere Geometrie-generator. Je hebt met een Geometrie-generator al de rechte lijn getekend, deze kun je verbuigen met een nieuwe expressie. Ga hiervoor naar de Layer eigenschappen, tabblad Symbologie en wijzig het type ‘Doorgetrokken lijn’ dat als output van de Geometrie-generator werd gemaakt, ook in een symboollaagtype ‘Geometrie-generator’ en stel de type geometrie in op ‘Lijn/multilijn’.

Geef hier de expressie:

make_line(
start_point($geometry),
translate(centroid($geometry), $length/10, $length/10),
end_point($geometry)
)

Deze expressie maakt een lijn door drie punten, namelijk startpunt, een verplaatst (translate) middelpunt (centroid) met 1/10e van de lengte, en een eindpunt. Je kunt ook de expressie in de eerste Geometrie-generator aanpassen maar omdat je 3x naar de $geometry (de gegenereerde rechte lijn) en 2x naar de lengte ervan verwijst, is dit eenvoudiger. Het resultaat is nog niet helemaal fraai, het zijn nu lijnen met een harde knik:

Ga nogmaals naar de eigenschappen van de Layer en wijzig de laatste type ‘Doorgetrokken lijn’ in de symboollaagtype ‘Pijl’, met een enkele pijlkop en vink aan dat er gebogen pijlen getekend moeten worden. Geef verder bij breedte pijl, lengte kop en dikte kop dezelfde waarde, bijvoorbeeld 0.25mm. Speel wat met de vulling qua kleur en het ziet er al heel wat leuker uit:

Dit kan natuurlijk op elk niveau, bijvoorbeeld binnen een plaats maar ook binnen heel Europa:

Waarbij je dan wel rekening moet houden met de projectie, helemaal als je van plan bent om de afstanden in kilometers weer te geven op een Europese kaart of een wereldbol. En: zodra je de projectie aanpast zul je mogelijk ook andere waarden moeten invoeren in de project-variabelen van het centrumpunt. Dan geldt RD niet meer.