Skip To Content

构建多变量格网

注:

目前,此功能仅在 Map Viewer 经典版(之前称为 Map Viewer)中受支持。 该功能将在新 Map Viewer 的未来版本中提供。

构建多变量格网工具会生成正方形和六边形条柱格网,并根据一个或多个输入图层的邻近性计算每个条柱的变量。 这些变量包括如下内容:

  • 与最近要素的距离 - 每个条柱与最近要素的距离
  • 最近要素属性 - 距离每个条柱最近的要素的字段值
  • 邻近要素汇总 - 距离每个条柱的某一范围内所有要素的指定统计数据
  • 相交要素汇总 - 与每个条柱相交的所有要素的指定统计数据

使用 GeoAnalytics Tools 进行的分析

通过跨多个 ArcGIS GeoAnalytics Server 计算机和核心组件的分布式处理来运行使用 GeoAnalytics Tools 进行的分析。GeoAnalytics ToolsArcGIS Enterprise 中标准要素分析工具的参数和功能不同。要了解有关这些差别的详细信息,请参阅要素分析工具差别

示例

投资新公共交通基础设施的选址是一个复杂的问题,需要可视化许多类型的数据。 您可以访问多个表示美国各地现有基础设施的数据集,以及多个人口普查数据图层。 您可以使用“构建多变量格网”将所有这些数据汇总到单个数据集中,通过该数据集,您可以直观地查看距最近的现有基础设施的距离,周边平均人口数以及美国各个地点周边的收入差异。

用法说明

可以计算点、线或面要素的变量。

对于每个变量,您必须指定其类型并提供标题。 该标题将是结果图层中包含每个条柱值的字段名称。 每个可以使用构建多变量格网计算的变量类型都必须配置有一组唯一参数。 这些参数如下所示。

变量描述参数

与最近要素的距离

从每个条柱中心到输入图层中最近要素的距离。 该结果将采用处理空间参考的单位(请参阅设置处理空间参考)。

距条柱中心的最大距离为距各个条柱中心的最远距离,工具将使用此距离在输入图层中搜索要素。 该值必须大于条柱大小。 如果在此搜索半径内未找到任何要素,则会为该条柱的此变量分配 null 值。

最近要素属性

距离每个条柱中心最近的要素的字段值。 该字段可以为任何类型。 如果两个或两个以上的要素离条柱中心等距并且距离最近,则系统将随机选择其中一个要素,并将该要素的字段值包含在结果图层内。

要包括的字段是输入图层中字段的名称。 最接近条柱中心的要素中的此字段值将作为条柱属性包含在结果图层内。

距条柱中心的最大距离为距各个条柱中心的最远距离,工具将使用此距离在输入图层中搜索要素。 该值必须大于条柱大小。 如果在此搜索半径内未找到任何要素,则会为该条柱的此变量分配 null 值。

邻近要素摘要

此统计数据根据指定字段计算,计算中会使用位于距每个条柱中心给定距离范围内的所有要素。 如果要素的任一部分位于此距离内,则该要素将包含在计算内。

要计算的统计数据为输入图层中字段的名称以及要在该字段上计算的统计数据。

汇总范围内的要素为工具将针对输入图层中的要素搜索的各个条柱距离中心的最远距离。 使用指定的统计数据对在此搜索半径内找到的所有要素进行汇总。 该值必须大于条柱大小。 如果在此搜索半径内未找到任何要素,则会为该条柱的此变量分配 null 值。

相交要素摘要

此统计数据根据指定字段计算,计算中会使用与条柱相交的所有要素。 如果要素的任一部分位于条柱区域内,则该要素将包含在计算内。

要计算的统计数据为输入图层中字段的名称以及要在该字段上计算的统计数据。 系统将为每个条柱汇总与其相交的要素。 如果没有要素与条柱相交,则会为该条柱的此变量分配 null 值。

