ラベル | 説明 | データ タイプ |
入力フォルダー | 写真ファイル (.jpg または .tif) が保存されているフォルダー。 このフォルダーの写真は再帰的にスキャンされ、このフォルダーにある写真と、そのサブフォルダーにある写真のすべてが出力に追加されます。 | Folder |
入力テーブル | 行を写真ファイルとマッチさせるテーブルまたはフィーチャクラス。 この入力テーブルは通常、GPS の記録を表すポイント フィーチャクラスになります。 | Table View |
時間フィールド | 各行が取得または作成された日時を表す入力テーブルの日付フィールド。 フィールドは日付タイプにする必要があります。文字列タイプや数値タイプにすることはできません。 | Field |
出力テーブル | 写真とマッチする入力テーブルの Object ID 値と、マッチする写真のパスを含む出力テーブル。 写真とマッチする入力テーブルの Object ID 値のみが、出力テーブルに含まれます。 | Table |
一致しない写真テーブル (オプション) | オプションの出力テーブル。入力フォルダーにあるタイム スタンプが無効な写真ファイルと、写真のタイム スタンプの時間許容値内にタイム スタンプが収まる入力行がないためにマッチさせることができない写真がリストで示されます。 パスが指定されていない場合、このテーブルは作成されません。 | Table |
写真をアタッチメントとして追加 (オプション) |
| Boolean |
時間許容値 (オプション) | 入力行とマッチする写真ファイルとの日付/時刻の最大差 (秒)。 入力行と写真ファイルのタイム スタンプの差がこの許容値よりも大きい場合は、マッチングが行われません。 日付/時刻の差の大きさにかかわらず、写真ファイルを最も近いタイム スタンプを持つ行にマッチさせる場合は、許容値を 0 に設定します。 この値では符号 (- または +) は無関係で、指定された値の絶対値が使用されます。 このパラメーターは、GPS およびデジタル カメラで記録された時刻の間で一定のシフトまたはオフセットを調整する目的で使用しないでください。 入力行のタイムスタンプをシフトして写真のタイム スタンプとマッチさせる場合は、[クロック オフセット] パラメーターを使用するか、[タイム ゾーンの変換 (Convert Time Zone)] ツールを使用します。 | Double |
クロック オフセット (オプション) | 写真の撮影に使用したデジタル カメラの内部時計と GPS ユニットの時間差 (秒)。 デジタル カメラの時計が GPS ユニットの時計より遅れている場合は、正の値を指定します。デジタル カメラの時計が GPS ユニットの時計より進んでいる場合は、負の値を指定します。 たとえば、タイム スタンプが 11:35:17 である写真を、タイム スタンプが 11:35:32 である行とマッチさせる場合は、[クロック オフセット] 値に「15」を指定します。 | Double |
サマリー
写真および行のタイム スタンプに従って、写真ファイルをテーブルまたはフィーチャクラスの行とマッチングさせます。 写真の撮影時刻に最も近いタイム スタンプを持つ行が、写真にマッチングされます。 入力行とマッチする写真のパスから、Object ID 値を含む新しいテーブルが作成されます。 また、このツールを使用して、マッチする写真ファイルを入力テーブルの行にジオデータベース アタッチメントとして追加することもできます。
図
使用法
このツールを使用すると、GPS で取得したフィーチャと、その GPS フィーチャを取得した時刻に撮影されたデジタル写真をマッチングすることができます。
出力テーブルには、以下の属性フィールドが含まれます。
- IN_FID- 入力行の Object ID。この行のタイム スタンプが、写真のタイム スタンプとマッチされます。
- Photo_Path- 写真ファイルの絶対パス。この写真のタイム スタンプが、IN_FID フィールドで指定した入力行のタイム スタンプとマッチされます。
- Photo_Name- 写真ファイルの短い名前。
- Match_Diff- 写真ファイルのタイム スタンプとマッチする入力行のタイム スタンプの差。 この数値は、[時間差の単位] パラメーターで指定された単位で表されます。
入力テーブルではシェープファイルと dBASE データがサポートされますが、ジオデータベース データを使用することをお勧めします。これは、シェープファイルまたは dBASE テーブルの日付フィールドには、日付と時刻の両方の情報を保存できないためです。
1 つの入力行のタイム スタンプが複数の写真のタイム スタンプにマッチする場合があるため、出力テーブルには同じ IN_FID 値を含む複数の行が存在する場合があります (出力の各行は、1 つの写真と 1 つの入力行のマッチングを表します)。
出力テーブルは、出力の IN_FID フィールドと入力の Object ID の値を使用して入力テーブルに結合することができます。 出力テーブルに同じ IN_FID フィールド値を含む複数の行がある (1 つの入力行が複数の写真にマッチする) 場合は、リレートまたはリレーションシップ クラスを使用して出力を入力にリンクします。
時間フィールドは Date 型である必要があります。 テキスト フィールドまたは数値フィールドを Date 型のフィールドに変換するには、[時間フィールドの変換 (Convert Time Field)] ツールを使用します。
GPS ポイントとデジタル写真が正確に同じ時刻に取得されている場合でも、デバイスによって記録された時刻のタイム ゾーンが異なる場合があります。 たとえば、GPS デバイスでは協定世界時 (UTC) や グリニッジ標準時 (GMT) が使用されることが多く、デジタル カメラでは一般的にローカルなタイム ゾーンで記録されます。 タイム ゾーンの違いによるタイム スタンプの差を調整するには、[タイム ゾーンの変換 (Convert Time Zone)] ツールを使用して入力テーブルの時刻フィールドを変更し、写真ファイルのタイム スタンプで使用されているタイム ゾーンにマッチさせます。
同様に、GPS の時計がデジタル カメラの時計と同期していない場合があります。 これらの時計が同期していない場合に写真と GPS ポイントをマッチさせるには、2 つの時計の時間差を調べ、この値を [クロック オフセット] パラメーターに使用します。
[時間許容値] と [クロック オフセット] パラメーターは、秒で指定する必要があります。 時間の単位を秒に換算するユーティリティは、インターネット上に数多くあります。 たとえば、3 分 12 秒は 192 秒です。
パラメーター
arcpy.management.MatchPhotosToRowsByTime(Input_Folder, Input_Table, Time_Field, Output_Table, {Unmatched_Photos_Table}, {Add_Photos_As_Attachments}, {Time_Tolerance}, {Clock_Offset})
名前 | 説明 | データ タイプ |
Input_Folder | 写真ファイル (.jpg または .tif) が保存されているフォルダー。 このフォルダーの写真は再帰的にスキャンされ、このフォルダーにある写真と、そのサブフォルダーにある写真のすべてが出力に追加されます。 | Folder |
Input_Table | 行を写真ファイルとマッチさせるテーブルまたはフィーチャクラス。 この入力テーブルは通常、GPS の記録を表すポイント フィーチャクラスになります。 | Table View |
Time_Field | 各行が取得または作成された日時を表す入力テーブルの日付フィールド。 フィールドは日付タイプにする必要があります。文字列タイプや数値タイプにすることはできません。 | Field |
Output_Table | 写真とマッチする入力テーブルの Object ID 値と、マッチする写真のパスを含む出力テーブル。 写真とマッチする入力テーブルの Object ID 値のみが、出力テーブルに含まれます。 | Table |
Unmatched_Photos_Table (オプション) | オプションの出力テーブル。入力フォルダーにあるタイム スタンプが無効な写真ファイルと、写真のタイム スタンプの時間許容値内にタイム スタンプが収まる入力行がないためにマッチさせることができない写真がリストで示されます。 パスが指定されていない場合、このテーブルは作成されません。 | Table |
Add_Photos_As_Attachments (オプション) | 写真ファイルをジオデータベース アタッチメントとして入力テーブルの行に追加するかどうかを指定します。 注意:アタッチメントを追加するには、出力フィーチャクラスがバージョン 10 以上のジオデータベースに含まれている必要があります。
| Boolean |
Time_Tolerance (オプション) | 入力行とマッチする写真ファイルとの日付/時刻の最大差 (秒)。 入力行と写真ファイルのタイム スタンプの差がこの許容値よりも大きい場合は、マッチングが行われません。 日付/時刻の差の大きさにかかわらず、写真ファイルを最も近いタイム スタンプを持つ行にマッチさせる場合は、許容値を 0 に設定します。 この値では符号 (- または +) は無関係で、指定された値の絶対値が使用されます。 このパラメーターは、GPS およびデジタル カメラで記録された時刻の間で一定のシフトまたはオフセットを調整する目的で使用しないでください。 入力行のタイムスタンプをシフトして写真のタイム スタンプとマッチさせる場合は、[クロック オフセット] パラメーターを使用するか、[タイム ゾーンの変換 (Convert Time Zone)] ツールを使用します。 | Double |
Clock_Offset (オプション) | 写真の撮影に使用したデジタル カメラの内部時計と GPS ユニットの時間差 (秒)。 デジタル カメラの時計が GPS ユニットの時計より遅れている場合は、正の値を指定します。デジタル カメラの時計が GPS ユニットの時計より進んでいる場合は、負の値を指定します。 たとえば、タイム スタンプが 11:35:17 である写真を、タイム スタンプが 11:35:32 である行とマッチさせる場合は、[クロック オフセット] 値に「15」を指定します。 | Double |
コードのサンプル
次の Python ウィンドウ スニペットは、MatchPhotosToRowsByTime 関数の使用方法を示しています。
import arcpy
arcpy.management.MatchPhotosToRowsByTime(
"c:/data/photos", "c:/data/city.gdb/gps_points", "DateTime",
"c:/data/city.gdb/output_table", "", "ADD_ATTACHMENTS", "", 20)
次のスクリプトは、MatchPhotosToRowsByTime 関数の使用方法を示しています。
"""
Name: GeoTaggedPhotosToPoints example
Description: Find the points that match photo time stamps, then join the output table
to the input to see which photos match which points
"""
# Import system modules
import arcpy
# Set environment settings
arcpy.env.workspace = "C:/data"
# Set local variables
inFolder = "photos"
inFC = "city.gdb/gps_points"
timeField = "DateTime"
outTable = "city.gdb/output_table"
outUnmatched = "city.gdb/unmatched_photos"
attachmentsOption = "ADD_ATTACHMENTS"
timeDiff = 0
timeOffset = 20
# Run MatchPhotosToRowsByTime and JoinField
arcpy.management.MatchPhotosToRowsByTime(inFolder, inFC, timeField, outTable,
outUnmatched, attachmentsOption,
timeDiff, timeOffset)
arcpy.management.JoinField(inFC, "OBJECTID", outTable, "IN_FID",
["Photo_Path", "Photo_Name", "Match_Diff"])