[R-br] Obtenção de Valores em Pontos de Arquivo Raster x ASCII
Éder Comunello
comunello.eder em gmail.com
Quinta Fevereiro 18 08:28:15 BRST 2016
Senhores, bom dia!
Fiz o exercício abaixo, me preocupando mais com uso de memória. Nesse
quesito o pacote {raster} traz grandes vantagens. Além disso, formatos
binários otimizam a leitura e ocupam menor espaço em disco.
### <code r>
setwd("D:/Temp")
sapply(c("raster", "sp", "rgdal"), require, char=T)
url0 <- "http://download.osgeo.org/geotiff/samples/spot/chicago/UTM2GTIF.TIF
"
fn <- basename(url0)
# download.file(url0, fn, mode="wb")
### Leitura com pacotes {raster} e {readGDAL}...
### O pacote {raster} acessa informações do arquivo em disco,
### enquanto {readGDAL} carrega na memória.
img1 <- raster(fn)
img2 <- readGDAL(fn)
par(mfrow=c(1,2))
image(img1, asp=T, axes=F, ann=F); image(img2, asp=T)
par(mfrow=c(1,1))
print(object.size(img1), units="Kb") # 11.4 Kb
print(object.size(img2), units="Kb") # 2540.9 Kb
### Você pode converter seu objeto para {raster}...
### Mas em princípio ele vai ficar residente na memória
img2a <- raster(img2)
print(object.size(img2a), units="Kb") # 2548 Kb
### Para economizar memória, você pode salvar no disco e reabrir com
{raster}
### Pode usar qualquer formato aceito por raster, inclusive ascii
### Mas formatos binários otimizam o acesso e leitura
writeFormats()
writeRaster(img2a, "novo.tif", "GTiff", overwrite=F)
writeRaster(img2a, "novo.asc", "ascii", overwrite=F)
rm(img2, img2a) ### apagar intermediários pra liberar memória
system.time(img3a <- raster("novo.tif")) # 0.03s
system.time(img3b <- raster("novo.asc")) # 0.06s
print(object.size(img3a), units="Kb") # 11.4 Kb
print(object.size(img3b), units="Kb") # 11.3 Kb
file.info(dir(patt="novo\\.")) ### tamanho no disco
# size isdir mode mtime ctime
atime exe
# novo.asc 2289309 FALSE 666 2016-02-18 05:50:06 2016-02-18 05:50:02
2016-02-18 05:50:02 no
# novo.tif 1249547 FALSE 666 2016-02-18 05:49:48 2016-02-18 05:49:48
2016-02-18 05:49:48 no
### tamanho no disco em "Mb"
file.info(dir(patt="novo\\."))$size/1024^2 # [1] 2.183255 1.191661
par(mfrow=c(1,2))
image(img3a, asp=T); image(img3b, asp=T)
par(mfrow=c(1,1))
### Geotiff preserva mais atributos...
img3a
# class : RasterLayer
# dimensions : 929, 699, 649371 (nrow, ncol, ncell)
# resolution : 10, 10 (x, y)
# extent : 444650, 451640, 4631220, 4640510 (xmin, xmax, ymin, ymax)
# coord. ref. : +proj=utm +zone=16 +datum=NAD27 +units=m +no_defs
+ellps=clrk66 +nadgrids=@conus, em alaska, em ntv2_0.gsb, em ntv1_can.dat
# data source : D:\Temp\novo.tif
# names : novo
# values : 6, 255 (min, max)
img3b
# class : RasterLayer
# dimensions : 929, 699, 649371 (nrow, ncol, ncell)
# resolution : 10, 10 (x, y)
# extent : 444650, 451640, 4631220, 4640510 (xmin, xmax, ymin, ymax)
# coord. ref. : NA
# data source : D:\Temp\novo.asc
# names : novo
### </code>
================================================
Éder Comunello
Agronomist (UEM), MSc in Environ. Sciences (UEM)
DSc in Agricultural Systems Engineering (USP/Esalq)
Brazilian Agricultural Research Corporation (Embrapa)
Dourados, MS, Brazil |<O>|
================================================
GEO, -22.2752, -54.8182, 408m
UTC-04:00 / DST: UTC-03:00
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160218/dd9df494/attachment.html>
Mais detalhes sobre a lista de discussão R-br