QGIS – WCZYTYWANIE ORTA KLIKNIĘCIEM

Odkąd zrobiło się ciepło ogarnęła mnie niemoc twórcza. Jest gorzej niż źle, zero motywacji. Żeby nie popaść w kompletne lenistwo robię, ten oto, krótki wpis.

Pokażę dosłownie parę linijek kodu, który pozwoli wam wczytywać orto jednym kliknięciem. Przypadek użycia jest taki: mamy macierz dyskową z pierdyliardem ortofotomap. Potrzebujemy je jakoś wygodnie wczytywać w QGISie. Otwieranie bezpośrednio z macierzy odpada – ciężko otworzyć folder z tysiącami kilkumegowych ort, no i jeszcze w nim wyszukać. Musimy więc taki plik przekopiować do swojego lokalnego komputera i następnie otworzyć go używając komend QGISowego API. W moim przypadku wykorzystuję warstwę wektorową z ramkami ortofotomap, jednym z atrybutów takiej warstwy jest godło ortofotomapy, które wykorzystam w skrypcie. Do tej warstwy przypinamy akcję:

mapowy_open_orto_qgis

Właściwości warstwy -> Akcje -> Typ Python -> Zaznaczamy checkbox „Przechwyć wynik” -> Nadajemy nazwę akcji -> Wklejamy kod -> klikamy Dodaj.

Kod jest taki:

from PyQt4.QtCore import QFileInfo
from qgis.core import QgsRasterLayer
import shutil
QtGui.QMessageBox.information(None, "Godlo ramki", "[% godlo %]")

#do zmiennej przechwytujemy wartość pola godlo
ramka = "[% godlo %]"

#kopiowanie
sciezka1 = "o:\\Ortofotomapa\\" + ramka + ".tif"
sciezka2 = "D:\\tmp\\" + ramka + ".tif"
shutil.copy2(sciezka1, sciezka2)

#otwieranie
fileName = sciezka2
fileInfo = QFileInfo(fileName)
baseName = fileInfo.baseName()

rlayer = QgsRasterLayer(fileName, baseName)
if not rlayer.isValid():
  print "Warstwa popsuta!"

#dodawanie do mapy
QgsMapLayerRegistry.instance().addMapLayer(rlayer, True)

Oczywiście musicie dopasować sobie zmienne – ramka, sciezka1, sciezka2 do waszych potrzeb. Jeśli nie musicie kopiować na lokalny komputer tifów, możecie opuścić fragment oznaczony jako #kopiowanie i zostawić tylko zmienną sciezka2. Teraz wystarczy tylko kliknąć narzędziem „Uruchom akcję” na ramkę ortofotomapy i automagicznie odpowiedni plik nam się skopiuje i otworzy w QGISie.

Taka mała rzecz, a cieszy 😉

 

Related Posts