我正在尝试将地理参考 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)
请参阅 ?writeRaster
和 https://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 的文件名相同。
我知道有一个线程对 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)
请参阅 ?writeRaster
和 https://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 的文件名相同。