我试图在这个问题中做同样的事情,在R中的Cartogram + choropleth map,但是从SpatialPolygonsDataFrame开始并希望最终得到相同类型的对象.
我可以将对象保存为shapefile,使用scapetoad,重新打开它并转换回来,但我宁愿将它全部放在R中,以便程序完全可重现,这样我就可以自动编写几十种变体.
我已经在github上分配了Rcartogram代码,并在此处添加了我的努力.
本演示的基本内容是在地图上创建一个SpatialGrid,在网格的每个点查找人口密度,并将其转换为cartogram()处理所需格式的密度矩阵.到现在为止还挺好.
但是,如何根据输出来插入原始地图点cartogram()?
这里有两个问题.第一种是将地图和网格放入相同的单位以允许插值.第二种是访问每个多边形的每个点,对其进行插值,并使它们保持正确的顺序.
网格以网格为单位,地图以投影单位表示(在示例longlat的情况下).必须将网格投影到longlat中,或将地图投影到网格单元中.我的想法是制作一个伪CRS并将其与spTransform()函数一起使用package(rgdal),因为它可以轻松处理对象中的每个点.
访问每个点很困难,因为它们是SpPDF对象的几个层:对象>多边形>多边形>线>坐标我认为.任何想法如何访问这些,同时保持整个地图的结构完整?