ArcGIS Desktop

  • 文档
  • 支持

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

ArcGIS for Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

ArcMap

  • 主页
  • 入门
  • 地图
  • 分析
  • 管理数据
  • 工具
  • 扩展模块

交集制表

  • 摘要
  • 插图
  • 用法
  • 语法
  • 代码示例
  • 环境
  • 许可信息

摘要

计算两个要素类之间的交集并对相交要素的面积、长度或数量进行交叉制表。

插图

Tabulate Intersection illustration

用法

  • 区域由输入区域要素中区域字段值相同的所有要素组成。同样,类由输入类要素中类字段值相同的所有要素组成。在同一区域或类中要素不必相连。此工具用于按每个类计算相交区域的大小(面积和区域面积百分比)。

  • 如果未指定类字段,输入类要素内的所有要素都将被视为单个类。输出表对每一区域都将包含一条记录。

  • 如果已指定类字段,则输出表将包含各区域的 n 条记录,其中 n 表示该区域内类的数目。例如,如果某个区域包含四个类,则输出表中对于该区域将有四条记录。

  • 使用求和字段参数可按区域对输入类要素的数值属性进行求和。类的总和值表示总和值基于类与区域相交的百分比的比例(类似于比率策略的工作原理)。

    警告:

    只应将具有绝对值(百分比或密度等非相对的正态值)的字段用作求和字段,因为可对这些值进行分割或将其分配到不同区域。

  • 不支持使用比输入区域要素的维度更高的输入类要素。不支持的组合:

    • 区域 = 点,类 = 面或线
    • 区域 = 线,类 = 面

  • 当输入区域要素和输入类要素都为面时,输出表将基于面积计算的结果进行统计。

    当输入类要素为线时,输出表将基于线性计算的结果进行统计。

    当输入类要素为点时,输出表将基于要素计数进行统计。

  • 当输入区域要素和输入类要素具有相同的维度(同为面、同为线或同为点)时,输出“百分比”字段记录区域要素与类相交的百分比。

    如果输入区域要素和输入类要素具有不同的维度(面区域具有线类、面区域具有点类或线区域具有点类),则输出“百分比”字段记录类与区域面相交的百分比。

    如果输入区域要素或输入类要素中存在重叠要素,则“百分比”字段中要记录的百分比值可能大于 100%。

  • 当输入区域要素和输入类要素为面时,输出表中仅包括“面积”字段。“面积”字段包含输入区域要素与输入类要素相交的面积。

    当输入类要素为线时,输出表中包括“长度”字段。“长度”字段包含输入区域要素和输入类要素之间相交的长度。

    当输入类要素为点时,输出表中包括 PNT_COUNT 字段。PNT_COUNT 字段包含输入类要素点与输入区域要素相交的次数计数。

  • 使用要素图层时,如果选中了任何要素,则计算中将只使用选中的要素。

  • 确定区域和类要素的相交部分所遵循的规则与相交工具的规则相同。

  • 使用数据透视表工具可将输出表转换成包含每个区域的一条记录并将类属性作为单独的属性字段的表。按下列方式填充数据透视表工具的参数:

    • 输入表 - 制表交集 输出表
    • 输入字段 - 制表交集区域字段
    • 透视表字段 - 制表交集类字段
    • 值字段 - 制表交集求和字段或面积、长度、百分比
    数据透视表输出示例

语法

TabulateIntersection_analysis (in_zone_features, zone_fields, in_class_features, out_table, {class_fields}, {sum_fields}, {xy_tolerance}, {out_units})
参数说明数据类型
in_zone_features

用于标识区域的要素。

Feature Layer
zone_fields
[zone_fields,...]

将用于定义区域的属性字段。

Field
in_class_features

用于标识类的要素。

Feature Layer
out_table

将包含区域和类之间交集的交叉表的表。

Table
class_fields
[class_fields,...]
(可选)

用于定义类的属性字段。