对于邻近要素汇总相交要素汇总选项,您可以在数值字段上计算以下统计数据:

  • Count - 计算非空值的数目。 可用于数值字段或字符串。 [null, 0, 2] 的计数为 2。
  • Sum - 字段内数值的总和。 [null, null, 3] 的总和为 3。
  • Mean - 数值的平均值。 [0, 2, null] 的平均值为 1。
  • Min - 数值字段的最小值。 [0, 2, null] 的最小值为 0。
  • Max - 数值字段的最大值。 [0, 2, null] 的最大值为 2。
  • Range - 数值字段的范围。 其计算方法为最大值减去最小值。 [0, null, 1] 的范围为 1。 [null, 4] 的范围为 0。
  • Variance - 轨迹中数值字段内数值的方差。 [1] 的方差为空。 [null, 1,0,1,1] 的方差为 0.25。
  • Standard deviation - 数值字段的标准差。 [1] 的标准差为空。 [null, 1,0,1,1] 的标准差为 0.5。
可以根据字符串字段计算以下内容:
  • Count - 非空字符串的数目。
  • 任意 - 该统计数据是指定字段中字符串值的随机样本。
所有统计数据均根据非空值计算而得。

条柱大小可指定多变量格网的条柱大小。 如果选择生成六边形条柱,则其大小为每个六边形的高度,而所生成六边形的宽度为高度除以根号 3 再乘以 2。 如果选择生成正方形条柱,则条柱大小为正方形的高度(等于宽度)。

正方形和六边形条柱

使用带有指定地理坐标系的图格(六边形或正方形)的 GeoAnalytics Tools 分析会自动使用基于数据范围的投影坐标系。要了解有关设置坐标系进行分析的详细信息,请参阅在 Map Viewer 中使用 GeoAnalytics 工具的分析环境

如果选中使用当前地图范围,则仅对当前地图范围中可见的要素进行分析。如果未选中,则将分析输入图层中的所有输入要素,包括超出当前地图范围的要素。

局限性

构建多变量格网不适用于表格。 输入图层必须为点、线或面。

构建多变量格网的工作原理

下面介绍了构建多变量格网的工作原理:

距离计算

构建多变量格网工具中的所有距离都是从条柱中心开始测量的。 对于正方形和六边形条柱来说,该中心位于条柱高度的一半和宽度一半处,如下所示。

正方形和六边形条柱中心

对于与最近要素的距离最近要素属性,距面或线要素的距离是使用要素中距感兴趣条柱最近的点进行测量的。 到点要素的距离是使用点位置测量的。

使用正方形条柱测量距离的示例
测得的从某条柱(用红色突出显示)到面图层中要素的距离。 在此例中,区域 B 最靠近条柱中心,因此该条柱的与最近要素的距离值为 1050。

汇总计算

对于邻近要素汇总,如果要素的任一部分位于条柱中心周围的半径范围内(该半径由汇总范围内的要素参数决定),则该要素将包含在汇总统计数据计算内。 对于相交要素汇总,只要要素的任一部分位于条柱区域的边界内(不使用圆的半径),该要素即包含在计算内。

使用正方形条柱汇总半径的示例
围绕条柱(用红色突出显示)的搜索半径(黄色显示)可用于为“邻近要素汇总”汇总要素。 在此例中,已生成 500 米正方形条柱,且将“汇总范围内的要素”设置为 1500 米。 要素 C 和 B 将包含在此条柱的统计数据计算中。

了解结果

任何具有全部 null 属性的条柱将不会包含在结果中。 这意味着该结果图层将跨越输入要素的最大范围加上指定变量的最大搜索距离(在处理空间参考的范围内)。

您配置的每个变量都将成为结果图层属性表中的字段。 输入图层中的字段将不会自动包含在结果中,您必须通过配置变量来指定要包含的信息。

ArcGIS API for Python 示例

可通过 ArcGIS API for Python 获取构建多变量格网工具。

