.lrcat っていったい何なのか

カタログファイルの実体である lrcat は SQLite の DB ファイルそのもの。sqlite3 foo.lrcat すると中身を見ることもできる。

部分的に見た結果をメモしておく

# 画像に対応するテーブル?
Adobe_images
# Exif 情報に対応するテーブル?
AgHarvestedExifMetadata
# ファイルに対応するテーブル?
AgLibraryFile
AgLibraryFolder

# 画像とファイルのリレーション?
select Adobe_images.captureTime, baseName, modTime from Adobe_images inner join AgLibraryFile on Adobe_images.rootFile = AgLibraryFile.id_local;

# 画像と exif のリレーション?
select * from Adobe_images join AgHarvestedExifMetadata on AgHarvestedExifMetadata.image = Adobe_images.id_local;

たとえば

sqlite> .schema AgHarvestedExifMetadata
CREATE TABLE AgHarvestedExifMetadata (
    id_local INTEGER PRIMARY KEY,
    image INTEGER,
    aperture,
    cameraModelRef INTEGER,
    cameraSNRef INTEGER,
    dateDay,
    dateMonth,
    dateYear,
    flashFired INTEGER,
    focalLength,
    gpsLatitude,
    gpsLongitude,
    gpsSequence NOT NULL DEFAULT 0,
    hasGPS INTEGER,
    isoSpeedRating,
    lensRef INTEGER,
    shutterSpeed
);

なので (index は省略)、dateYear ごとの focalLength 統計を求めたい場合は

select dateYear, focalLength, count(*) from AgHarvestedExifMetadata group by dateYear, focalLength;

とか、もっとシンプルにレンズ焦点距離の使用頻度なら

sqlite> select focalLength, count(*) as cnt from AgHarvestedExifMetadata group by focalLength order by cnt;
...
24.2|1003
35.0|1037
|1093
200.0|1139
18.0|1153
22.0|1307
24.0|1378
70.0|1928
50.0|1978
30.0|4265
100.0|4522

みたいなことはできる。

レンズ名ごとの撮影枚数 (Lightroom 上でもわかるが) なら

 select AgInternedExifLens.value, count(*) as cnt from AgHarvestedExifMetadata join AgInternedExifLens on AgHarvestedExifMetadata.lensRef = AgInternedExifLens.id_local group by lensRef order by cnt;

とか。

今年の統計 (これも Lightroom 上でもわかるが) だけならこんな感じとか

select AgInternedExifLens.value, count(*) as cnt from AgHarvestedExifMetadata join AgInternedExifLens on AgHarvestedExifMetadata.lensRef = AgInternedExifLens.id_local where dateYear = CAST(strftime("%Y") AS NUMERIC) group by lensRef order by cnt;
24-70mm|10
20mm|17
EF50mm f/1.4 USM|75
EF-M22mm f/2 STM|77
EF70-200mm f/2.8L IS II USM|253
EF100mm f/2.8L Macro IS USM|353
35mm|428
E PZ 16-50mm F3.5-5.6 OSS|1260
30mm F1.4 DC DN | Contemporary 016|4083

もうちょっと Lightroom 上で見れない統計を出したいと思ったが思いつかなかったので思いついたら続きを書く

  1. トップ
  2. tech
  3. Lightroom のカタログを SQLite で読んで統計を出したりする
▲ この日のエントリ