Mam 3 oddzielne 1-pasmowe pliki GeoTIFF. Interpretacja kolorów dla pasma jest szara. Chcę 3-pasmowy plik RGB. Użyłem gdal_merge.py
gdal_merge.py -separate file1.tif file2.tif file3.tif -o output_file.tif
Ale interpretacja kolorów dla 3 pasm wynikowego pliku_wyjściowego.tif jest szara, niezdefiniowana, niezdefiniowana. Poza tym wszystkie piksele mają wartość 0 .
Jeśli wykonam pct2rgb.py, otrzymam plik RGB:
pct2rgb.py output_file.tif output_file_rgb.tif
Ale oczywiście piksele też mają 0. Mam więc 3 pytania:
- Czy gdal_merge.py jest właściwym narzędziem do łączenia 3 1-pasmowych plików w jeden 3-pasmowy plik RGB?
- Dlaczego otrzymuję nieokreśloną interpretację kolorów dla pasm?
- Czy pct2rgb jest właściwym narzędziem do przekształcania plików 3-pasmowych z tą interpretacją kolorów na pliki RGB?
AKTUALIZACJA : Rastry nie mają tabeli kolorów. Tylko interpretacja kolorów: szary.
Z drugiej strony wartości pikseli wynoszą od 0 do 1023 (jest to celowe)
Więcej danych: są to obracane rastry (bez północy w górę), ale wszystkie mają tę samą geotransformę.
AKTUALIZACJA 2 : Mogę wypaczać obrazy, aby je skierować na północ, budować VRT i dodawać ColorInterp dla każdego pasma, ale nadal otrzymuję interpretację kolorów jako szary, niezdefiniowany, niezdefiniowany w wyniku wyjściowym.
Problem polega na tym, że muszę stworzyć tabelę kolorów przynajmniej w pierwszym paśmie. Znam sposób ich tworzenia , ale nie wiem, ile wpisów powinna zawierać moja tabela. Dlaczego w przykładzie GDAL Raster FAQ jest 13 pozycji? Wszystkie piksele mają wartości od 0 do 1023, jeśli to pomaga.
AKTUALIZACJA 3 : Najwyraźniej w formacie TIFF nie można naprawdę określić interpretacji kolorów dla każdego pasma. Sposób, w jaki GDAL buduje interpretację kolorów podczas odczytu pliku TIFF, jest kombinacją wartości znacznika PHOTOMETRIC i EXTRASAMPLES .
Czytanie o tych tagach:
FOTOMETRYCZNY reprezentuje przestrzeń kolorów danych obrazu. Wartość 2 oznacza, że składowymi wartości piksela są RGB, ale zakłada się, że piksele bajtowe, a ja mam piksele UInt16 (próbowałem
-co "PHOTOMETRIC=rgb"
i dostałem błąd). Dlatego nie mogę określić znacznika PHOTOMETRIC dla pliku wyjściowego.EXTRASAMPLES określa, że każdy piksel ma N dodatkowych składników. Nie jestem pewien, jak użyć tego znacznika do utworzenia scalonego pliku. Lub jeśli potrzebuję.
Tak więc w aktualizacji 2 sugeruję utworzenie ColorTable, ale jak? W moich 3 plikach wejściowych wartości pikseli wynoszą od 0 do 1023. Czy muszę dopasowywać je do kolorów? Czy muszę utworzyć tabelę kolorów z 1024 wejściami? W jaki sposób?
Wydaje się, że w aktualizacji 3 mogłem użyć niektórych tagów GeoTIFF podczas tworzenia scalonego pliku, ale nie jestem pewien, czy naprawdę mogę ich użyć, ani w jaki sposób.
źródło
Odpowiedzi:
gdal_merge.py to właściwe narzędzie do układania obrazów wejściowych w stos.
Zakładając, że twój pierwszy zespół ma prawidłową tabelę kolorów, której możesz użyć:
gdal_merge.py -separate -pct -o output_file.tif file1.tif file2.tif file3.tif
Uwaga: Komenda została ponownie sformatowana
-o output_file.tif
przed listą danych wejściowych.Z dokumentów:
Przetestowałbym twoje wyjście,
gdalinfo -stats
aby upewnić się, że jest odpowiednio ułożone.Zaktualizowano dla OP
Z listy osgeo wygląda na to, że możesz spróbować użyć innego formatu, aby sprawdzić wyniki:
-Evan (plakat) zna GDAL wewnątrz i na zewnątrz.
źródło
Pierwszym sposobem, jaki mogę wymyślić, jest zbudowanie vrt, edycja i tłumaczenie:
w razie potrzeby dodaj tag interpretu kolorów:
i wtedy:
źródło
Twoje wejściowe pasmo skali szarości ma wartości od 0 do 1024, ale RGB dopuszcza tylko wartości od 0 do 255 dla każdego pasma.
Możesz użyć
gdal_translate -scale [src_min src_max [dst_min dst_max]]
do przeskalowania pliku źródłowego.W drugim przebiegu możesz ułożyć trzy pasma za pomocą gdal_merge.py i zastosować
-co "PHOTOMETRIC=rgb"
.źródło