8 votos

Guardar GeoTIFF desde R

Tengo un archivo raster y me gustaría guardarlo para poder abrirlo con una tabla de atributos en ArcMap.

Cuando utilizo el comando writeRaster(raster, "test_output11", format = "GTiff") No tengo los archivos auxiliares como .tfw , .xml , .ovr , .cpg , .dbf .

¿Debo producir todos los archivos manualmente cambiando format = "GTiff" ? No encuentro un comando general para ello.

11voto

gabor Puntos 612

Estos archivos se generan en ArcGIS. Son archivos auxiliares para georreferenciación y visualización, no forman parte de GTiff como .shx o .dbf están en un shapefile.

  • .tfw es el archivo ESRI World
  • .ovr son capas piramidales
  • .xml es el aspecto del esquema y el histograma
  • .cpg es para la interpretación TIFF.
  • .dbf es para la tabla de atributos raster (gracias a @radouxju)

Puede añadir .tfw utilizando GDAL a través del paquete raster:

library(raster)

r <- raster()
values(r) <- sample(x = 1:10,size = ncell(r),replace = T)

writeRaster(r,'test.tif',options=c('TFW=YES'))

Consulte otras opciones de Formato de archivo GDAL GeoTIFF para personalizar su exportación.

1voto

obrl_soil Puntos 53

Necesita ratify su trama y darle algunos atributos, a continuación, escribir en formato GTiff. Se escribirá tanto un archivo .tif como un archivo .tif.aux.xml, y ArcGIS puede utilizar este último para derivar la simbología (lamentablemente, QGIS no...). Ejemplo:

library(raster)

set.seed(1)
r <- raster(matrix(sample(c(1, 7:9, 19), 100, replace=TRUE), 10))

r <- ratify(r)
levels(r)[[1]]$NAME <- letters[1:nrow(levels(r)[[1]])]
# check results with levels(r)[[1]]

writeRaster(r, 'C:/DATA/r.tif')

Tenga en cuenta que no tiene mucho sentido hacer esto con datos continuos, esas superficies deben reclasificarse primero.

Si desea un .dbf RAT que Arc recogerá automáticamente, esto funcionará:

# datatype must be integer and raster must be single band
writeRaster(r, 'C:/DATA/r_2.tif', datatype = 'INT2S')

library(tidyverse)

as.data.frame(table(as.vector(r)), 
                       stringsAsFactors = FALSE) %>%
  rename(VALUE = Var1, COUNT = Freq) %>%
  # you can add some more cols here, 
  # just keep nchar() < 254 and colnames < 8 chars:
  mutate(VALUE = as.integer(VALUE)) %>% 
  foreign::write.dbf(., 'C:/DATA/r_2.tif.vat.dbf', 
            factor2char = TRUE, max_nchar = 254)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X