按日期和时间选择 (犯罪分析和安全)

摘要

将根据日期和时间范围或日期属性(例如,单个日期、时间范围、时间段、星期、月或年)选择记录。

使用情况

  • 输入必须为要素图层或表视图。

  • 输入必须包含日期字段。 如果输入不包含日期字段,请使用转换时间字段工具生成一个日期字段,该日期字段源自文本字段中格式化为文本的日期。

  • 此工具将使用所有选择条件进行选择,如果输入日期的任何部分都不符合选择条件,则将不会选择该要素。

  • 要在模型或脚本中使用此工具,在执行此工具之前,请使用创建表视图创建要素图层工具将输入要素类分别转换为表视图或要素图层。

参数

标注说明数据类型
输入行

包含将应用选择内容的日期字段的数据。

Table View; Feature Layer
选择内容类型

指定将如何应用选择内容,以及如果选择内容已存在,则将执行的操作。

  • 新建选择内容生成的选择内容将替换当前选择内容。 这是默认设置。
  • 添加到当前选择内容当存在一个选择内容时,会将生成的选择内容添加到当前选择内容中。 如果不存在选择内容,该选项的作用与新选择内容选项的作用相同。
  • 从当前选择内容中移除将生成的选择内容从当前选择内容中移除。 如果不存在选择内容,该选项不起作用。
  • 选择当前选择内容的子集将生成的选择内容与当前选择内容进行组合。 仅两者共有的记录保持选中状态。
String
时间类型

指定将用于选择记录的日期和时间字段。

  • 单个时间字段将基于输入要素上的单个时间字段选择记录。
  • 时间范围字段将基于输入要素上的起始和结束时间字段选择记录。
String
日期字段
(可选)

输入图层中将用作选择依据的日期字段。 如果时间类型参数设置为单个时间字段,则此参数仅处于活动状态。

Field
起始日期字段
(可选)

时间范围中将用作选择依据的起始日期字段。 如果时间类型参数设置为时间范围字段,则此参数仅处于活动状态。

Field
结束日期字段
(可选)

时间范围中将用作选择依据的结束日期字段。 如果时间类型参数设置为时间范围字段,则此参数仅处于活动状态。

Field
选择选项
(可选)

指定将如何选择日期和时间。

  • 日期将按日期进行选择。
  • 时间将按时间进行选择。
  • 星期将按星期进行选择。
  • 将按月进行选择。
  • 将按年进行选择。
String
日期选择类型
(可选)

指定根据日期范围、单数日期、新近时间段或比较时间段选择记录。

仅在将选择选项参数设置为日期时才启用此参数。

  • 按日期范围将根据起始和结束日期范围选择记录。
  • 按单个日期将根据指定日期选择记录。
  • 按新近性将根据与当前日期(系统日期和时间)相关的时间段(例如最近 14 天内)选择记录。
  • 按比较时间段将根据与当前日期(系统日期和时间)相关的最近时间段的上一时间段选择记录。 例如,如果当前日期为 1 月 29 日,时间片为 14 天,则将选择 1 月 1 日至 1 月 14 日之间发生的记录。 此选项可以与后续按新近性Python 中的 RECENCY)选择结合使用,用于比较两个相邻时间段之间的记录计数(例如,1 月 1 日至 14 日和 1 月 15 日至 28 日的两个 14 天时间段)。
String
日期
(可选)

要选择的单个日期和时间。

仅在将日期选择类型参数设置为按单个日期时才启用此参数。

Date
开始日期
(可选)

日期范围的开始日期。

仅在将日期选择类型参数设置为按日期范围时才启用此参数。

Date
结束日期
(可选)

日期范围的结束日期。

仅在将日期选择类型参数设置为按日期范围时才启用此参数。

Date
使用当前系统时间作为结束时间
(可选)

指定是否将当前日期(本地系统时间)的记录包含在选择中(如果其在最近时间段中存在)。

  • 选中 - 当前日期的记录将包含在选择中。
  • 未选中 - 当前日期的记录将不包含在选择中。

例如,指定的时间片为 14 天,本地系统时间为 5:00 p.m.,该工具在 1 月 15 日执行时,新近时间段将包含 14 天前的日期 5:00 p.m. 和执行工具当天 5:00 p.m. 之间的所有记录,并选中此参数。 在本示例中,对于 14 天时间片,选择将为 2017 年 1 月 1 日 5:00:00 PM 至 2017 年 1 月 15 日 5:00:00 PM。 如果在未选中此参数的情况下使用此相同示例,则最近时间段将使用当天的开始时间作为结束时间(基于本地系统时间)。 在本示例中,对于 14 天时间片,选择将为 2017 年 1 月 1 日 12:00:00 AM 至 2017 年 1 月 15 日 12:00:00 AM。

