2017-06-21 74 views
0

我正在處理R中的數百個4波段圖像,並且需要關於什麼可能是非常簡單的任務的幫助。作爲處理的一部分,我需要導出保留原始GeoTiff空間信息的單波段RGB複合材料。在其他軟件中,我已經導出了一個.jgw文件,但我需要能夠在R中執行此操作。這些圖像將用作底圖並將其饋送到另一個映射界面。我已經搜索和搜索,只能找到如何繪製RGB()以及如何寫入Raster()。 PlotRGB丟失空間信息,writeRaster()產生多波段圖像。用空間信息導出複合RGB圖像R

任何想法? R中有一個可以使用的內置光柵。

library(raster) 
library(rgdal) 
r <- raster(system.file("external/test.grd", package="raster")) 
x <- RGB(r) 
plotRGB(x) #Is there a way to output this where it will maintain spatial information? 
writeRaster(x, filename="file.tif") #This produces a 3-band tiff, not a composite 

回答

0

writeRaster函數可以採取options參數選項傳遞到底層GDAL文庫(例如,的GeoTIFF選項記錄here)。選項TFW=YES寫出了一個.tfw世界文件,它與.jgw文件看起來是一樣的。

現在,「複合RGB」不是TIFF世界中的標準術語;它似乎特定於「ArcMap」和朋友,所以很難說出真正的含義,但通過指定顏色組件的數據類型,您可以生成通常認爲是「標準」RGB TIFF格式的內容在1個字節的無符號整數(datatype="INT1U"),所以下面可以做你想做的:

writeRaster(RGB(r), filename="file2.tif", datatype="INT1U", 
    options="TFW=YES", format="GTiff") 

據我所知,無法識別或拼寫錯誤options值不會產生任何錯誤信息,因此您需要小心他們都拼寫正確。

+0

謝謝您的回覆。我意識到我應該能夠從GDAL傳遞參數,但我不知道如何。你提供的腳本確實產生了TFW,這是完全可以接受的,但TIFF仍然是三段而不是一段。我想以某種方式創建一個單波段複合材料。如果您熟悉QGIS或ArcMap,這與使用渲染器導出柵格相似。 –

+0

我不熟悉QGIS或ArcMap。不幸的是,術語「複合RGB」似乎是特定於該軟件/領域的,而不是TIFF世界中的標準術語,因此很難從技術角度分辨它們的含義。但是,它看起來像指定'datatype =「INT1U」'生成一個更典型的RGB TIFF,這可能是「複合RGB」的意思,所以我已經相應地修改了我的答案。 –

+0

謝謝你重溫這個。我嘗試了您所做的修改,但它仍然生成了3段圖像。我也聽到了我正在尋找的「合併頻道」或「合併樂隊」的輸出。這個鏈接可能會更好地解釋我在找什麼:http://gisgeography.com/arcgis-composite-bands/爲了澄清,圖形世界中的Tiff和映射世界中的GeoTiff的唯一區別是包含一個空間參考。在圖形世界中,我試圖做的是將通道合併(而不是具有藍綠色 - 紅色通道的圖像,輸出將具有一個通道)。 –