Menu
  • Hem
  • Dokument
  • Om Mig
Geosupportsystem

Skala i funktioner

Posted on 2017-02-16

Det fanns en andra fråga i det mail som jag refererade till i gårdagens inlägg. Det handlar om att hämta skalan från en karta och använda denna i etiketter på layouten.
Det går ju att använda en numerisk skala som objekt (”Lägg till skala” med stilen ”Numerisk”), men det går faktiskt att göra betydligt mer med hjälp av funktioner och Pythonskript.
Det som är önskvärt är att hämta aktuell skala för en kartram i layouten och sedan använda den i ett uttryck så att man exempelvis kan skriva.

Skala: 1:5000

Till att börja med så krävs det en anpassad pythonfunktion då det inte finns någon variabel som kan hämta skalan från godtycklig kartram.

from qgis.core import *
from qgis.gui import *
@qgsfunction(args='auto', group='Custom')
def skala(kart_id, feature, parent):
 layouts = iface.activeComposers()
 for layout_vy in layouts:
   layout_ruta = layout_vy.composerWindow()
   layout_nu = layout_vy.composition()
   karta = layout_nu.getComposerMapById(kart_id)
   if karta:
     skala = int(karta.scale())
 return skala

Funktionen skala() tar ett numeriskt argument som motsvarar önskad kartrams index. Har man bara en karta i layouten så kan man anropa skala(0).
Skriptet skrivs in i en ”Ny fil” (se bild nedan) som man kan döpa till vad man vill. Och när koden är inskriven så klickar man på ”Läs in” för att funktionen skall bli tillgänglig i Uttrycksbyggaren.
Skärmbild_2017-02-14_19-19-52.png
Svaret på funktionsanropet är heltalsdelen av kartramens skala. Om jag därför har satt den första kartramens skala till 1:5000 och använder uttrycket nedan.

Skala 1:[% skala(0) %]

Så blir resultatet just:

Skala 1:5000

Vill jag ha skalan i den andra kartramen så anropar jag i stället skala(1).
Det kan finnas tillfällen när heltalsdelen av skalan inte avrundas på samma sätt i variabeln som i egenskaperna för kartan, men det kan man nog fixa med en smartare bearbetning av resultatet i pythonfunktionen.
Det kan även behövas lite ”snyggifiering” av heltalet, men det får ni fixa själva.

Lämna ett svar Avbryt svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Translate with Google

GBR In English
GER Auf Deutch
FRA En Français
ESP En Español
Swedish is a hard language for a machine to translate. Nuance and detail will likely be lost.
     

Bok om QGIS på Svenska

Bok

Beställ Boken/E-bok genom att klicka på bilden (även förhandsgranskning).

Senaste kommentarer

  • klakar om Laga hål i höjddata
  • Per Ekström om Laga hål i höjddata
  • Sur om Mera verktyg i QGIS
  • Anton om ”Mobile *.Geodatabase”
  • Fredrik Ekberg om Ingen är oskyldig

Arkiv

Prenumerera på Geosupportsystem

Skriv in namn och epost för att prenumerera på meddelanden från denna blogg.
Loading

geosupport

TrueNAS bygge. @fractaldesignna Define R5 är rikt TrueNAS bygge. @fractaldesignna Define R5 är riktigt trevlig att bygga i, och den sväljer väldigt mycket disk. Här skall virtualiseras både PostGis, WebODM och Geonode så småningom.
Då har jag lite att bläddra i ett tag framöver. Då har jag lite att bläddra i ett tag framöver.
YouTube video to frames. Processed in OpenDroneMap YouTube video to frames. Processed in OpenDroneMap and visualized in QGIS 3.17.
Ladda mer...

Meta

  • Logga in
  • Flöde för inlägg
  • Flöde för kommentarer
  • WordPress.org
©2021 Geosupportsystem | WordPress Theme by Superbthemes.com