r 栅格到多边形显示规则网格,即使单元格具有不同的面积?
r raster to polygon shows a regular grid even if cells had different area?
我正在将栅格转换为多边形。在我的初始栅格中,单元格具有不同的面积,但是当我使用 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")
谢谢!
在您的代码中,您没有指定像元的分辨率,也没有指定栅格或投影的范围。
因此 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 度的像元,因此当您在平面上 "cartesian coordinates" 中绘制它们时,将得到 "square" 个像元。
然而,在地理坐标中,对应于 10x10 度单元格的 "spheroid" 表面的 面积 实际上随纬度而变化(参见此处 https://gis.stackexchange.com/a/29743 and here https://badc.nerc.ac.uk/help/coordinates/cell-surf-area.html以获得解释),如情节中的 "colours" 所示。
如果你想要具有变量 "area" 的多边形,你必须重新投影到 equal-area 投影。有很多:这里我以圆锥等面积为例:
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")
您可以看到多边形的面积如何随纬度减小。
(对于一个非常好的投影入门,你可以看到例如:https://kartoweb.itc.nl/geometrics/Map%20projections/mappro.html)
我正在将栅格转换为多边形。在我的初始栅格中,单元格具有不同的面积,但是当我使用 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")
谢谢!
在您的代码中,您没有指定像元的分辨率,也没有指定栅格或投影的范围。
因此 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 度的像元,因此当您在平面上 "cartesian coordinates" 中绘制它们时,将得到 "square" 个像元。
然而,在地理坐标中,对应于 10x10 度单元格的 "spheroid" 表面的 面积 实际上随纬度而变化(参见此处 https://gis.stackexchange.com/a/29743 and here https://badc.nerc.ac.uk/help/coordinates/cell-surf-area.html以获得解释),如情节中的 "colours" 所示。
如果你想要具有变量 "area" 的多边形,你必须重新投影到 equal-area 投影。有很多:这里我以圆锥等面积为例:
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")
您可以看到多边形的面积如何随纬度减小。 (对于一个非常好的投影入门,你可以看到例如:https://kartoweb.itc.nl/geometrics/Map%20projections/mappro.html)