如果有人不知道:A 地图 是一种地图类型,其中某些与国家/地区相关的数值属性会缩放相应的区域,以便该属性的密度(接近)恒定。一个例子是

Example cartogram

世界地图绘制者网站. 。在此示例中,国家根据其人口进行缩放,从而导致人口密度接近恒定。

不用说,这真的很酷。有谁知道用于绘制此类地图的基于 Matplotlib 的库?worldmapper.org 使用的方法在 (1) 中进行了描述,所以如果还没有人实现这一点,我会感到惊讶......

我也有兴趣了解其他制图库,即使它们不是为 Matplotlib 制作的。

(1) 迈克尔·T.加斯特纳和 M.E.J。纽曼,基于扩散的方法,用于产生密度平衡地图,Proc。纳特。阿卡德。科学。美国,101,7499-7504 (2004)。可用于 arXiv.

有帮助吗?

解决方案

时,虽然它是基于和不同的算法(以及虽然它在ESRI的网站,它并不需要的ArcGIS)。当然,一旦你有你示意地图可以绘制它matplotlib。

其他提示

这里 是一个使用 D3 制作地图的 Javascript 插件。如果您不太关心区域大小是否准确,那么这是一个很好、简单的解决方案。如果准确性很重要,还有其他可用选项可以让您更自由地使用算法参数以获得更准确的结果。

这是我所知道的两个很棒的独立程序:

Scapetoad 非常容易使用。只需给它一个 shapefile,告诉它使用哪个属性进行缩放,并设置一些精度参数即可。如果有任何疑问, 这个帖子 描述了该过程。

Carto3F 更复杂,并且具有更高的准确性,尽管弄清楚起来有点棘手 - 有很多参数设置,但没有太多文档解释它们。

还有一个 QGIS 地图插件, ,用Python编写。虽然我还没能让它发挥作用,所以不能对此发表评论。

简而言之,不。但纽曼对他和加斯特纳的方法有一个出色的小实现 在他的网站上. 。安装它很简单,并且可以通过命令行运行。这是使用对我有用的该软件的工作流程示例。

  1. 计算某个区域的密度估计网格,例如在Python中。将其存储为数字矩阵。
  2. 跑过 cart 使用密度矩阵作为来自命令行或 Python 中子进程的输入进行编程。
  3. 该程序返回每个网格点的新坐标列表。
  4. 通过管道传输您的 shapefile 点 interp 程序并转换为新的 shapefile 以获取转换后的地图。

主页上有很好的说明。

geoplot.cartogram 功能在 Geoplot:地理空间数据可视化 - geoplot 0.2.0

说,这是一个高层次的Python地理空间绘制库,以及一个扩展cartopy和matplotlib。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top