Loading [MathJax]/extensions/TeX/mathchoice.js

1 votos

Trazar GeoTIFF utilizando tm_rgb del paquete tmap de R

He exportado un objeto raster de QGIS a formato GeoTIFF y lo he importado a R como un raster brick utilizando la función brick() del paquete raster. El archivo es demasiado grande para compartirlo, pero se importa bien y parece tener cuatro capas, que yo interpreto como R, G, B y alfa.

class      : RasterBrick 
dimensions : 4895, 4333, 21210035, 4  (nrow, ncol, ncell, nlayers)
resolution : 100, 100  (x, y)
extent     : 357310.5, 790610.5, 6299190, 6788690  (xmin, xmax, ymin, ymax)
crs        : +proj=utm +zone=51 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs 
source     : C:/_Work/_Research/xxxx/QGIS/190617.Fr.Grv.tif 
names      : X190617.Fr.Grv.1, X190617.Fr.Grv.2, X190617.Fr.Grv.3, X190617.Fr.Grv.4 
min values :                0,                0,                0,                0 
max values :              255,              255,              255,              255 

La imagen se traza bien y rápidamente utilizando el trazarRGB( ) a partir de raster, pero la rejilla automática es bastante mala, así que estaba buscando un paquete de trazado más agradable. He instalado el paquete tmap R y utilicé lo siguiente para intentar trazar mi "ladrillo".

tmap_options(max.raster = c(plot = 21210035, view = 21210035))
tm_shape(Brick) + tm_raster()

Este comando funciona bien (tarda varios minutos) en procesarse y produce una disposición 4x4 de las cuatro bandas del ladrillo en una escala nominal (0-300), con la banda 4 siendo toda 255 (supongo que el valor debería ser 1 para alfa ).

Output from tm_raster()

A continuación, intento

tm_shape(Brick) + tm_rgb()

Pero esto da lugar a un error como el siguiente

Error in x[, 4] : subscript out of bounds

Lo que probablemente esté relacionado con que los cuatro de la banda sean 255. ¿Hay alguna opción o solución para resolver este problema como me gusta bastante el aspecto de tmap() para trazar datos de imagen.

1voto

clueless Puntos 12

Pruebe tm_shape(Brick) + tm_rgb(r=1, g=2, b=3) o cualquier otra combinación para el esquema RGB.

0voto

Choupouli Puntos 6

Mientras escribía esto se me ocurrió la idea... quizás simplemente eliminar la capa alfa utilizando la función dropLayer() ¿función? Lo hago utilizando

Brick <- dropLayer(Brick,4)

Y ahora tm_rgb() funciona bien, aunque es significativamente más lento que trazarRGB() . ¿Quizás haya por ahí una solución mejor que pueda acelerar las cosas?

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