Tôi đã cố gắng tạo một hình ảnh raster từ cơ sở dữ liệu điểm cách đều nhau. Dữ liệu trông như-
> 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
Tôi muốn các giá trị 'z' này trong một lưới mà tôi đã tạo bởi
# 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))
Tôi cũng muốn các giá trị z được gán là 'NA' cho các điểm lưới nằm ngoài các điểm dữ liệu. Các điểm trên lưới trông như thế này: https://drive.google.com/file/d/0B6GUNg-8d30vYzlwTkhvaHBFTnc/edit?usp=shaming khi tôi vẽ
plot(my_mesh)
points(s100_ras$Y, s100_ras$X, pch="*", col='blue')
Vấn đề là tôi không chắc cách xây dựng dựa trên điều này, các bước sau đây không hoạt động vì lưới lưới và các điểm dữ liệu của tôi không cùng tỷ lệ !!
library(rgdal)
library(raster)
xyz<-cbind(my_mesh, s100_ras)
r <- rasterFromXYZ(xyz)
image(r)
Nếu tôi cố gắng tạo raster chỉ bằng cách sử dụng các điểm dữ liệu (không có lưới), R sẽ xuất hiện lỗi do dữ liệu của tôi cách đều nhau!
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
Hơn nữa, tôi đã cố gắng chơi với chức năng 'rasterize' (đối với lưới không đều) của 'gói raster', nhưng không thể tìm ra cách nào với nó :(. Tôi biết cách nội suy và tạo lưới thông thường, nhưng vì lợi ích về tính nguyên bản, tôi muốn AVOID nội suy. Có thể tạo một raster các điểm dữ liệu cách đều nhau mà không cần các phương thức idw hoặc kuceing không?
SpatialPixelsDataFrame
với tolerance
đối số được đề xuất (0.916421 trong trường hợp của bạn).