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

摘要

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

使用情况

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

  • 输入必须包含一个日期字段。 如果输入中不包含日期字段,则将使用转换时间字段工具从文本字段中的文本格式日期生成一个日期字段。

  • 该工具将使用所有选择条件执行选择。 如果输入日期的任何部分与选择条件不匹配,则不会选择该要素或记录。

    所有日期选择均基于计算机的时区。

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

参数

标注说明数据类型
输入行

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

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 天,当工具运行时,本地系统时间为 1 月 15 日下午 5:00,且最近时间段包括从 14 天前的下午 5:00 到工具运行当天下午 5:00 之间的所有记录,且此参数处于选中状态。 在此示例中,14 天时间段的选择将为 2017 年 1 月 1 日下午 5:00:00 到 2017 年 1 月 15 日下午 5:00:00。 在使用此示例且未选中此参数的情况下,最近时间段将使用当前日期的开始时间作为结束时间(基于本地系统时间)。 在此情况下,14 天时间段的选择将为 2017 年 1 月 1 日上午 12:00:00 到 1 月 15 日上午 12:00:00。

仅当将日期选择类型参数设置为按比较时间段按最近时间时,此参数才处于活动状态。

Boolean
时间片
(可选)

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

仅当将日期选择类型参数设置为按比较时间段按最近时间时,此参数才处于活动状态。

Time Unit
开始时间
(可选)

时间范围的开始时间。

仅当将选择选项参数设置为时间时,此参数才处于活动状态。

Date
结束时间
(可选)

时间范围的结束时间。

仅当将选择选项参数设置为时间时,此参数才处于活动状态。

Date
一周中的一天
(可选)

指定用于选择记录的一周中第一天。

仅当将选择选项参数设置为一周中的一天时,此参数才处于活动状态。

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

指定用于选择记录的月份。

仅当将选择选项参数设置为月份时,此参数才处于活动状态。

  • 一月将选择发生在一月的记录。
  • 二月将选择发生在二月的记录。
  • 三月将选择发生在三月的记录。
  • 四月将选择发生在四月的记录。
  • 五月将选择发生在五月的记录。
  • 六月将选择发生在六月的记录。
  • 七月将选择发生在七月的记录。
  • 八月将选择发生在八月的记录。
  • 九月将选择发生在九月的记录。
  • 十月将选择发生在十月的记录。
  • 十一月将选择发生在十一月的记录。
  • 十二月将选择发生在十二月的记录。
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 天,当工具运行时,本地系统时间为 1 月 15 日下午 5:00,且最近时间段包括从 14 天前的下午 5:00 到工具运行当天下午 5:00 之间的所有记录,且已选择 SYSTEM_TIME。 在此示例中,14 天时间段的选择将为 2017 年 1 月 1 日下午 5:00:00 到 2017 年 1 月 15 日下午 5:00:00。在使用此示例且已选择 NO_SYSTEM_TIME 的情况下,最近时间段将使用当前日期的开始时间作为结束时间(基于本地系统时间)。 在此情况下,14 天时间段的选择将为 2017 年 1 月 1 日上午 12:00:00 到 1 月 15 日上午 12:00:00。

仅当将 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将选择发生在一月的记录。
  • FEBRUARY将选择发生在二月的记录。
  • MARCH将选择发生在三月的记录。
  • APRIL将选择发生在四月的记录。
  • MAY将选择发生在五月的记录。
  • JUNE将选择发生在六月的记录。
  • JULY将选择发生在七月的记录。
  • AUGUST将选择发生在八月的记录。
  • SEPTEMBER将选择发生在九月的记录。
  • OCTOBER将选择发生在十月的记录。
  • NOVEMBER将选择发生在十一月的记录。
  • DECEMBER将选择发生在十二月的记录。

仅当将 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: 是

相关主题