代码之家  ›  专栏  ›  技术社区  ›  gspr

用Matplotlib绘制地图?

  •  14
  • gspr  · 技术社区  · 15 年前

    如果有人不知道:a cartogram是一种地图类型,其中某些国家/地区相关的数字属性缩放各自的区域,使该属性的密度(接近)恒定。一个例子是

    worldmapper.org.>在本例中,国家是根据其人口规模进行调整的,导致人口密度接近恒定。

    不用说,这真的很酷。有人知道绘制这种地图的基于matplotlib的图书馆吗?worldmapper.org使用的方法在(1)中描述,所以如果还没有人实现这一点,我会很惊讶…

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

    (1)Michael T.Gastner和M.E.J.Newman, 基于扩散的密度均衡图生成方法, PROCNAT阿卡德SCI。美国,101,7499-7504(2004)。请访问 arxiv 。是一种地图类型,其中某些国家/地区相关的数字属性缩放各自的区域,使属性的密度(接近)为常量。一个例子是

    Example cartogram

    worldmapper.org . 在这个例子中,国家是根据其人口按比例缩放的,导致人口密度接近恒定。

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

    我也对其他的地图图书馆感兴趣,即使它们不是为Matplotlib制作的。

    (1)Michael T.Gastner和M.E.J.Newman, 基于扩散的密度均衡图生成方法, PROCNAT阿卡德SCI。美国,101,7499-7504(2004)。可在 arXiv .

    4 回复  |  直到 7 年前
        1
  •  3
  •   tom10    15 年前

    this 虽然它是基于不同的算法(虽然它在ESRI站点上,但不需要Arcgis)。当然,一旦你有了地图,你就可以把它标在地图上。

        2
  •  1
  •   mgalka    10 年前

    Here 是一个使用d3制作动画的javascript插件。如果您不太担心区域大小的精确性,这是一个好的、简单的解决方案。如果精度很重要,还有其他选项可以让您更自由地使用算法的参数来获得更精确的结果。

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

    垃圾堆很容易使用。只需给它一个shapefile,告诉它使用哪个属性进行缩放,并设置一些精度参数。如果有任何疑问, this post 描述过程。

    carto3f更复杂,允许更高的精度,尽管它是一个有点棘手的问题-很多参数设置没有太多的文件解释它们。

    还有一个 QGIS cartogram plugin ,用python编写。虽然我还没能让它工作,所以不能对此发表评论。

        3
  •  0
  •   Ulf Aslak    8 年前

    简言之,没有。但是纽曼对他的和加斯特纳的方法有一个极好的小实现。 on his website . 安装起来很容易,而且可以在命令行中工作。下面是一个使用这个软件的工作流程的例子。

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

    主页上有很好的说明。

        4
  •  0
  •   nealmcb    7 年前

    这个 geoplot.cartogram 功能在 Geoplot: geospatial data visualization — geoplot 0.2.0

    它是一个高级的python地理空间绘图库,也是对cartopy和matplotlib的扩展。