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

I am trying to convert a georeferenced jpeg to a georeferenced tiff in order to help reduce file size

我知道有一个线程对 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)

这行得通,但它没有属性,因此没有地理参考,这让我很生气。我当前的 attempt/thought 过程是将 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"’

如有任何建议,我们将不胜感激。

您需要加载 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 了解可帮助您减小文件大小的选项。

这是我的最终代码。

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)

然后我切换了 .jgw,将 jpeg 引用到 .tfw,autocad 就加载了它。确保 tfw 和 tif 的文件名相同。