6 votos

Crear un mapa topográfico en 3D con ubicaciones marcadas en el mapa utilizando R

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

enter image description here

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

enter image description here

¿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.

-2voto

lewis Puntos 1178

z' debe ser una matriz numérica. Tal vez usted necesita para establecer la matriz en el número.

¿Convertir su marco de datos dat2 en matriz con la función as.matrix()? Tengo el ejemplo de una pregunta sobre el flujo de la pila

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