插图
使用方法
输入要素可以是点或面。
对于每个待填充字段,生成的输出中将包含三个字段。第一个字段包含原始值和填充值,第二个字段包含指示已对值进行估算的指示符。估算字段将保留其原始字段名称,但系统将使用以下命名约定创建字段别名:<field>_FILLED 和 <field>_ESTIMATED。添加的第三个字段是用于计算每个估算值的邻域数量 <field>_ N_NEIGHBORS。
输出还包含含有值的附加字段,这些值有助于理解用于目标缺失值计算的邻域数和邻域值范围。如果填充方法为平均值,则报告在计算中使用的邻域标准差 (<field>_STD)。针对最小值报告最大邻域值,而针对最大值报告最小邻域值。如果填充方法为中位数,则会报告邻域的平均绝对差。如果使用时间趋势填充缺失值,则字段将包含样条的残差平方和。NNBRS 字段包含用于计算估算值的邻域计数。
可以包含不含空值的字段。系统会将这些字段复制到输出中,但输出中不包含与这些字段关联的附加字段(例如 <field>_FILLED 或 <field>_ESTIMATED)。或者,也可以提供唯一 ID,将其添加到输出中,然后使用它将结果联回输入要素类。
字段 NUM_EST(如果使用相关表,则字段为 TOT_EST)为关联记录的估算变量的总数。此字段可用于渲染输出地图。
此工具可用于处理存储为重复形状或随相关表存储的面板数据。如果指定了位置 ID,此工具将识别到输入为面板数据,并且时间字段为必填字段。
位置 ID 是一个整型字段,应表示唯一的静态位置。位置 ID 的 X,Y 坐标不应随时间变化。
如果选择固定距离、仅邻接边或邻接边拐角作为空间关系的概念化,则可以通过选择距离范围和时间邻域模拟空间时间窗。
如果选择固定距离、仅邻接边或邻接边拐角作为空间关系的概念化,则可以设置空间邻域数,以指定邻域的最小数量。
根据时间趋势填充缺失值的选项仅在指定位置 ID 时可用。时间字段也为必填字段。
使用时间趋势填充值时,待填充的空值在其之前必须至少具有两个包含值的时间段,而在其之后必须至少具有两个包含值的时间段,才能进行填充。由于这项要求,前两个或最后两个时间步长中存在的空值将始终无法使用时间趋势填充。
时间趋势填充方法 使用 SciPy 插值包中的一元样条插值方法。
无法估算和填充的缺失值将会在输出中以空值的原始存在格式进行报告。
当仅用空间邻域填充面板数据的缺失值时,应将时间邻域设置为 0。
如果数据为面板数据,则时间邻域参数可用作按时间过滤的方法。或者,时间邻域 0 仅供您查看空间邻域。
检查生成的填充值至关重要,这样可以确保这些值对于分析有意义。例如,如果原始字段为整型,并且已将工具设置为用空间邻域的平均值进行填充,则结果将为小数,如果输入字段为计数,则结果可能没有意义。此外,由于使用时间趋势时所采用的方法,即使没有一个现有值为负数,也可能会得到负数。如果填充的字段为人口字段,则结果没有意义。
N_NEIGHBORS 字段将报告包含在该要素计算中的邻域数量。如果填充方法为时间趋势,则此数量为该位置 ID 时间序列中存在的值的数量(例如,如果时间序列中仅缺少一个值,则将报告数据集中时间步长的数量为 -1)。如果使用空间关系的概念化 K 最近邻和时间邻域,则报告的邻域数量将包括落入指定时间窗范围内的要素的 k 个近邻。
在工具执行期间,描述分析详细信息和已填充字段特征的消息会写在地理处理窗格底部。可通过将鼠标悬停在进度条上、单击弹出按钮 或展开地理处理窗格中的消息部分来访问消息。还可通过地理处理历史访问之前运行填充缺失值工具的消息。
语法
arcpy.stpm.FillMissingValues(in_features, out_features, fields_to_fill, fill_method, {conceptualization_of_spatial_relationships}, {distance_band}, {temporal_neighborhood}, {time_field}, {number_of_spatial_neighbors}, {location_id}, {related_table}, {related_location_id}, {weights_matrix_file}, {unique_id}, {null_value}, {out_table})
参数 | 说明 | 数据类型 |
in_features | 包含要填充的空值的要素类。 | Feature Layer |
out_features | 将包含已填充(估算)值的输出。 如果指定 related_table,则 out_features 将包含每个位置的估算值数,而 out_table 将包含已填充(估算)值。 | Feature Class |
fields_to_fill [fields_to_fill,...] | 包含缺失数据(空值)的数值字段。 | Field |
fill_method | 要应用的计算类型。TEMPORAL_TREND 仅在指定 location_id 和 time_field 时可用。
| String |
conceptualization_of_spatial_relationships (可选) | 指定要素空间关系的定义方式。
| String |
distance_band (可选) | 为 FIXED_DISTANCE 选项指定中断距离。将在针对目标要素的计算中忽略为该要素指定的中断之外的要素。此参数不适用于 CONTIGUITY_EDGES_ONLY 和 CONTIGUITY_EDGES_CORNERS。 | Linear Unit |
temporal_neighborhood (可选) | 指定向前和向后的间隔时间,以确定要在针对目标要素的计算中使用的要素。不在此目标要素间隔内的要素将在针对该要素的计算中忽略。 | Time Unit |
time_field (可选) | 包含数据集中每条记录的时间戳的字段。此字段必须为日期类型。 如果已提供 location_id,则此字段为必填字段。 | Field |
number_of_spatial_neighbors (可选) | 要包括在计算中的最近领域数。 如果选择 FIXED_DISTANCE、CONTIGUITY_EDGES_ONLY 或 CONTIGUITY_EDGES_CORNERS,则此数量为要包括在计算中的最小邻域数。 | Long |
location_id (可选) | 包含每个位置的唯一 ID 编号的整型字段。 location_id 用于将 in_features 中的要素与 related_table 中的行进行匹配,或指定用于确定时间邻域的唯一位置 ID。 | Field |
related_table (可选) | 包含每个 in_features 的时态数据的表或表视图。 | Table View |
related_location_id (可选) | related_table 中包含基于关联的 location_id 的整型字段。 | Field |
weights_matrix_file (可选) | 包含权重(其定义要素间的空间关系以及可能的时态关系)的文件的路径。 | File |
unique_id (可选) | 包含 in_features 中每条记录的不同值的整型字段。此字段可用于将结果联回原始数据集。 如果没有 unique_id 字段,则可以创建一个,方法是向要素类表添加一个整型字段,然后将此字段的值计算为与 FID 或 OBJECTID 字段的值相等。 | Field |
null_value (可选) | 表示空(缺失)值的值。如果未指定任何值,则将地理数据库要素类假定为 <Null>。对于 shapefile 输入,空占位符的数值为必填项。 | Double |
out_table (可选) | 包含已填充(估算)值的输出表。 如果在相关表中输入了内容,则输出表为必填项。 | Table |
代码示例
以下 Python 窗口脚本演示了如何使用 FillMissingValues 工具。
import arcpy
arcpy.env.workspace = r"C:\STPM\Chicago.gdb"
arcpy.FillMissingValues_stpm("Chicago_Data", "Chicago_Filled", "COUNT", "AVERAGE",
"K_NEAREST_NEIGHBORS", "", "", "", 8)
以下独立 Python 脚本演示了如何使用 FillMissingValues 工具。
# Fill missing values using a feature set and related table
# Use the results to create a space-time cube from defined locations
# Run Emerging Hot Spot Analysis on the data
# Visualize the results in 3d
#Import system modules
import arcpy
# Set geoprocessor object property to overwrite existing output, by default
arcpy.env.overwriteOutput = True
# Local variables ...
arcpy.env.workspace = r"C:\STPM\Chicago.gdb"
try:
# Fill missing values in a feature class containing block group polygon shapes and a related table containing the incidents
# Since some of the values are missing we will fill them using the temporal trend method.
arcpy.FillMissingValues_stpm("Chicago_Feature", "Chicago_FilledFeature", "COUNT", "TEMPORAL_TREND", "", "", NoneNone,
"TIME", "", "MYID", "Chicago_Table", "MYID", "", "", "", "Chicago_FilledTable")
# Create a defined location space time cube using a related table
# Using a reference time at the start of the month to force binning fall on month breaks
# Using temporal aggregation to sum multiple entries into one month
# Using the method drop location if missing values since we already filled using Fill Missing Values
arcpy.CreateSpaceTimeCubeDefinedLocations_stpm("Chicago_FilledFeature", r"C:\STPM\Chicago_Cube.nc", "MYID",
"APPLY_TEMPORAL_AGGREGATION", "TIME", "1 Months", "REFERENCE_TIME",
"10/1/2015", "", "COUNT SUM DROP_LOCATIONS", "Chicago_FilledTable",
"MYID")
# Run an emerging hot spot analysis on the defined locations cube
# Using contiguity edges so only block groups which bound each other are considered neighbours
arcpy.EmergingHotSpotAnalysis_stpm(r"C:\STPM\Chicago_Cube.nc", "COUNT_SUM_NONE",
"Chicago_Cube_EmergingHotSpot", "", 1, "",
"CONTIGUITY_EDGES_ONLY")
# Use Visualize Cube in 3d to see the hot spot results for each time slice
arcpy.VisualizeSpaceTimeCube3D_stpm(r"C:\STPM\Chicago_Cube.nc", "COUNT_SUM_NONE", "HOT_AND_COLD_SPOT_RESULTS",
"Chicago_Cube_Visualize3d")
except arcpy.ExecuteError:
# If any error occurred when running the tool, print the messages
print(arcpy.GetMessages())
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是