生成连续变形地图 (制图)

摘要

根据数值字段将多个面的面积扭曲为彼此成正比以生成变形地图,同时保留共享边界。

插图

生成连续变形地图工具图示
当输入面的大小和形状发生畸变时,系统将保留共享边界,从而使每个要素的面积都表示某个属性字段的值;在本例中,该属性字段表示每个要素的总人口。

使用情况

  • 输出将是一个新的面要素图层,其中的面已完成转换,从而使每个要素的面积都能与某数值字段与输入中所有要素的该字段的总和比较之后得出的值成正比。

  • 输入图层的属性数据将传输到输出。 当输入为符号化图层时,将传输符号系统和标注。

  • 方法参数具有以下选项:

    • 基于流 - 此选项是扩散方法的进化版本,且通常速度更快。 相比之下,输出面的形状可能有所不同或包含的畸变略多。 这是默认设置。
    • 扩散 - 与基于流选项相比,此选项可能对原始形状造成的畸变略少,但完成时间较长。
    每个选项都将尝试保留各个面的常规形状,同时保留共享边。

  • 要减少处理时间,可在运行此工具之前对输入要素运行简化面工具。 如果某些输出面被扭曲得明显更大,这可能会导致它们看起来过于简化。

  • 输入数据或显示数据的活动地图应使用适合该区域的等积投影。 这样,输入面的可见区域将能够更准确地表示修改之前的实际区域。 如果没有活动地图并且数据使用非等积投影,则请使用制图坐标系环境。 在相同的等积投影中显示结果,以便准确地描绘校正后的要素区域。

  • 字段名称参数值中的字段值应为正数。 输出中将不存在任何具有负值或 0 值的要素。

  • 其他资源:

    Gastner, Michael T. and M. E. J. Newman. 2004. "Diffusion-based method for producing density-equalizing maps." Proceedings of the National Academy of Sciences of the United States of America, 101(20): 7499–7504.

    Gastner, Michael T., Vivien Seguy, and Pratyush More. 2018. "Fast flow-based algorithm for creating density-equalizing map projections." Proceedings of the National Academy of Sciences of the United States of America, 115(10): E2156-E2164.

参数

标注说明数据类型
输入要素

将用于生成变形地图的输入面要素。

Feature Layer
字段名

包含用于确定输出变形地图中面要素面积的值的数值字段。 任何具有负值或 0 值的要素都将在输出中忽略。

Field
输出要素类

应用了变形地图变换的输出面。

Feature Layer
方法
(可选)

指定将用于变换输入和创建变形地图的方法。

  • 基于流将使用通常更快的扩散方法进化版本,而这可能会增加畸变。 这是默认设置。
  • 扩散将使用扩散方法;与基于流方法相比,该方法可能引入的畸变更少,但同时需要更长的时间才能完成。
String

arcpy.cartography.GenerateContiguousCartogram(in_features, field_name, out_features, {method})
名称说明数据类型
in_features

将用于生成变形地图的输入面要素。

Feature Layer
field_name

包含用于确定输出变形地图中面要素面积的值的数值字段。 任何具有负值或 0 值的要素都将在输出中忽略。

Field
out_features

应用了变形地图变换的输出面。

Feature Layer
method
(可选)

指定将用于变换输入和创建变形地图的方法。

  • FLOW-BASED将使用通常更快的扩散方法进化版本,而这可能会增加畸变。 这是默认设置。
  • DIFFUSION将使用扩散方法;与基于流方法相比,该方法可能引入的畸变更少,但同时需要更长的时间才能完成。
String

代码示例

GenerateContiguousCartogram 示例(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 GenerateContiguousCartogram 函数。

import arcpy
arcpy.env.workspace = "C:/data/admin.gdb"
arcpy.cartography.GenerateContiguousCartogram(
    "countries", 
    "population", 
    "countries_cartogram_population", 
    "FLOW-BASED")
GenerateContiguousCartogram 示例(独立脚本)

以下独立脚本演示了如何使用 GenerateContiguousCartogram 函数。

# Name: GenerateContiguousCartogram_sample2.py
# Description: Output a contiguous cartogram of country polyons 
#              based on popuplation.

# Import System Modules
import arcpy

# Set environment settings
arcpy.env.workspace = "C:/data/admin.gdb"

# Set Local Variables
in_features = "countries"
value_field = "population"
out_cartogram = "countries_cartogram_population"
algorithm = "DIFFUSION"

# Execute Generate Contiguous Cartogram
arcpy.cartography.GenerateContiguousCartogram(
    in_features, 
    value_field, 
    out_cartogram, 
    algorithm)