Actualmente estoy intentando crear un gráfico de superficie 3D interactivo utilizando plotly en R. Mi conjunto de datos incluye una matriz de Latitud y Longitud y tengo un DEM para la región para la que me gustaría hacer este gráfico de superficie. Sin embargo, no puedo hacer lo mismo.
Tengo un dataframe Points.sp que contiene una lista de Lat/Long junto con los datos de elevación para las áreas donde he muestreado.
> head(Points.sp)
Points Long Lat Elevation
1 NA NA NA
2 Nair212 NA NA NA
4 CESF543 75.72130 12.88470 876.000
5 CESF1587 75.93559 11.93745 1494.523
6 tysoni_WILD15AMP650 75.82200 12.38000 1051.000
7 tysoni_SDBDU201274 75.65570 12.22010 1176.000
Esto es lo que he probado:
Points_new <- data.frame(Points.sp$Long, Points.sp$Lat, Points.sp$Elevation)
Points_new <- as.matrix(Points_new)
p <- plot_ly(z = ~Points_new) %>% add_surface()
p
En el gráfico anterior, he cargado manualmente los valores de elevación para cada uno de estos puntos, pero el problema es que necesito estos puntos en un DEM para la región, y cada vez que trato de cargar el DEM, me da un error diciendo - 'z' debe ser una matriz numérica.
El DEM aquí es un raster para la región y lo obtuve del conjunto de datos SRTM y lo recorté para que contuviera sólo mi región.
Enlace a DATOS aquí (Contiene un subconjunto del MDE para la región requerida)
elev <- raster("E:\\MasterThesis\\Absence Approach\\Data\\Elevation_Data\\alt\\alt")
cr1 <- crop(elev, extent(WG.new)) #WG.new is a mask for a smaller region
newelev<- mask(cr1, WG.new)
> newelev
class : RasterLayer
dimensions : 1577, 624, 984048 (nrow, ncol, ncell)
resolution : 0.008333334, 0.008333334 (x, y)
extent : 72.87501, 78.07501, 8.11667, 21.25834 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs
data source : in memory
names : alt
values : -14, 2625 (min, max)
attributes :
ID COUNT
from: -431 2
to : 8233 1
Si intento cargar sólo el MDE convirtiendo el ráster en una matriz, puedo ver el MDE, pero ahora necesito añadir la Lat y Long de las localizaciones del marco de datos Points.sp.
newelev <- as.matrix(newelev)
p <- plot_ly(z = ~newelev) %>% add_surface()
p
¿Alguna sugerencia? Lo ideal sería que los puntos fueran pequeños círculos en el MDE de la región, junto con el MDE suavizado y estirado.