Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
zarządzanie rastrami
24-01-2019, 12:00,
#1
Brick  zarządzanie rastrami
do tej pory korzystałem z ArcView 3.3 z warstwą rastrową podłączoną poprzez .dbf który w środku zawiera listę rastrów w takiej formie:
[ścieżka i nazwa pliku.jpg  |  598008,46667449   |  467168,64237156   |  598856,66962089     |  467699,23355774 ]

chcę zrobić przesiadkę na QGISa 2.8.1 - względy ku temu są oczywiste. O ile wszystko inne śmiga aż miło to nie mogę odtworzyć tej funkcjonalności. Sprawa jest o tyle trudna, że warstwa rastrowa składa się z 9000 jpegów które są aktualizowane, więc nie można ich tam dodać bezpośrednio.
Pytanie czy da się zrobić coś takiego w QGISie (a raczej jak to zrobić Smile ) ewentualnie są wtyczki które rozwiążą ten problem a których nie umiem znaleźć.  
26-01-2019, 16:33,
#2
RE: zarządzanie rastrami
Chodziło Ci o wczytanie nie rastrów bez georeferencji z listy z parametrami jak podałeś?
Bezpośrednio z taką funkcjonalnością się nie spotkałem. W sumie fajny pomysł na plugin...
Wersji QGis 2.x nie używaj - to już dawno nie wspierana wersja, a ostatnio pojawił się ostatni patch do 2.18 i już też ma nie być wspierana.
Obecnie warto się interesować tylko 3.X

Poniższy skrypt powinien zadziałać w QGis3. Pisałem na szybko więc nie jest może najładniejszy, ale powinien działać.

Jako wsad  (zmienna lista_rastrow) wpisujesz ścieżkę do txt z wykazem plików jpg w formacie:
ścieżka_do_pliku;xmin;ymin;xmax;ymax;kod_epsg_układu_współrzędnych

Kod:
C:\temp\rastry\r1.jpg;598008.46667449;467168.64237156;598856.66962089;467699.23355774;2178
C:\temp\rastry\r2.jpg;598008.46667449;467168.64237156;598856.66962089;467699.23355774;2178
C:\temp\rastry\r3.jpg;698008.46667449;567168.64237156;698856.66962089;567699.23355774;2178


Odpalony w konsoli pythona QGis3 powinien zrobić to co potrzebujesz.
Ważne, żeby w Ustawienia > Opcje > Układy współrzędnych odznaczyć to żeby pytał o układ dla wczytywanych plików- inaczej się naklikasz.
Kod:
lista_rastrow = 'C:\\temp\\lista_rastrow.txt'
def otw_raster(plik, xmin, ymin, xmax, ymax, crs):
   box = QgsRectangle(xmin,ymin, xmax, ymax)
   crs = QgsCoordinateReferenceSystem(int(crs))
   
   plik_nazwa = (((atr[0].rsplit('\\', 1))[1]).replace('.jpg',''))
   rlayer = QgsRasterLayer(plik, plik_nazwa, 'gdal')
   if not rlayer.isValid():
       print("Plik {plik_nazwa} jest nie prawidłowy, bądź nie istnieje i nie może być wczytany".format(plik_nazwa=plik_nazwa))
   else:        
       rlayer.setExtent(box)
       rlayer.setCrs(crs)
       QgsProject.instance().addMapLayer(rlayer)
   
with open(lista_rastrow, "r") as lista:
   for raster in lista:
       atr = raster.split(';')
       otw_raster(atr[0], float(atr[1]), float(atr[2]), float(atr[3]), float(atr[4]), atr[5])