仅在将日期选择类型参数设置为按比较时间段按新近性时才启用此参数。

Boolean
时间片
(可选)

用于定义选择将基于的最近时间段的时间单位(分钟、小时、天、周、月或年)数量,例如最近 14 天内的事件。

仅在将日期选择类型参数设置为按比较时间段按新近性时才启用此参数。

Time Unit
开始时间
(可选)

时间范围的开始时间。

仅在将选择选项参数设置为时间时才启用此参数。

Date
结束时间
(可选)

时间范围的结束时间。

仅在将选择选项参数设置为时间时才启用此参数。

Date
星期
(可选)

指定用于选择记录的星期。

仅在将选择选项参数设置为星期时才启用此参数。

  • 星期一将选择星期一发生的记录。
  • 星期二将选择星期二发生的记录。
  • 星期三将选择星期三发生的记录。
  • 星期四将选择星期四发生的记录。
  • 星期五将选择星期五发生的记录。
  • 星期六将选择星期六发生的记录。
  • 星期日将选择星期日发生的记录。
String
(可选)

指定用于选择记录的月。

仅在将选择选项参数设置为时才启用此参数。

  • 一月将选择 1 月发生的记录。
  • 二月将选择 2 月发生的记录。
  • 三月将选择 3 月发生的记录。
  • 四月将选择 4 月发生的记录。
  • 五月将选择 5 月发生的记录。
  • 六月将选择 6 月发生的记录。
  • 七月将选择 7 月发生的记录。
  • 八月将选择 8 月发生的记录。
  • 九月将选择 9 月发生的记录。
  • 十月将选择 10 月发生的记录。
  • 十一月将选择 11 月发生的记录。
  • 十二月将选择 12 月发生的记录。
String
(可选)

指定用于选择记录的年。

仅在将选择选项参数设置为时才启用此参数。

Long

派生输出

标注说明数据类型
已更新的图层或表视图

已应用选择的已更新输入。

Table View; Feature Layer
行计数

所选记录的数量。

Long

arcpy.ca.SelectLayerByDateAndTime(in_layer_or_view, selection_type, time_type, {date_field}, {start_date_field}, {end_date_field}, {selection_options}, {date_selection_type}, {single_date}, {start_date}, {end_date}, {use_system_time}, {time_slice}, {start_time}, {end_time}, {days_of_week}, {months}, {years})
名称说明数据类型
in_layer_or_view

包含将应用选择内容的日期字段的数据。

Table View; Feature Layer
selection_type

指定将如何应用选择内容,以及如果选择内容已存在,则将执行的操作。

  • NEW_SELECTION生成的选择内容将替换当前选择内容。 这是默认设置。
  • ADD_TO_SELECTION当存在一个选择内容时,会将生成的选择内容添加到当前选择内容中。 如果不存在选择内容,该选项的作用与新选择内容选项的作用相同。
  • REMOVE_FROM_SELECTION将生成的选择内容从当前选择内容中移除。 如果不存在选择内容,该选项不起作用。
  • SUBSET_SELECTION将生成的选择内容与当前选择内容进行组合。 仅两者共有的记录保持选中状态。
String
time_type

指定将用于选择记录的日期和时间字段。

  • SINGLE_TIME_FIELD将基于输入要素上的单个时间字段选择记录。
  • TIME_RANGE_FIELDS将基于输入要素上的起始和结束时间字段选择记录。
String
date_field
(可选)

输入图层中将用作选择依据的日期字段。 仅在将 time_type 参数设置为 SINGLE_TIME_FIELD 时才启用此参数。

Field
start_date_field
(可选)

时间范围中将用作选择依据的起始日期字段。 仅在将 time_type 参数设置为 TIME_RANGE_FIELDS 时才启用此参数。

Field
end_date_field
(可选)

时间范围中将用作选择依据的结束日期字段。 仅在将 time_type 参数设置为 TIME_RANGE_FIELDS 时才启用此参数。

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

指定将如何选择日期和时间。

  • DATE将按日期进行选择。
  • TIME将按时间进行选择。
  • DAY_OF_WEEK将按星期进行选择。
  • MONTH将按月进行选择。
  • YEAR将按年进行选择。
String
date_selection_type
(可选)

指定根据日期范围、单数日期、新近时间段或比较时间段选择记录。

