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

描述

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

使用方法

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

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

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

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

语法

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
selection_type

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

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

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

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

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

Field
start_date_field
(可选)

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

Field
end_date_field
(可选)

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

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

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

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

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

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

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

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

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

Date
start_date
(可选)

日期范围的开始日期。

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

Date
end_date
(可选)

日期范围的结束日期。

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

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。

Boolean
time_slice
(可选)

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

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

Time Unit
start_time
(可选)

时间范围的开始时间。

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

Date
end_time
(可选)

时间范围的结束时间。

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

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

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

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

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

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 月发生的记录。

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

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

指定用于选择记录的年。

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

Long

派生输出

名称说明数据类型
out_layer_or_view

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

表视图
count

所选记录的数量。

长整型

代码示例

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: 是

相关主题