Field
sum_fields
[sum_fields,...]
(可选)

输入类要素中用于求和的字段。

Field
xy_tolerance
(可选)

确定要素或其折点被视作相同的范围的距离。默认情况下,为输入区域要素的 XY 容差。

Linear Unit
out_units
(可选)

计算面积或长度测量值所使用的单位。当输入类要素为点不受支持时,设置输出单位。

String

代码示例

制表交集 (TabulateIntersection) 示例 1(Python 窗口)

在 Python 窗口中使用制表交集 (TabulateIntersection) 可查找各区域中每种植被的面积。

import arcpy
arcpy.TabulateIntersection_analysis("Zones", "zone_id", "Vegetation", r"C:\Esri\veganalysis.gdb\vegtypeAreas", "VEGTYPE")
制表交集 (TabulateIntersection) 示例 2(独立脚本)

对制表交集 (TabulateIntersection) 进行打包以创建简单的 TabulateArea 脚本工具的脚本。TabulateArea 脚本工具仅采用面要素作为输入。“区域”和“类”字段各自限制为一个。

'''
TabulateArea.py
Description: Shows how to wrap the TabulateIntersection tool to create a TabulateArea script tool
Requirements: Polygon Zone Feature Class, Polygon Class Feature Class

'''
import arcpy
import sys
import os

def AddMsgAndPrint(msg, severity=0):
    # Adds a Message (in case this is run as a tool)
    # and also prints the message to the screen (standard output)
    # 
    print(msg)

    # Split the message on \n first, so that if it's multiple lines, 
    #  a GPMessage will be added for each line
    try:
        for string in msg.split('\n'):
            # Add appropriate geoprocessing message 
            #
            if severity == 0:
                arcpy.AddMessage(string)
            elif severity == 1:
                arcpy.AddWarning(string)
            elif severity == 2:
                arcpy.AddError(string)
    except:
        pass

## Get Parameters
zoneFC = arcpy.GetParameterAsText(0)
zoneFld = arcpy.GetParameterAsText(1) # Only allow one field
classFC = arcpy.GetParameterAsText(2)
outTab = arcpy.GetParameterAsText(3)
classFld = arcpy.GetParameterAsText(4) # Optional and only allow one field
sum_Fields = ""
xy_tol = ""
outUnits = arcpy.GetParameterAsText(5)

## Validate parameters
# Inputs can only be polygons
zoneDesc = arcpy.Describe(zoneFC)
classDesc = arcpy.Describe(classFC)
if zoneDesc.shapeType != "Polygon" or classDesc.shapeType != "Polygon":
    AddMsgAndPrint("Inputs must be of type polygon.", 2)
    sys.exit()
    
# Only one zone field and class field
if zoneFld != "":
    if zoneFld.find(";") > -1 or classFld.find(";") > -1:
        AddMsgAndPrint("A maximum of one zone and/or class field is allowed.", 2)
        sys.exit()

## Run TI with restricted parameters
try:
    arcpy.TabulateIntersection_analysis(zoneFC, zoneFld, classFC, outTab, classFld, sum_Fields, xy_tol, outUnits)
except:
    arcpy.AddMessage("Tabulate Intersection Failed.")
AddMsgAndPrint(arcpy.GetMessages(), 0)

环境

  • 自动提交
  • 输出配置关键字
  • 输出 XY 范围域
  • 输出坐标系
  • 范围
  • 限定的字段名
  • 临时工作空间
  • XY 分辨率
  • XY 容差

许可信息

  • ArcGIS Desktop Basic: 否
  • ArcGIS Desktop Standard: 否
  • ArcGIS Desktop Advanced: 是

相关主题

  • 统计分析工具集概述

ArcGIS Desktop

  • 主页
  • 文档
  • 支持

ArcGIS 平台

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • 内部人员博客
  • 用户大会
  • 开发者峰会
Esri
分享您的想法。
Copyright © 2018 Esri. | 隐私政策 | 法律声明