2017-02-17 77 views
1

我正在將柵格轉換爲多邊形。在我的初始柵格中,單元格具有不同的面積,但是當我使用rasterToPolygons轉換爲多邊形並繪製它時,即使初始單元格具有不同的面積,我也會看到等距的網格?即使單元格具有不同的面積,柵格到多邊形也會顯示規則柵格嗎?

這是我的R代碼問題,還是我對預測的理解不清的問題?我該怎麼做來表示面積與細胞面積成正比的多邊形?

library(raster) 
r <- raster(nrow=18, ncol=36) 
r$value <- 1:ncell(r) 
r$area <- as.data.frame(area(r))$layer 

head(as.data.frame(r)) 

ras_to_pol <- rasterToPolygons(r) 
spplot(ras_to_pol, "area", main="Area of initial cells converted to polygons") 

enter image description here

謝謝!

回答

1

在您的代碼中,您沒有指定單元格的分辨率,也沒有指定柵格或投影的範圍。 因此raster默認爲:

extent  : -180, 180, -90, 90 (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 

因爲你正在使用nrow=18, ncol=36你會得到緯度和經度10度兩個單元,因此,「廣場」的細胞,當你繪製他們在「直角座標系」在飛機上。

然而,在地理座標的區域中的「旋轉橢圓體」對應於一個10×10度的細胞實際上與緯度變化的表面的(參見此處https://gis.stackexchange.com/a/29743和這裏https://badc.nerc.ac.uk/help/coordinates/cell-surf-area.html一個解釋),如圖所示由「顏色」在你的情節。

如果你想擁有變量「面積」的多邊形,你必須重新投影到等面積投影。還有很多:在這裏我使用了一個錐形等面積爲例:

ras_to_pol_new <- spTransform(ras_to_pol, CRS("+init=epsg:3410")) 
spplot(ras_to_pol_new, "area", main="Area of initial cells converted to polygons") 

enter image description here

你可以看到多邊形的面積如何隨緯度的降低。 (對於一個非常好的預測引物,你可以看到例如:https://kartoweb.itc.nl/geometrics/Map%20projections/mappro.html

+0

感謝您的解釋!所以問題出現在我正在繪製笛卡爾座標?我應該使用哪種座標系/投影使「形狀」的單元與其面積成比例? – Matifou

+0

嗯,並非真正來自您使用「笛卡爾座標」的事實。更多來自地理投影不能(我認爲)是等面積的事實。要查看「可變區域」,您需要重新投影到等面積投影(請參閱編輯答案)。 – lbusett

+0

真棒,這完全回答了這個問題,非常感謝! – Matifou