描述
将根据日期和时间范围或日期属性(例如,单个日期、时间范围、时间段、星期、月或年)选择记录。
使用方法
语法
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 | 指定将如何应用选择内容,以及如果选择内容已存在,则将执行的操作。
| String |
time_type | 指定将用于选择记录的日期和时间字段。
| String |
date_field (可选) | 输入图层中将用作选择依据的日期字段。如果时间类型参数设置为单个时间字段,则此参数仅处于活动状态。 | Field |
start_date_field (可选) | 时间范围中将用作选择依据的起始日期字段。如果时间类型参数设置为时间范围字段,则此参数仅处于活动状态。 | Field |
end_date_field (可选) | 时间范围中将用作选择依据的结束日期字段。如果时间类型参数设置为时间范围字段,则此参数仅处于活动状态。 | Field |
selection_options [selection_options,...] (可选) | 指定将如何选择日期和时间。
| String |
date_selection_type (可选) | 指定根据日期范围、单数日期、新近时间段或比较时间段选择记录。 仅在将选择选项参数设置为日期时才启用此参数。
| String |
single_date (可选) | 要选择的单个日期和时间。 仅在将日期选择类型参数设置为按单个日期时才启用此参数。 | Date |
start_date (可选) | 日期范围的开始日期。 仅在将日期选择类型参数设置为按日期范围时才启用此参数。 | Date |
end_date (可选) | 日期范围的结束日期。 仅在将日期选择类型参数设置为按日期范围时才启用此参数。 | Date |
use_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,...] (可选) | 指定用于选择记录的星期。
仅在将选择选项参数设置为星期时才启用此参数。 | String |
months [months,...] (可选) | 指定用于选择记录的月。
仅在将选择选项参数设置为月时才启用此参数。 | String |
years [years,...] (可选) | 指定用于选择记录的年。 仅在将选择选项参数设置为年时才启用此参数。 | Long |
派生输出
名称 | 说明 | 数据类型 |
out_layer_or_view | 已应用选择的已更新输入。 | 表视图 |
count | 所选记录的数量。 | 长整型 |
代码示例
以下脚本演示了如何在即时模式下使用 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 函数:
# 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: 是