空间连接 (分析)
- 格式:doc
- 大小:57.50 KB
- 文档页数:4
汇总基于两个要素类中要素之间的空间关系将属性从一个要素类传递到另一个要素类。
用法∙此工具用于在要素类之间传递属性字段。
只要找到指定的空间关系(或匹配选项),就会将连接要素的属性添加到目标要素中。
例如,如果将某个点要素类指定为目标要素,将某个面要素类指定为连接要素,并选择WITHIN 作为匹配选项,则每个输出点要素除包含其自身原始属性外,还将包含其所在面的属性。
∙默认情况下,即使未发现连接要素和目标要素之间存在任何空间关系,所有输入目标要素也都将保留在输出要素类中。
此操作被视为外部连接。
如果输出要素类中的目标要素只能与一个或多个连接要素存在空间关系(内部连接),请将保留所有目标要素参数设置为KEEP_COMMON(未选中)。
∙连接要素的字段映射参数中的合并规则仅适用于连接要素中的字段,且仅在使用JOIN_ONE_TO_ONE 类型的连接操作时可用。
对目标要素中的字段应用合并规则或连接操作为JOIN_ONE_TO_MANY 时,将忽略合并规则。
∙始终会向输出要素类中添加名为Join_Count 的新字段。
此字段表示连接到各个输入目标要素的连接要素的数量。
语法SpatialJoin_analysis (target_features, join_features, out_feature_class,{join_operation}, {join_type}, {field_mapping}, {match_option}, {search_radius}, {distance_field_name})参数说明数据类型target_features 只要找到指定的空间关系(或匹配选项),就会将“连接要素”的属性传递到“目标要素”。
“目标要素”可以是ArcGIS 支持的任意空间数据源。
FeatureLayerjoin_features 只要找到指定的空间关系(或匹配选项),就会将“连接要素”的属性传递到“目标要素”。
“连接要素”可以是ArcGIS 支持的任意空间数据源。
FeatureLayerout_feature_class 该新要素类包含连接到“目标要素”的“连接要素”的属性。
Feature Classjoin_operation (可选) 用于在找到多个与同一“目标要素”存在相同空间关系的“连接要素”时确定输出要素类中“目标要素”和“连接要素”的连接方式。
例如,如果在两个独立的面“连接要素”中找到了同一个点“目标要素”,则可以选择使用“字段映射”合并规则String(JOIN_ONE_TO_ONE) 对两个面的属性进行聚合,也可以选择在输出中存在两个“目标要素”实例,分别包含两个面的属性(JOIN_ONE_TO_MANY)。
∙JOIN_ONE_TO_ONE —如果找到多个与同一“目标要素”存在相同空间关系的“连接要素”,将使用“字段映射”合并规则对多个“连接要素”中的属性进行聚合。
例如,如果在两个独立的面“连接要素”中找到了同一个点“目标要素”,将对这两个面的属性进行聚合,然后将其传递到输出要素类。
如果一个面的属性值为3,另一个面的属性值为7,且指定了“总和”合并规则,则输出要素类中的聚合值将为10。
JOIN_ONE_TO_ONE 为默认选项。
∙JOIN_ONE_TO_MANY —如果找到多个与同一“目标要素”存在相同空间关系的“连接要素”,输出要素类将包含多个“目标要素”实例。
例如,如果在两个独立的面“连接要素”中找到了同一个点“目标要素”,则输出要素类将存在两个“目标要素”实例,分别包含两个面的属性。
join_type (可选) 确定是在输出要素类中保留所有“目标要素”(外部连接),还是仅保留那些与“连接要素”有指定空间关系的“目标要素”(内部连接)。
∙KEEP_ALL —将在输出中保留所有“目标要素”(外部连接)。
这是默认设置。
∙KEEP_COMMON —仅在输出要素类中保留那些与“连接要素”有指定空间关系的“目标要素”(内部连接)。
例如,如果将某个点要素类指定为“目标要素”,将某个面要素类指定为“连接要素”,并选择“WITHIN”作为匹配选项,则输出要素类将仅包含那些位于面“连接要素”中的“目标要素”,非“连接要素”内部的“目标要素”将被排除。
Booleanfield_mapping (可选) 控制输出要素类中要包含的属性字段。
可以添加、删除、重命名字段或更改字段的属性。
初始列表既包含“目标要素”中的字段,也包含“连接要素”中的字段。
FieldMappingsmatch_option (可选) 定义用于匹配行的条件。
只要找到该空间关系(或匹配选项),就会将“连接要素”的属性传递到“目标要素”。
匹配选项包括:∙INTERSECT:如果“目标要素”与“连接要素”相交,则将“连接要素”的属性传递到“目标要素”。
String∙ CONTAINS :如果“目标要素”包含“连接要素”,则将“连接要素”的属性传递到“目标要素”。
对于此选项,“目标要素”不能为点,且仅当“目标要素”为面时“连接要素”才能为面。
∙ WITHIN :如果“目标要素”位于“连接要素”内部,则将“连接要素”的属性传递到“目标要素”。
对于此选项,“连接要素”不能为点,且仅当“连接要素”为面时“目标要素”才能能为面。
∙ CLOSEST :将最近“连接要素”的属性传递到“目标要素”。
search_radius(可选) 如果“连接要素”与“目标要素”的距离在此范围内,则将进行空间连接。
仅当将空间关系(或匹配选项)指定为 INTERSECT 或CLOSEST 时,搜索半径才有效。
空间关系为 INTERSECT 时使用 100 米作为搜索半径表示:如果“连接要素”位于“目标要素”周围的 100 米范围内,则将“连接要素”的属性传递到“目标要素”。
空间关系为 CLOSEST 时使用 100 米作为搜索半径表示:如果“连接要素”位于“目标要素”周围的 100 米范围内,并且是距该“目标要素”最近的“连接要素”,则将“连接要素”的属性传递到“目标要素”。
Linear unitdistance_field_name (可选) 向输出要素类中添加的字段的名称,用于包含“目标要素”和最近“连接要素”之间的距离。
仅当将空间关系(或匹配选项)指定为 CLOSEST 时,此选项才有效。
如果未指定字段名称,将不会向输出要素类中添加该字段。
String 代码示例SpatialJoin 示例 1(Python 窗口)以下脚本演示了如何在 Python 窗口中使用 SpatialJoin 函数。
import arcpy from arcpy import envarcpy.SpatialJoin_analysis("C:/data/usa.gdb/states',"C:/data/usa.gdb/cities", "C:/data/usa.gdb/states_cities")SpatialJoin 示例 2(独立脚本)以下独立脚本演示了如何使用 SpatialJoin 将城市的属性连接到州。
# Name: SpatialJoin_Example2.py # Description: Join attributes of cities to states based on spatial relationships. # Requirements: os module # Author: ESRI # Import system modules import arcpy import os # Set localvariables workspace = r"C:\gpqa\mytools\spatialjoin\usa.gdb" outWorkspace = r"C:\gpqa\mytools\spatialjoin\output.gdb" # Want to join USA cities to states and calculate the mean city population # for each state targetFeatures = os.path.join(workspace, "states") joinFeatures = os.path.join(workspace, "cities") # Output will be the target features, states, with a mean city population field (mcp) outfc = os.path.join(outWorkspace, "states_mcp2") # Create a new fieldmappings and add the two input feature classes. fieldmappings = arcpy.FieldMappings() fieldmappings.addTable(targetFeatures) fieldmappings.addTable(joinFeatures) # First get the POP1990 fieldmap. POP1990 is a field in the cities feature class. # The output will have the states with the attributes of the cities. Setting the # field's merge rule to mean will aggregate the values for all of the cities for # each state into an average value. The field is also renamed to be more appropriate # for the output. pop1990FieldIndex =fieldmappings.findFieldMapIndex("POP1990") fieldmap =fieldmappings.getFieldMap(pop1990FieldIndex) # Get the output field's properties as a field object field = fieldmap.outputField # Rename the field and pass the updated field object back into the field map = "mean_city_pop" field.aliasName = "mean_city_pop"fieldmap.outputField = field # Set the merge rule to mean and then replace the old fieldmap in the mappings object # with the updated one fieldmap.mergeRule = "mean"fieldmappings.replaceFieldMap(pop1990FieldIndex, fieldmap) # Delete fields that are no longer applicable, such as city CITY_NAME and CITY_FIPS # as only the first value will be used by default x =fieldmappings.findFieldMapIndex("CITY_NAME")fieldmappings.removeFieldMap(x) y =fieldmappings.findFieldMapIndex("CITY_FIPS")fieldmappings.removeFieldMap(y) #Run the Spatial Join tool, using the defaults for the join operation and join typearcpy.SpatialJoin_analysis(targetFeatures, joinFeatures, outfc, "#", "#", fieldmappings)环境默认输出Z 值, M 分辨率, M 容差, 输出配置关键字, 输出M 属性域, 输出XY 属性域, 输出Z 属性域, 输出坐标系, 范围, 输出包含M 值, 输出包含Z 值, 输出空间格网1、2、3, XY 分辨率, XY 容差, Z 分辨率, Z 容差。