我正在尝试将地理参考jpeg转换为地理参考tiff,以帮助减小文件大小

时间:2018-10-26 15:37:33

标签: r jpeg tiff

我知道有一个对jpeg带有tiff的线程,我使用它来进行格式化。我安装了jpeg和tiff软件包。

library("jpeg")
library("tiff")
jpeg<- readJPEG("ortho.jpg", native = TRUE)
tiff<- writeTIFF(jpeg,"tiff", bits.per.sample = 16L, compression = "JPEG", 
reduce = TRUE)

这行得通,并且让我感到困惑,但没有属性,因此没有地理参考。我当前的尝试/思考过程是将jpeg编写为栅格,而不是从栅格转换为tiff。因此,我正在使用栅格数据包和writeRaster函数。目前,我的代码是:

library("jpeg")
library("tiff")
jpeg<- readJPEG("ortho.jpg", native = FALSE)
raster<- as.raster(jpeg)
rf<- writeRaster(raster, filename = "rasterfile.tif" , format="GTiff")

这成功地写入了带有属性的栅格,但是在读取的writeRaster部分中出现错误

Error in (function (classes, fdef, mtable) : unable to find an inherited method for function ‘writeRaster’ for signature ‘"raster", "character"’

任何建议将不胜感激。

2 个答案:

答案 0 :(得分:0)

您需要加载raster软件包,并且应该使用as.raster

要修正您的示例(并使用一些示例数据!)

library(jpeg)
f <- system.file("img", "Rlogo.jpg", package="jpeg")
img <- readJPEG(f)

library(raster)
b <- brick(img)
plotRGB(b, scale=1)
writeRaster(b, "test.tif", overwrite=TRUE)

但是,通过这种方式,您将失去地理配准。为避免这种情况,您根本不应该使用jpeg软件包,而应该这样做:

library(raster)
bb <- brick(f)
writeRaster(bb, "test2.tif", overwrite=TRUE)

可视化

plotRGB(bb)

有关可以帮助您减小文件大小的选项,请参见?writeRasterhttps://www.gdal.org/frmt_gtiff.html

答案 1 :(得分:0)

这是我最后的有效代码。

library(jpeg)
library(tiff)
f <- system.file("ortho.img", package="jpeg")
img <- readJPEG("ortho.jpg", native = FALSE)
writeTIFF(img, "test.tif", bits.per.sample = 8L, compression = "JPEG", reduce = TRUE)

然后,我将引用jpeg的.jgw切换为.tfw,然后用autocad将其立即加载。确保tfw和tif的文件名相同。