Выбрать в слое по дате и времени (Анализ преступности и безопасности)

Сводка

Выбирает записи на основе диапазонов даты и времени или свойств дат, например, одиночные даты, диапазоны, периоды, дни недели, месяцы или годы.

Использование

  • Входными данными должен быть векторный слой или представление таблицы.

  • Входные данные должны содержать поле даты. Если поле даты отсутствует, используйте инструмент Конвертировать поле времени, чтобы сгенерировать поле даты по датам, отформатированным как текст в текстовом поле.

  • Инструмент выполняет выборку, используя все критерии выборки, если любая часть данных не соответствует критериям, объект не будет выбран.

  • Чтобы использовать инструмент в модели или в скрипте, используйте инструмент Создать представление таблицы или Создать векторный слой, чтобы конвертировать входной класс объектов в представление таблицы или векторный слой, соответственно, перед запуском этого инструмента.

Синтаксис

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})
ParameterОбъяснениеТип данных
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Записи будут выбираться на основе периода, предшествующего недавнему периоду, относительно текущей даты (системных даты и времени). Например, если текущая дата - это 29 января, а временной срез составляет 14 дней, будут выбраны записи с 1 по 14 января. Эта опция может использоваться в комбинации с последующей выборкой По недавним для сравнения числа записей в двух смежных периодах времени (например, два 14-дневных периода, 1–14 января и 15–28 января).
String
single_date
(Дополнительный)

Выбирается одна дата и время.

Этот параметр активен только при выборе По одной дате для параметра Тип выборки даты.

Date
start_date
(Дополнительный)

Дата начала диапазона дат.

Этот параметр активен только при выборе По диапазону дат для параметра Тип выборки даты.

Date
end_date
(Дополнительный)

Дата окончания диапазона дат.

Этот параметр активен только при выборе По диапазону дат для параметра Тип выборки даты.

Date
use_system_time
(Дополнительный)

Определяет, будут ли записи текущего дня (локальное системное время) включаться в выборку, если они присутствуют в последнем периода.

  • SYSTEM_TIMEЗаписи текущего дня будут включены в выборку.
  • NO_SYSTEM_TIMEЗаписи текущего дня не будут включены в выборку. Это значение по умолчанию Короткое целое.

Например, задан период 14 дней, локальное время запуска инструмента 17:00 15 января, недавний временной интервал включает все записи с 17:00 на дату 14 дней назад до 17:00 в день запуска инструмента, и параметр SYSTEM_TIME включен. В данном примере в выборку войдут данные с 17:00 1 января до 17:00 15 января 2017 года. При использовании этого примера с выбранным NO_SYSTEM_TIME, последний период будет использовать начало текущего дня в качестве времени окончания (на основе локального системного времени). В данном случае в выборку войдут данные с 0:00:00 1 января до 0:00:00 15 января 2017 года.

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Выбираются записи в январе.
  • FEBRUARYВыбираются записи в феврале.
  • MARCHВыбираются записи в марте.
  • APRILВыбираются записи в апреле.
  • MAYВыбираются записи в мае.
  • JUNEВыбираются записи в июне.
  • JULYВыбираются записи в июле.
  • AUGUSTВыбираются записи в августе.
  • SEPTEMBERВыбираются записи в сентябре.
  • OCTOBERВыбираются записи в октябре.
  • NOVEMBERВыбираются записи в ноябре.
  • DECEMBERВыбираются записи в декабре.
String
years
[years,...]
(Дополнительный)

Задает год, в который выбираются записи.

Long

Производные выходные данные

NameОбъяснениеТип данных
out_layer_or_view

Обновленный входной слой с применением выборки.

Представление таблицы
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")

Environments

Этот инструмент не использует параметры среды геообработки

Информация о лицензиях

  • Basic: Да
  • Standard: Да
  • Advanced: Да

Связанные разделы