QGIS blir bättre och bättre, men det kan hända att man ändå vill slutföra sin layout i ett annat program. I detta inlägg tittar jag på ett sätt som kanske kan underlätta detta.
QGIS kan spara kartor i flera format, men jag tänker bara titta på bildformat och specifikt PNG, även om metoden stödjer andra format också.
Jag har letat efter ett sätt att ytterligare förenkla metoden, exempelvis genom att skapa en knapp i gränssnittet för layouter, men jag har inte hittat ett sätt för hur detta skall gå till. Tills vidare så är det ett rent Pythonskript som man får redigera och köra bäst man vill från QGIS.
software = "inkscape" # Command that calls the software you want to open the map with savefile = "/home/user/overwrite.png" # Full path to the save file. This will be overwritten every time saveformat = "png" # The save format should comform to the savefile string. param = " " # Any extra parameters, or a 'space' to separate the command and savefile pI = QgsProject.instance() # Get the project instance pLM = pI.layoutManager() # Get the layout manager pLM.layouts() # Get all project layouts as a list layout = pLM.layouts()[0] # Set the layout to export to the first in the layout list image = QgsLayoutExporter(layout).renderPageToImage(0) # Render the layout to an QtImage with the current settings. image.save(savefile, saveformat) # Save the QtImage to the file and format set previously from subprocess import Popen as p # Import Popen as p to call external commands p(software + param + savefile, shell=True) # open the layout file with the set software and parameters.
Det skriptet gör är att generera en bild från den första layouten i det öppnade projektet. Du kan ändra till en annan layout genom att byta nummer i listan för ”layout” variabeln.
Om det är en flersidig layout så är det den första sidan som genereras. Även detta kan ändras genom att ändra ”0” till ett annat tal på raden som definierar ”image” variabeln.
Du måste ändra på sökvägen till ”savefile” till något som fungerar i din dator, men så länge du håller dig till png-formatet så behöver du inte ändra något under den raden. Beroende på hur anropen ser ut i ditt operativsystem och vilket program du vill använda för att öppna layouten så behöver du eventuellt redigera variabeln ”software”. Jag behöver inte fullständiga sökvägar till programmet, men det kan hända att det behövs i Windows. Jag ser egentligen ingen begränsning i vilka program detta fungerar med, så länge du kan skicka med en filparameter i anropet av programmet. Gimp, Inkscape eller Illustrator, det borde fungera lika bra.
När man väl gjort sina inställningar så att dessa fungerar så behöver man bara ett sätt att anropa skriptet när det behövs. Det var här jag gärna velat ha en knapp i gränssnittet, men det vet jag som sagt inte hur jag löser just nu.
Jag har hjälpligt lyckats skapa ett processverktyg i verktygslådan som exekverar koden ovan. Detta gör att jag ”bara” behöver gå till verktygslådan och dubbelklicka på skriptet. Sedan öppnas min layout i det angivna programmet. Det hade ändå, som sagt varit enklare med en knapp (och kanske lite inställningar i formulärform) i gränssnittet för layout.
Jag kanske passar på att lära mig lite mer om Pythonskript i verktygslådan och förbättrar skriptet något så det blir enklare att använda som det är. Här finns det möjligheter, och det kanske är såhär det är bäst att göra.