- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试做与这个问题相同的事情,Cartogram + choropleth map in R ,但从 SpatialPolygonsDataFrame 开始并希望以相同类型的对象结束。
我可以将对象保存为 shapefile,使用 scapetoad ,重新打开它并转换回来,但我宁愿将它全部放在 R 中,以便该过程完全可重现,并且我可以自动编码数十种变体。
我已经在 github 上 fork 了 Rcartogram 代码并添加了我迄今为止的努力 here .
本质上,这个演示所做的是在 map 上创建一个 SpatialGrid,查找网格每个点的人口密度并将其转换为 cartogram()
所需格式的密度矩阵。工作。到现在为止还挺好。
但是,如何根据 cartogram()
的输出对原始 map 点进行插值?
这里有两个问题。第一种是将 map 和网格放入相同的单位以允许插值。第二个是访问每个多边形的每个点,对其进行插值,并保持它们的顺序正确。
网格以网格单位为单位, map 以投影单位为单位(在示例 longlat 的情况下)。要么必须将网格投影到 longlat 中,要么将 map 投影到网格单位中。我的想法是制作一个假的 CRS 并将其与 spTransform()
一起使用。函数在 package(rgdal)
,因为这会以最小的麻烦处理对象中的每个点。
访问每个点都很困难,因为它们在 SpPDF 对象中有几层:对象>多边形>多边形>线条>我认为坐标。任何想法如何在保持整体 map 结构完整的同时访问这些?
最佳答案
这个问题可以用 getcartr
解决包装,可在 Chris Brunsdon's GitHub 上获得,正如 this 中精彩地解释的那样博客文章。quick.carto
函数正是你想要的——需要一个 SpatialPolygonsDataFrame
作为输入并具有 SpatialPolygonsDataFrame
作为输出。
在此处复制博客文章中示例的精髓,以防链接失效,并使用我自己的风格混合并修复了拼写错误:
( Shapefile ; World Bank population data )
library(getcartr)
library(maptools)
library(data.table)
world <- readShapePoly("TM_WORLD_BORDERS-0.3.shp")
#I use data.table, see blog post if you want a base approach;
# data.table wonks may be struck by the following step as seeming odd;
# see here: http://stackoverflow.com/questions/32380338
# and here: https://github.com/Rdatatable/data.table/issues/1310
# for some background on what's going on.
world@data <- setDT(world@data)
world.pop <- fread("sp.pop.totl_Indicator_en_csv_v2.csv",
select = c("Country Code", "2013"),
col.names = c("ISO3", "pop"))
world@data[world.pop, Population := as.numeric(i.pop), on = "ISO3"]
#calling quick.carto has internal calls to the
# necessary functions from Rcartogram
world.carto <- quick.carto(world, world$Population, blur = 0)
#plotting with a color scale
x <- world@data[!is.na(Population), log10(Population)]
ramp <- colorRampPalette(c("navy", "deepskyblue"))(21L)
xseq <- seq(from = min(x), to = max(x), length.out = 21L)
#annoying to deal with NAs...
cols <- ramp[sapply(x, function(y)
if (length(z <- which.min(abs(xseq - y)))) z else NA)]
plot(world.carto, col = cols,
main = paste0("Cartogram of the World's",
" Population by Country (2013)"))
关于r - 在 SpatialPolygonsDataFrame 对象上使用 Rcartogram,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18419617/
不打算编辑拓扑,只是将所有多边形聚合到一个类型为 SpatialPolygonsDataFrame (spdf) 的 sp 对象中。每个 spdf 只有一个多边形。 数据(dropbox link t
我希望通过属性对 SpatialPolygonsDataFrame 进行子集化,但我希望允许它返回一个空的 SpatialPolygonsDataFrame。 如果我们将 SpatialPolygon
只有我有从 SpatialPolygonsDataFrame 中提取多边形坐标的问题吗?目的?我能够提取对象的其他插槽( ID , plotOrder )但不能提取坐标( coords )。我不知道我
我有一个 SpatialPolygonsDataFrame我通过使用 readOGR 读取 shapefile 创建的在 rgdal包裹。我正在尝试使用它来使用 spsample 生成采样网格在 sp
我有两个 SpatialPolygonsDataFrame文件:dat1、dat2 extent(dat1) class : Extent xmin : -180 xmax
如何获取 polys 中每个多边形的 bbox? pp , , , , , , , ,
使用可用的 shapefile here我正在尝试合并苏丹和南苏丹的多边形,以便在 2010 年获得苏丹的边界。我在 R 中提供 shapefile 的代码是 library(rgdal) afric
我想合并一个 SpatialPolygonsDataFrame : # From https://www.census.gov/geo/maps-data/data/cbf/cbf_state.htm
我想使用 leafletR::leaflet 创建分区统计图。我的数据位于 SpatialPolygonsDataFrame 中,我想选择要绘制的特定列。 使用 sp::spplot,这很容易,因为参
我有一个使用以下命令绘制的 SpatialPolygonsDataFrame: spplot(milanoNILNew, "percPolVita",at = c(0,0.0696,0.08979,0
我正在尝试做与这个问题相同的事情,Cartogram + choropleth map in R ,但从 SpatialPolygonsDataFrame 开始并希望以相同类型的对象结束。 我可以将对
当我有一个 SpatialPolygonsDataFrame 对象时,我知道我可以通过两种方式获取数据: spatial_df@data$column spatial_df$column 但是我不明白
我正在寻找一种从 SpatialPolygons 列表创建 SpatialPolygonsDataFrame 的方法? 下面是一个多边形列表示例,应从中创建包含列表中所有多边形的 SpatialPol
我有一堆我在县级绘制的数据,without borders .我想添加州界。我有一个状态 shapefile(多边形),但是 spplot似乎没有任何方法可以添加到之前的 map 之上。有没有办法在不
使用另一个可能复杂的 SpatialPolygon 在 R 中保留 @data 来裁剪(剪辑)复杂的 SpatialPolygonsDataFrame 的最快方法是什么?我知道两种方法(如下所示)。
我想知道是否可以做到这一点 R 。 我有一个数据作为SpatialLinesDataFrame,另一个数据作为spatialPolygonDataFrame。是否可以叠加这两个数据? 当我尝试覆盖这些
我有一个西类牙北部城镇的形状文件,我必须加入组(西类牙语中的自治市或 comarcas)。我已经使用 sf 包中的 st_union 成功加入了它们(每个都是它们自己的具有单个多边形的 Spatial
以下是用于重现目的的数据: structure(list(countyfp10 = c(1, 1, 1, 1, 3, 3, 3, 3, 5, 5, 5, 5, 7, 7, 7, 7), id =
说我有两组形状文件覆盖同一区域,并且经常但不总是共享边界,例如美国县和 PUMA。我想定义一个新的多边形比例,它使用 PUMA 和县作为原子构建块,即两者都不能被拆分,但我仍然希望尽可能多的单位。这是
背景 我对使用 gSimplify 简化多边形很感兴趣。功能可通过 rgeos 获得包裹。 可重现的例子 可以使用以下代码生成可重现的示例: # Data sourcing -------------
我是一名优秀的程序员,十分优秀!