概要
日付範囲か日付プロパティ (日付、時間範囲、期間、曜日、月、年など) に基づいてレコードを選択します。
使用法
入力には、フィーチャ レイヤーまたはテーブル ビューのいずれかを指定する必要があります。
入力には日付フィールドが含まれる必要があります。入力の日付フィールドが含まれない場合は、[時間フィールドの変換 (Convert Time Field)] ツールを使用し、テキスト フィールドでテキストとして書式設定された日付から日付フィールドを生成します。
このツールは、すべての選択基準を使用して選択を行います。入力された日付の中に選択基準を満たさない部分がある場合は、フィーチャは選択されません。
このツールをモデルまたはスクリプトで使用するには、このツールを実行する前に [テーブル ビューの作成 (Make Table View)] または [フィーチャ レイヤーの作成 (Make Feature Layer)] ツールを使用し、入力フィーチャクラスをそれぞれテーブルまたはフィーチャ レイヤーに変換します。
構文
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 (オプション) | レコード選択のベースとして、日付範囲、1 つの日付、期間の新しさ、期間比較のいずれかを指定します。 このパラメーターは、[選択オプション] パラメーターが [日付] に設定されている場合のみ有効です。
| String |
single_date (オプション) | 選択される単一の日時。 このパラメーターは、[日付選択タイプ] パラメーターが [単一日] に設定されている場合のみ有効です。 | Date |
start_date (オプション) | 日付範囲の開始日。 このパラメーターは、[日付選択タイプ] パラメーターが [日付範囲] に設定されている場合のみ有効です。 | Date |
end_date (オプション) | 日付範囲の終了日。 このパラメーターは、[日付選択タイプ] パラメーターが [日付範囲] に設定されている場合のみ有効です。 | Date |
use_system_time (オプション) | 現在の日付 (ローカル システムの時間) のレコードが最近の期間に存在する場合、選択に含めるかどうかを指定します。
たとえば、指定されたタイム スライスが 14 日間であり、ツールを実行したときのローカル システム時間が 1 月 15 日の 5:00 p.m. である場合、最近の期間には 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 がオンの場合は、最近の期間の終了時間は現在の日付の午前 0 時を使用します (ローカル システム時間に基づく)。この例では、14 日間のタイム スライスの場合、2017 年 1 月 1 日 12:00:00 AM から 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 | 選択したレコードの数。 | Long |
コードのサンプル
次のスクリプトは、イミディエイト モードで 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: はい