J'essayais de créer une image raster à partir d'une base de données de points espacés de manière irrégulière. Les données ressemblent à
> 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
Je veux ces valeurs «z» dans un maillage que j'ai créé par
# 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))
Je souhaite également que les valeurs z soient attribuées en tant que «NA» pour les points de maillage situés en dehors des points de données. Les points sur le maillage ressemblent à ceci: https://drive.google.com/file/d/0B6GUNg-8d30vYzlwTkhvaHBFTnc/edit?usp=sharing lorsque je trace
plot(my_mesh)
points(s100_ras$Y, s100_ras$X, pch="*", col='blue')
Le problème est que je ne sais pas comment construire sur cela, les étapes suivantes ne fonctionnent pas parce que ma grille maillée et mes points de données ne sont pas de la même échelle !!
library(rgdal)
library(raster)
xyz<-cbind(my_mesh, s100_ras)
r <- rasterFromXYZ(xyz)
image(r)
Si j'essaie de créer un raster en utilisant simplement les points de données (sans aucun maillage), R génère une erreur car mes données sont espacées de manière irrégulière!
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
De plus, j'essayais de jouer avec la fonction 'rasterize' (pour les grilles irrégulières) de 'raster package', mais je ne pouvais pas y arriver :(. Je sais comment interpoler et créer une grille régulière, mais pour le bien d'originalité, je veux ÉVITER l'interpolation. Est-il possible de faire un raster de points de données irrégulièrement espacés sans idw ou méthodes de krigeage?
la source
SpatialPixelsDataFrame
avec l'tolerance
argument suggéré (0.916421 dans votre cas).Réponses:
Je suppose que vous voulez vos données ponctuelles irrégulières sur un raster régulier. Dans ce cas, la pixellisation devrait fonctionner et les exemples de la? Pixellisation montrent comment. Voici quelque chose basé sur vos données
la source
Cela a fonctionné pour moi - la solution était d'utiliser SpatialPixelsDataFrame avec l'argument de tolérance suggéré (0,916421 dans votre cas):
cependant, en raison de la valeur de tolérance élevée, le raster ne s'adapte pas très bien aux points d'origine. Pourrait être beaucoup mieux adapté.
la source