本示例可通过汇总诸如与最近道路或交叉点的距离、周边人口的平均年龄以及周边人口的收入差异等信息来创建多变量格网。


# Import the required ArcGIS API for Python modules
import arcgis
from arcgis.gis import GIS
from arcgis.geoanalytics import summarize_data
from arcgis.features import FeatureLayer

# Connect to your ArcGIS Enterprise portal and confirm that GeoAnalytics is supported
portal = GIS("https://myportal.domain.com/portal", "gis_publisher", "my_password", verify_cert=False)
if not portal.geoanalytics.is_supported():
    print("Quitting, GeoAnalytics is not supported")
    exit(1)   

# Find the big data file share dataset you'll use for analysis
search_result = portal.content.search("", "Big Data File Share")

# Look through the search results for a big data file share with the matching name
bdfs_search = next(x for x in search_result if x.title == "bigDataFileShares_CityData")

# Look through the big data file share for roads
roads = next(x for x in bdfs_search.layers if x.properties.name == "roads")

# Look through the big data file share for intersections
intersections = next(x for x in bdfs_search.layers if x.properties.name == "intersections")

# Find a feature layer named "Demographics" in your ArcGIS Enterprise portal
demographics_search_result = portal.content.search("Demographics", "Feature Layer")
demographics_layer = demographics_search_result[0].layers[0]

inputs = [road, intersections, demographics_layer]
variables = [
    {
        "layer":0,
        "variables":[
            {
                "type":"DistanceToNearest",
                "outFieldName":"DistToRoad",
                "searchDistance":20,
                "searchDistanceUnit":"Kilometers",
                "filter":"Rural = 'false'"
            }
        ]
    },
 {
        "layer":1,
        "variables":[
            {
                "type":"AttributeOfNearest",
                "outFieldName":"intersection",
                "attributeField":"intersection_name",
                "searchDistance":50,
                "searchDistanceUnit":"Kilometers"
            }
        ]
    },
 {
        "layer":2,
        "variables":[
            {
                "type":"AttributeSummaryOfRelated,
                "outFieldName":"MeanPopAge",
                "statisticType":"Mean",
                "statisticField":"Age",
                "searchDistance":50,
                "searchDistanceUnit":"Kilometers"
            },
           {
                "type":"AttributeSummaryOfRelated,
                "outFieldName":"VarIncome",
                "statisticType":"Variance",
                "statisticField":"Income",
                "searchDistance":50,
                "searchDistanceUnit":"Kilometers"

            }
        ]
    }
]

# Set the tool environments
arcgis.env.verbose = True
arcgis.env.defaultAggregations = True

# Run the Build Multi-Variable Grid tool
output = summarize_data.build_multivariable_grid(input_layers = inputs, 
       																																										variable_calculations = variables,
                                                 bin_size = 10,
                                                 bin_unit = "Kilometers",
                                                 bin_type = "Hexagon",
																																																	output_name = "CityPlanningGrid")

# Visualize the tool results if you are running Python in a Jupyter Notebook
processed_map = portal.map('City, State', 10)
processed_map.add_layer(output)
processed_map

类似工具

使用构建多变量格网将多个图层汇总为单个面格网,以供可视化或稍后用于预测训练或分类模型。 其他工具或许在解决略有差异的类似问题时十分有用。

Map Viewer 经典版 分析工具

如果您只想将单个输入图层汇总到多个条柱或者一个面图层中,请使用范围内汇总工具。

如果您想将单点图层聚合到面中,请使用聚合点工具。

如果您正在尝试使用不同的空间关系对点、线或面进行汇总,请使用连接要素工具。

如果您正在尝试使用标准分析工具对线或面进行汇总,请参阅范围内汇总

如果要使用标准分析工具将点聚合到面中,请参阅聚合点

ArcGIS Pro 分析工具

构建多变量格网的功能与邻近汇总近邻分析工具类似。