Raster chiếu lại trong R: đưa ra cảnh báo rằng (các) điểm được chiếu không hữu hạn?


8

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)

nhập mô tả hình ảnh ở đây

Câu trả lời:


8

Câu trả lời ngắn: không sao, và bạn có thể cảm ơn rastervì đã tiếp tục hoàn thành thay vì thất bại và cho bạn biết rằng một số dữ liệu đã bị mất.

Câu trả lời dài:

nó sẽ phụ thuộc vào hình chiếu, và trong trường hợp này có lẽ nó chỉ nằm ở "các cạnh". cạnh là gì và nó biểu hiện như thế nào cho một thể hiện nhất định của một họ chiếu nhất định là phần "phụ thuộc".

Bạn có thể thấy rằng đó không phải là điểm trung tâm của các ô bị mất:

tpoints <- rgdal::project(coordinates(rastertest.longlat), "+proj=eck4")
sum(is.na(tpoints))
#[1] 0

Nhưng nó có lẽ là các góc, và có thể là các cạnh của rất tế bào. Điều này có lẽ cho thấy rằng các dự án raster dựa trên phạm vi của các tế bào, không chỉ các điểm trung tâm của chúng.

 rgdal::project(as.matrix(expand.grid(x = c(-180, 0, 180), y = c(-90,0, 90))), "+proj=eck4")

Tôi thừa nhận tôi đã dự đoán rằng đó là nơi mà các giá trị còn thiếu đến từ đó, vì vậy có lẽ projectRastersẽ mở rộng ra xa hơn một chút về phía bắc và phía nam? Đặt giá trị ở đó cho vĩ độ ngoài phạm vi -90/90 và bạn bắt đầu nhận được cảnh báo. Tôi sẽ theo dõi nếu tôi có cơ hội khám phá thêm.

Cuối cùng, có lẽ bạn nên sử dụng tham số ellipsoid hoặc datum rõ ràng, tức là "+ proj = eck4 + ellps = WGS84".


Cảm ơn! Tôi chỉ đặt lại phạm vi của raster ban đầu thành nhỏ hơn / lớn hơn +/- 70 độ: rastertest.longlat <- raster (ncol = 4320, nrow = 2160, xmn = -180, xmx = 180, ymn = -70 , ymx = 70) và sau đó bị từ chối bằng cách sử dụng: rastertest.eck4 <-projectRaster (rastertest.longlat, res = c (100000,100000), crs = "+ proj = eck4, method =" ngb ", over = T). cảnh báo hoàn toàn biến mất, vì vậy tôi nghĩ rằng tất cả các giá trị thiếu phải xảy ra +/- ~ 70 độ.
mike

@mike Tôi xin lỗi nhưng đây không phải là giải pháp chấp nhận được, mất dữ liệu và thông tin không phải là giải pháp. Qgis và Arcgis có thể thực hiện thao tác này mà không gặp vấn đề gì, phải có một số vấn đề với projectRaster. Tôi hy vọng nhà phát triển có thể kêu vang.
Herman Toothrot

() Tôi hoan nghênh bạn chứng minh chính xác những gì QGIS và Arc làm trong trường hợp này, suy đoán không thực sự hữu ích. Chúng tôi có quyền truy cập vào chính xác những gì đang diễn ra ở R ở đây, không có vấn đề thực sự.
mdsumner

5

Đây không phải là một câu trả lời đầy đủ cho câu hỏi ban đầu của tôi, về tất cả các chi tiết nghiệt ngã, nhưng nó cung cấp cho người đọc quan tâm ở đâu đó để đi.

Trong dữ liệu nói chung bị mất và bị bóp méo trong quá trình từ chối các trình quét từ longlat đến các phép chiếu diện tích bằng nhau. Điều này có thể là vấn đề cho phân tích toàn cầu. Nếu bạn có thể lấy dữ liệu của mình ở định dạng vector, tốt hơn là nên sử dụng lại định dạng đó.

Đây là một tài liệu tham khảo về vấn đề chung. Và đây là một cố gắng để định lượng sự mất mát. Mong rằng sẽ giúp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.