Exportera till InkScape, eller vad som helst…

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.

Skärmklipp från 2018-04-27 13:36:26

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.

Annonser

Taggar:,

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut /  Ändra )

Google+-foto

Du kommenterar med ditt Google+-konto. Logga ut /  Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut /  Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut /  Ändra )

Ansluter till %s

%d bloggare gillar detta: