convertir la matrice de raster dans la R
J'ai une matrice de données avec les coordonnées spatiales et d'une seule variable. La résolution spatiale est de 1000 mètres.
> str(dat1)
> List of 3
> $ x: num [1:710] 302340 303340 304340 305340 306340 ...
> $ y: num [1:1241] 5431470 5432470 5433470 5434470 5435470 ...
> $ z: num [1:710, 1:1241] 225 225 225 225 225 ...
Je veux le convertir en format raster.
> dat1$x[1:10]
> [1] 302339.6 303339.6 304339.6 305339.6 306339.6 307339.6 308339.6 309339.6 310339.6 311339.6
> dat1$y[1:10]
> [1] 5431470 5432470 5433470 5434470 5435470 5436470 5437470 5438470 5439470 5440470
J'ai utilisé le code suivant pour le faire. Mais la résolution que je reçois n'est pas la même chose avec ce que j'ai. Une meilleure façon d'obtenir la même résolution avec mes données réelles?
> r <-raster(
dat1$z,
xmn=range(dat1$x)[1], xmx=range(dat1$x)[2],
ymn=range(dat1$y)[1], ymx=range(dat1$y)[2],
crs=CRS("+proj=utm +zone=11 +datum=NAD83")
)
> r
class : RasterLayer
dimensions : 710, 1241, 881110 (nrow, ncol, ncell)
resolution : 571.3135, 1746.479 (x, y)
extent : 302339.6, 1011340, 5431470, 6671470 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=11 +datum=NAD83
data source : in memory
names : layer
values : 13.65059, 248.6229 (min, max)
- Ces choses sont beaucoup plus facile pour les gens de débogage si vous faites des petits exemples et de nous donner le code pour les faire.
Vous devez vous connecter pour publier un commentaire.
Essayez de lire l'aide pour la trame. Lors de la création d'un raster à partir d'une matrice, le sens des lignes et des colonnes n'est pas ce que vous pensez qu'elle est. Que vous nourrissez un 1241x710 de la matrice, mais en prenant le max et le min de la mauvaise vecteurs.
Essayez ce qui suit:
Nice pixels carrés. Maintenant, créez votre raster:
Totalement pixels NON carrés. Et si vous regardez attentivement, la matrice de rotation de 90 degrés à partir de l'image de l'intrigue. Ou transposée ou quelque chose.
Solution: il suffit de créer la trame de l'x,y,z de la liste:
Pixels carrés, de la même façon en rond que l'image de l'intrigue, et la résolution est maintenant ce que vous attendez:
m <- t(m); raster(m[nrow(m):1,])
. Source: gis.stackexchange.com/questions/60387/...Je pense que vous pourriez ne comprennent pas ce que signifie une résolution dans ce contexte. C'est tout simplement la mesure divisé par le nombre de cellules à l'intérieur de lignes et de colonnes. Par exemple, dans votre cas, la résolution a été calculé comme ceci:
Donc, ce que cela signifie, c'est que vous avez 1241 places dans chaque rangée, et depuis chaque ligne va de
1011340
à302339.6
unités (je pense mètres dans ce cas), de chaque rectangle est de 571 à travers. De même, chaque rectangle est 1746 à partir du haut vers le bas.Si vous vous attendez à ce que chaque raster point à un carré de côté égal à 1000 mètres, ne devrait-elle pas l'ensemble d'être
1241*1000
(au lieu de(1011340 - 302339.6)
)?