2017-02-17 75 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