27-01-2019, 00:06,
#3
RE: zarządzanie rastrami
Moim zdaniem sprawę rozwiązuje tu wirtualny raster (vrt). To plik, który trzyma wewnątrz siebie jedynie skróty do faktycznych plików, te zaś mogą być podmieniane (jeśli nie zmienią rozdzielczości i zasięgu).
28-01-2019, 14:45,
#4
RE: zarządzanie rastrami
Z uwagi na fakt, że nie jesteśmy zawodowymi "geodetami" i kwestie związane z odwzorowaniami itp. są nam nieco obce (rastry są elementem niezbędnym do wykonania naszych zadań lecz ich obrobienie nie jest przedmiotem naszej pracy). Mam pytanie: jak jest struktura pliku vrt (o ile to jest plik?) jak go stworzyć i podłączyć do QGisa. Czy to jest plik podobny w funkcjonalności do pliku *.dbf opisanego wcześniej?
Chciałbym tu jedynie przypomnieć, że problem u nas wynika z ilości rastrów które musimy "podpiąć" do QGiSa. A dziwi nas fakt, że ArcView w wersji 3.0 radzi sobie z tym bez problemu. Próbowaliśmy zaproponowanego wyżej rozwiązania ze skryptem ale być może popełniamy jakiś błąd wynikający z naszego niewielkiego doświadczenia w programowaniu w phytonie - jeszcze będziemy próbować.
28-01-2019, 15:11,
#5
RE: zarządzanie rastrami
Skrypt nie zadziała tak jak pierwotnie myślałem (a nie ma możliwości edycji postów).
On wczytuje skany, ale nie "przeciąga" je we wskazane naroża tylko ustawia zakres warstwy na te naroża treść zostaje w pierwotnym miejscu - mój błąd, sprawdzałem na zbliżonych współrzędnych wiec wygladalo to poprawnie, a nie sprawdziłem jak działa ta metoda. 
Teraz za bardzo nie mam czasu nad tym siedzieć.
VRT faktycznie może być rozwiązaniem.

Co do układów, jeśli wczytujecie pojedynczy plik jpg do QGIS wyświetla się on we właściwym miejscu?
Bo jesli tak, to znacznie rozwiazuje to sprawe.
28-01-2019, 16:08,
#6
RE: zarządzanie rastrami
tak. jeżeli wrzucamy jeden plik to wskakuje on na właściwe miejsce (wygląda to tak, że dane o narożnikach z bazy .dbf nie są wykorzystywane)
28-01-2019, 16:46,
#7
RE: zarządzanie rastrami
To zróbcie VRT, jak wspomniał wyżej jerresso.

Chyba najlepiej za pomocą GDAL'a,
https://www.gdal.org/gdalbuildvrt.html
Na dole strony są przykłady.

Jest też wtyczka Virtual Raster Builder, za pomocą której można to zbudować z poziomu QGis, ale jej nie używałem.
29-01-2019, 13:47,
#8
RE: zarządzanie rastrami
skorzystałem z kreatora wirtualnego rastra w QGISie ale ma ograniczenia co do wielkości lub ilości plików. dla kilku działa, dla większych ilości wyrzuca komunikat < Nie powiodło się uruchomienie procesu. Brak wywoływanego programu lub brak uprawnień do jego uruchomienia. >
29-01-2019, 14:48,
#9
RE: zarządzanie rastrami
Użyj GDAL'a z poziomu konsoli.
Przy przetwarzaniu dużej ilości plików to zazwyczaj lepsze rozwiązanie.
30-01-2019, 23:31,
#10
RE: zarządzanie rastrami
Tak, z tego co pamiętam to generowałem sobie polecenie do linii komend za pomocą generatora (nie chciało mi się wczytywać w dokumentację gdal Wink a następnie wykonywałem już w linii komend. Daj znać jak poszło


Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Problem z rastrami maciek85 2 10 468 05-08-2016, 07:26
Ostatni post: sebaq
  Zabawa rastrami urzednik 2 14 189 28-03-2013, 00:59
Ostatni post: arepo
  problem z rastrami przez PostgreSQL marcinek73 0 7 738 16-04-2011, 10:24
Ostatni post: marcinek73

Skocz do: