Estaba tratando de hacer una imagen de trama de una base de datos de puntos espaciados irregularmente. Los datos se ven como-
> head(s100_ras)
x y z
1 267573.9 2633781 213.29545
2 262224.4 2633781 69.78261
3 263742.7 2633781 51.21951
4 259328.4 2633781 301.98413
5 264109.8 2633781 141.72414
6 255094.8 2633781 88.90244
Quiero estos valores 'z' dentro de una malla que creé por
# Create a fine mesh grid
my_mesh=expand.grid(seq(min(s100_ras$Y),max(s100_ras$Y),l=100),
seq(min(s100_ras$X),max(s100_ras$X),l=100))
También quiero que los valores z se asignen como 'NA' para esos puntos de malla que están fuera de los puntos de datos. Los puntos sobre la malla se ven así: https://drive.google.com/file/d/0B6GUNg-8d30vYzlwTkhvaHBFTnc/edit?usp=sharing cuando trazo
plot(my_mesh)
points(s100_ras$Y, s100_ras$X, pch="*", col='blue')
¡El problema es que no estoy seguro de cómo construir sobre esto, los siguientes pasos no funcionan porque mi malla de malla y los puntos de datos no son de la misma escala!
library(rgdal)
library(raster)
xyz<-cbind(my_mesh, s100_ras)
r <- rasterFromXYZ(xyz)
image(r)
Si trato de hacer un ráster simplemente usando los puntos de datos (sin ninguna malla), R arroja un error ya que mis datos están espaciados irregularmente.
library(sp)
s100_ras <- data.frame(expand.grid(x = s100_ras$Y, y = s100_ras$X),
z = as.vector(s100_ras$mean))
coordinates(s100_ras) <- ~x+y
proj4string(s100_ras) <- CRS("+proj=utm +zone=46 +datum=WGS84")
gridded(s100_ras) = TRUE
suggested tolerance minimum: 0.916421
Error in points2grid(points, tolerance, round) :
dimension 1 : coordinate intervals are not constant
Además, estaba tratando de jugar con la función 'rasterizar' (para cuadrículas irregulares) del 'paquete ráster', pero no pude solucionarlo :(. Sé cómo interpolar y hacer una cuadrícula regular, pero por el bien de originalidad, quiero EVITAR la interpolación. ¿Es posible hacer una trama de puntos de datos espaciados irregularmente sin métodos idw o kriging?
fuente
SpatialPixelsDataFrame
eltolerance
argumento sugerido (0.916421 en su caso).Respuestas:
Supongo que quiere sus datos de puntos irregulares en un ráster regular. En ese caso, rasterizar debería funcionar, y los ejemplos en? Rasterizar muestran cómo. Aquí hay algo basado en sus datos
fuente
Esto funcionó para mí: la solución fue usar SpatialPixelsDataFrame con el argumento de tolerancia sugerido (0.916421 en su caso):
sin embargo, debido al alto valor de tolerancia, el ráster no se ajusta muy bien a los puntos originales. Podría estar en forma mucho mejor.
fuente