2015-02-06 93 views
0

如果我使用plot()繪製GIS柵格圖像,然後使用points()在圖像上添加一些點:例如,以下代碼調整大小繪圖輸出會導致柵格和點錯位

in_rast_str <- "PET_eclp.tif" 
in_rast <- raster(in_rast_str) 
selected_cells <- choose_points(in_rast_str,10,30) 
plot(in_rast) 
points(selected_cells[,1],selected_cells[,2]) 

初始輸出呈現正確。但是,如果我然後在導出窗口或RStudio的縮放窗口中調整繪圖大小,則點和底層柵格相對於彼此移位並且變得不對齊。

這是RStudio還是R的問題? 我猜測這可能是一個錯誤,而不是我正在做一些明顯錯誤的事情。

更新...

下面是一些例子: original plot

和相同的情節,但調整

enter image description here

+0

我不知道長寬比與此有什麼關係? – 2015-02-17 13:15:08

+0

謝謝羅馬。我認爲你是在正確的軌道上,它與縱橫比有關。但我不認爲這是完整的故事。我認爲這與柵格被重新縮放有關,但繪製的點仍然保持原始尺寸。在我添加到帖子的示例圖片中,您可以看到不僅點的位置發生了變化,而且它們的大小也隨之改變。所以它看起來像是一個縮放問題,而不僅僅是一個縱橫比。 – dww 2015-02-17 14:15:32

+1

我認爲這件事很熟悉。前一段時間我問了同一個問題:http://stackoverflow.com/questions/5977419/ploting-artefact-with-points-over-raster – 2015-02-17 14:24:21

回答

1

raster這個問題一直煩我年份。

這並不完全回答你的問題,但rasterVis提供了一個非常令人滿意的(對我來說)解決方法。

library(rasterVis) 
r <- raster(matrix(runif(100), 10)) 
xy <- xyFromCell(r, which(values(r) > 0.9)) 

levelplot(r, margin=FALSE) + layer(sp.points(xy, pch=20, cex=2, col=1)) 

enter image description here

調整大小和縮放周圍像你一樣多 - 點會堅持正確的細胞。

+2

@mdsumner已經鑽好了這個問題,它是點()導致熱血。 http://stackoverflow.com/a/5985523/322912 – 2015-02-17 14:27:40

+0

@羅曼 - 感謝,只是看到你鏈接的帖子。很高興知道! (但在大多數情況下,我會堅持使用'rasterVis'!) – jbaums 2015-02-17 14:28:39

相關問題