【发布时间】:2014-01-30 16:12:36
【问题描述】:
我的目标是在 R 中创建一个 3D 可视化。我有一个柏林市区 (Ortsteile) 的 shapefile,并希望将值(居民/平方公里)突出显示为 z 值。我已经将 shapefile 实现到 R 中,并为 desnity(“Einwohnerd”)的值着色,如下所示:
library(rgdal)
library(sp)
berlin=readOGR(dsn="C...etc.", layer="Ortsteile")
berlin@data
col <- rainbow(length(levels(berlin@data$Name)))
spplot(berlin, "Einwohnerd", col.regions=col, main="Ortsteil Berlins", sub="Datensatz der Stadt Berlin", lwd=.8, col="black")
如何将某个多边形(市区)引用到 z 值(居民/km²),如何突出显示这个 z 值?
希望有人能给出答案! 最好的问候 某人
感谢您的回答,但我仍在努力寻找将密度用作 z 值的最佳方法,以便创建 3D 模型。我发现不可能使用形状的多边形,但可以栅格化多边形并使用矩阵进行不同的透视和旋转。
这是代码,但最终的 3D 可视化看起来不够清晰和不够好。也许最好以另一种方式计算 z 值,这样第一个值就不会开始那么高,或者使用多边形的中心,而不是在 z 方向上绘制一个列:
library(rgdal)
library(sp)
setwd("C:\\...")
berlin=readOGR(dsn="C:\\...\\Ortsteile", layer="Ortsteile")
col <- rainbow(length(levels(berlin@data$Name)))
spplot(berlin, "Einwohnerd", col.regions=col, main="Ortsteil Berlins",
sub="Datensatz der Stadt Berlin", lwd=.8, col="black")
library(raster)
raster <- raster(nrows=100, ncols=200, extent(berlin))
test <- rasterize(berlin, raster, field="Einwohnerd")
persp(test, theta = 40, phi = 40, col = "gold", border = NA, shade = 0.5)
for(i in seq(0,90,10)){
persp(test, theta = 40, phi = i, col = "gold", border = NA, shade = 0.5)
}
library(rgl)
library(colorRamps)
mat <- matrix(test[], nrow=test@nrows, byrow=TRUE)
image(mat)
persp3d(z = mat, clab = "m")
persp3d(z = mat, col = rainbow(10),border = "black")
persp3d(z = mat, facets = FALSE, curtain = TRUE)
【问题讨论】:
-
如果您将 shapefile 在线发布到某个地方(例如 Dropbox)并提供链接,您更有可能获得帮助。如果您的人口密度数据位于单独的文件中,您也应该提供该文件。您是在尝试创建 3 维地图(ala Google 地球),还是根据 z 值对多边形进行着色的等值线地图?
-
这里有一个链接:dropbox.com/sh/r35joqzrq5jnhfp/v_jq90etOM 密度的信息在那里。最后,我尝试使用基于值 Z 着色的多边形创建地图 :-) 谢谢
标签: r 3d visualization