仅在将 selection_options 参数设置为 DATE 时才启用此参数。

  • DATE_RANGE将根据起始和结束日期范围选择记录。
  • SINGLE_DATE将根据指定日期选择记录。
  • RECENCY将根据与当前日期(系统日期和时间)相关的时间段(例如最近 14 天内)选择记录。
  • COMPARATIVE将根据与当前日期(系统日期和时间)相关的最近时间段的上一时间段选择记录。 例如,如果当前日期为 1 月 29 日,时间片为 14 天,则将选择 1 月 1 日至 1 月 14 日之间发生的记录。 此选项可以与后续按新近性Python 中的 RECENCY)选择结合使用,用于比较两个相邻时间段之间的记录计数(例如,1 月 1 日至 14 日和 1 月 15 日至 28 日的两个 14 天时间段)。
String
single_date
(可选)

要选择的单个日期和时间。

仅在将 date_selection_type 参数设置为 SINGLE_DATE 时才启用此参数。

Date
start_date
(可选)

日期范围的开始日期。

仅在将 date_selection_type 参数设置为 DATE_RANGE 时才启用此参数。

Date
end_date
(可选)

日期范围的结束日期。

仅在将 date_selection_type 参数设置为 DATE_RANGE 时才启用此参数。

Date
use_system_time
(可选)

指定是否将当前日期(本地系统时间)的记录包含在选择中(如果其在最近时间段中存在)。

  • SYSTEM_TIME当前日期的记录将包含在选择中。
  • NO_SYSTEM_TIME当前日期的记录将不包含在选择中。 这是默认设置。

例如,指定的时间片为 14 天,本地系统时间为 5:00 p.m.,该工具在 1 月 15 日执行时,新近时间段将包含 14 天前的日期 5:00 p.m. 和执行工具当天 5:00 p.m. 之间的所有记录,并选择 SYSTEM_TIME。 在本示例中,选择将为 2017 年 1 月 1 日 5:00:00 PM 至 2017 年 1 月 15 日 5:00:00 PM。如果在选择 NO_SYSTEM_TIME 的情况下使用此相同示例,则最近时间段将使用当天的开始时间作为结束时间(基于本地系统时间)。 在本示例中,对于 14 天时间片,选择将为 2017 年 1 月 1 日 12:00:00 AM 至 2017 年 1 月 15 日 12:00:00 AM。

仅在将 date_selection_type 参数设置为 COMPARATIVERECENCY 时才启用此参数。

Boolean
time_slice
(可选)

用于定义选择将基于的最近时间段的时间单位(分钟、小时、天、周、月或年)数量,例如最近 14 天内的事件。

仅在将 date_selection_type 参数设置为 COMPARATIVERECENCY 时才启用此参数。

Time Unit
start_time
(可选)

时间范围的开始时间。

仅在将 selection_options 参数设置为 TIME 时才启用此参数。

Date
end_time
(可选)

时间范围的结束时间。

仅在将 selection_options 参数设置为 TIME 时才启用此参数。

Date
days_of_week
[days_of_week,...]
(可选)

指定用于选择记录的星期。

  • MONDAY将选择星期一发生的记录。
  • TUESDAY将选择星期二发生的记录。
  • WEDNESDAY将选择星期三发生的记录。
  • THURSDAY将选择星期四发生的记录。
  • FRIDAY将选择星期五发生的记录。
  • SATURDAY将选择星期六发生的记录。
  • SUNDAY将选择星期日发生的记录。

仅在将 selection_options 参数设置为 DAY_OF_WEEK 时才启用此参数。

String
months
[months,...]
(可选)

指定用于选择记录的月。

  • JANUARY将选择 1 月发生的记录。
  • FEBRUARY将选择 2 月发生的记录。
  • MARCH将选择 3 月发生的记录。
  • APRIL将选择 4 月发生的记录。
  • MAY将选择 5 月发生的记录。
  • JUNE将选择 6 月发生的记录。
  • JULY将选择 7 月发生的记录。
  • AUGUST将选择 8 月发生的记录。
  • SEPTEMBER将选择 9 月发生的记录。
  • OCTOBER将选择 10 月发生的记录。
  • NOVEMBER将选择 11 月发生的记录。
  • DECEMBER将选择 12 月发生的记录。

仅在将 selection_options 参数设置为 MONTH 时才启用此参数。

String
years
[years,...]
(可选)

指定用于选择记录的年。

仅在将 selection_options 参数设置为 YEAR时才启用此参数。

Long

派生输出

名称说明数据类型
out_layer_or_view

已应用选择的已更新输入。

Table View; Feature Layer
count

所选记录的数量。

Long

代码示例

SelectLayerByDateAndTime 示例 1(Python 窗口)

以下脚本演示了如何在即时模式下使用 SelectLayerByDateAndTime 函数。

import arcpy
arcpy.env.workspace = r"C:/data/city_pd.gdb"

