1 câu hỏi
Tôi đã gặp cảnh báo khi sử dụng hàm projectRaster () trong gói raster trong R. Một ví dụ có thể tái tạo đầy đủ được dán bên dưới.
Warning message:
In rgdal::rawTransform(projto_int, projfrom, nrow(xy), xy[, 1], :
33940 projected point(s) not finite
Câu hỏi của tôi là: Đây có phải là một vấn đề tôi cần khắc phục nếu tôi đang làm việc với dữ liệu trên mặt đất? Nói cách khác là dữ liệu "bị mất". Đây sẽ là một vấn đề lớn đối với tôi nếu nó là. Nếu đó là trường hợp, bạn có biết nếu tôi có thể sửa nó?
Tôi đã tìm kiếm một giải pháp cho vấn đề này trực tuyến và tìm thấy một số đề cập đến nó ở đây , đây & đây nhưng tôi nghĩ không có câu trả lời nào phù hợp cho vấn đề này.
2. Tải thư viện raster
library(raster)
3. Đầu tiên tạo bản đồ thế giới (lat lat) dài, với hằng số trong mỗi ô lưới
Tôi đang đặt một hằng số trong mỗi ô lưới để xem liệu tôi có thể chẩn đoán vấn đề về nơi cảnh báo có khả năng ảnh hưởng đến dữ liệu hay không, nếu có.
rastertest.longlat<-raster(ncol=360, nrow=180)
values(rastertest.longlat)<-c(rep(1,n=180*360))
4. Nếu bạn chiếu lại bản đồ (lat lat) lên một lưới diện tích bằng nhau, nó sẽ tạo ra thông báo cảnh báo
rastertest.eck4<-projectRaster(rastertest.longlat, res=c(100000,100000), crs="+proj=eck4",method="ngb", over=T)
Warning message:
In rgdal::rawTransform(projto_int, projfrom, nrow(xy), xy[, 1], :
33940 projected point(s) not finite
Tôi nghĩ rằng thông điệp này về cơ bản là nói rằng việc chiếu lại thất bại đối với một số ô lưới.
5. Nhưng nếu bạn vẽ ra hai bản đồ, có vẻ như cảnh báo này không gây ra bất kỳ vấn đề nào cho dữ liệu
Đó là bạn không thấy bất kỳ khoảng trống trắng nào trong dữ liệu được vẽ. Tôi đoán là các tế bào bị mất là các tế bào không trên mặt đất, ở đỉnh và rìa của phạm vi thế giới. Có ý kiến gì không?
par(mfrow=c(2,1))
plot(rastertest.longlat, col="blue")
data(wrld_simpl)
wrld <- spTransform(wrld_simpl, CRS('+proj=longlat'))
plot(wrld, add=TRUE)
plot(rastertest.eck4, col="blue")
wrld <- spTransform(wrld_simpl, CRS('+proj=eck4'))
plot(wrld, add=TRUE)