Eu estava tentando criar uma imagem rasterizada de um banco de dados de pontos com espaçamento irregular. Os dados parecem-
> 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
Eu quero esses valores 'z' dentro de uma malha que eu criei 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))
Também quero que os valores z sejam atribuídos como 'NA' para os pontos de malha que estão fora dos pontos de dados. Os pontos sobre a malha são assim: https://drive.google.com/file/d/0B6GUNg-8d30vYzlwTkhvaHBFTnc/edit?usp=sharing quando plotar
plot(my_mesh)
points(s100_ras$Y, s100_ras$X, pch="*", col='blue')
O problema é que não tenho certeza de como desenvolver isso, as etapas a seguir não funcionam porque minha grade de malha e pontos de dados não têm a mesma escala !!
library(rgdal)
library(raster)
xyz<-cbind(my_mesh, s100_ras)
r <- rasterFromXYZ(xyz)
image(r)
Se eu tentar fazer uma varredura apenas usando os pontos de dados (sem nenhuma malha), R gera um erro, pois meus dados estão espaçados 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
Além disso, eu estava tentando jogar com a função 'rasterize' (para grades irregulares) do 'pacote raster', mas não conseguia resolver isso :(. Eu sei como interpolar e criar uma grade regular, mas por uma questão de de originalidade, desejo EVITAR a interpolação.É possível fazer uma varredura de pontos de dados espaçados irregularmente sem métodos idw ou kriging?
fonte
SpatialPixelsDataFrame
com otolerance
argumento sugerido (0,916421 no seu caso).Respostas:
Suponho que você queira seus dados de pontos irregulares em uma varredura regular. Nesse caso, rasterize deve funcionar, e os exemplos em? Rasterize mostram como. Aqui está algo baseado em seus dados
fonte
Isso funcionou para mim - a solução foi usar SpatialPixelsDataFrame com o argumento de tolerância sugerido (0,916421 no seu caso):
No entanto, devido ao alto valor de tolerância, a varredura não se encaixa muito bem nos pontos originais. Poderia estar em forma muito melhor.
fonte