arcpy.ca.SelectLayerByDateAndTime("Crimes",
                                "NEW_SELECTION",
                                "SINGLE_TIME_FIELD",
                                "offendate",
                                None,
                                None,
                                "DATE",
                                "DATE_RANGE",
                                None,
                                "8/1/2018",
                                "8/31/2018")
SelectLayerByDateAndTime 示例 2(独立窗口)

下面的独立脚本演示了如何在脚本中使用 SelectLayerByDateAndTime 函数:

# Name: SelectLayerByDateAndTime.py
# Description: Select crimes that occurred in the past 28 days, from 9 PM to 1 PM, on the weekend, from the month of October to December,
#              in the year 2018, and show the selection count. Finally, make a selection based on all the queries above.

# Import script modules
import arcpy

# Set the workspace
arcpy.env.workspace = r"C:\data\city_pd.gdb"

# Convert Feature class to table view
arcpy.management.MakeTableView("Crimes", "Crimes_View")

lyr, count = arcpy.ca.SelectLayerByDateAndTime(in_layer_or_view="Crimes_View",
                                                selection_type="NEW_SELECTION",
                                                time_type="SINGLE_TIME_FIELD",
                                                date_field="offendate",
                                                selection_options="DATE",
                                                date_selection_type="RECENCY",
                                                time_slice="28 Days")

arcpy.AddMessage("Crimes that occurred in past 28 days: {}".format(str(count)))
arcpy.management.SelectLayerByAttribute("Crimes_View","CLEAR_SELECTION")

lyr, count = arcpy.ca.SelectLayerByDateAndTime(in_layer_or_view="Crimes_View",
                                                selection_type="NEW_SELECTION",
                                                time_type="SINGLE_TIME_FIELD",
                                                date_field="offendate",
                                                selection_options="TIME",
                                                start_time="9:00 PM",
                                                end_time="1:00 AM")

arcpy.AddMessage("All crimes that occurred between 9PM and 1AM: {}".format(count))
arcpy.management.SelectLayerByAttribute("Crimes_View","CLEAR_SELECTION")

lyr, count = arcpy.ca.SelectLayerByDateAndTime(in_layer_or_view="Crimes_View",
                                                selection_type="NEW_SELECTION",
                                                time_type="SINGLE_TIME_FIELD",
                                                date_field="offendate",
                                                selection_options="DAY_OF_WEEK",
                                                days_of_week=["SATURDAY", "SUNDAY"])

arcpy.AddMessage("All crimes that occurred on the weekend: {}".format(count))
arcpy.management.SelectLayerByAttribute("Crimes_View","CLEAR_SELECTION")

lyr, count = arcpy.ca.SelectLayerByDateAndTime(in_layer_or_view="Crimes_View",
                                                selection_type="NEW_SELECTION",
                                                time_type="SINGLE_TIME_FIELD",
                                                date_field="offendate",
                                                selection_options="MONTH",
                                                months=["OCTOBER", "NOVEMBER", "DECEMBER"])

arcpy.AddMessage("All crimes that occurred October through December: {}".format(count))
arcpy.management.SelectLayerByAttribute("Crimes_View","CLEAR_SELECTION")


lyr, count = arcpy.ca.SelectLayerByDateAndTime(in_layer_or_view="Crimes_View",
                                                selection_type="NEW_SELECTION",
                                                time_type="SINGLE_TIME_FIELD",
                                                date_field="offendate",
                                                selection_options="YEAR",
                                                years=[2018])

arcpy.AddMessage("All crimes that occurred in the year 2018: {}".format(count))
arcpy.management.SelectLayerByAttribute("Crimes_View","CLEAR_SELECTION")


# Combine selection options for more detailed time queries
lyr, count = arcpy.ca.SelectLayerByDateAndTime(in_layer_or_view="Crimes_View",
                                                selection_type="NEW_SELECTION",
                                                time_type="SINGLE_TIME_FIELD",
                                                date_field="offendate",
                                                selection_options=["TIME", "DAY_OF_WEEK", "MONTH","YEAR"],
                                                start_time="9:00 PM",
                                                end_time="1:00 AM",
                                                days_of_week=["SATURDAY", "SUNDAY"],
                                                months=["OCTOBER", "NOVEMBER", "DECEMBER"],
                                                years=[2018])

message = """All crimes that occurred in the year 2018 during the months
of October through November on the weekends from 9PM to 1AM: {}
""".format(count)

arcpy.AddMessage(message)
arcpy.management.SelectLayerByAttribute("Crimes_View", "CLEAR_SELECTION")

环境

此工具不使用任何地理处理环境。

许可信息

  • Basic: 是
  • Standard: 是
  • Advanced: 是

相关主题