描述
将根据日期和时间范围或日期属性(例如,单个日期、时间范围、时间段、星期、月或年)选择记录。
使用方法
语法
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: 是