Saya mencoba membuat gambar raster dari basis data titik yang tidak beraturan. Data terlihat seperti-
> 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
Saya ingin nilai-nilai 'z' ini di dalam mesh yang saya buat
# 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))
Saya juga ingin nilai-z ditetapkan sebagai 'NA' untuk titik-titik mesh yang berada di luar titik data. Poin di atas jala terlihat seperti ini: https://drive.google.com/file/d/0B6GUNg-8d30vYzlwTkhvaHBFTnc/edit?usp=sharing ketika saya merencanakan
plot(my_mesh)
points(s100_ras$Y, s100_ras$X, pch="*", col='blue')
Masalahnya adalah saya tidak yakin bagaimana membangunnya, langkah-langkah berikut ini tidak berfungsi karena grid mesh dan titik data saya tidak memiliki skala yang sama !!
library(rgdal)
library(raster)
xyz<-cbind(my_mesh, s100_ras)
r <- rasterFromXYZ(xyz)
image(r)
Jika saya mencoba membuat raster hanya dengan menggunakan titik data (tanpa mesh apa pun), R melempar kesalahan karena data saya berjarak tidak teratur!
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
Selain itu, saya mencoba untuk bermain dengan fungsi 'rasterize' (untuk grid tidak teratur) dari 'paket raster', tetapi tidak bisa mengatasinya :(. Saya tahu bagaimana cara interpolasi dan membuat grid biasa, tapi demi itu orisinalitas, saya ingin MENGHINDARI interpolasi. Apakah mungkin membuat raster titik data yang tidak beraturan tanpa metode idw atau kriging?
sumber
SpatialPixelsDataFrame
disarankantolerance
(0,916421 dalam kasus Anda).Jawaban:
Saya berasumsi Anda ingin data titik tidak teratur Anda pada raster biasa. Dalam hal itu, rasterize harus berfungsi, dan contoh-contoh di? Rasterize menunjukkan caranya. Ini adalah sesuatu berdasarkan data Anda
sumber
Ini bekerja untuk saya - solusinya adalah menggunakan SpatialPixelsDataFrame dengan argumen toleransi yang disarankan (0,916421 dalam kasus Anda):
Namun, karena nilai toleransi yang tinggi, raster tidak cocok dengan poin aslinya. Bisa pas jauh lebih baik.
sumber