[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