krsc/krsc-photo-db

Krsc-Photo-Db 是一个用于导入、存储数据库中并分析照片 EXIF 数据的工具。利用 Oracle PL/SQL 对大量数据进行计算。

v1.0.0 2020-03-30 14:04 UTC

This package is auto-updated.

Last update: 2024-09-19 22:04:51 UTC


README

导入、存储数据库中并分析照片 EXIF 数据的工具。

导入元数据

为了从照片中导入元数据,请使用

php ImportCommand.php /my/directory/with/photos sql_file.sql

其中

/my/directory/with/photos
是递归搜索照片的文件夹,
sql_file.sql
是动态生成的导入文件。如果省略第二个参数,则输出将显示 SQL 数据。

Oracle 数据库

在 Database/Oracle 文件夹中有存储照片数据库的 SQL 文件。请将模式名称 "YOURSCHEMA" 更改为您的需求。导入通过 ImportCommand.php 创建的 SQL 后,您可以使用方法创建包含照片位置的 gpx 文件。要决定考虑哪些照片,您可以使用两种方法

BEGIN
    photo_pkg.load_gps_data_by_filename('IMG_10282_g.JPG');
END;

仅导入选定的照片。可选的第二个参数决定是否保留以前的数据。如果保留,它应该是 0,如下例所示

BEGIN
    photo_pkg.load_gps_data_by_filename('IMG_10282_g.JPG');
    photo_pkg.load_gps_data_by_filename('IMG_10283_g.JPG', 0);
END;

在这种情况下,将加载两张照片。要检查加载的照片数量,您可以使用管道函数

select * from photo_pkg.gps_table();

您还可以加载所有符合指定日期范围的照片(第一个开始日期,第二个结束日期;两个参数均可为 null)

BEGIN
    photo_pkg.load_gps_data_by_date('15/01/01', '20/08/01');
END;

数据加载后,您可以使用以下方法创建 gpx 文件

photo_pkg.get_gpx_file_content
必须具有强制性的 CLOB 参数。它可以直接写入控制台(对于更大的数据集,这是避免错误的唯一方法,请调整缓冲区大小)或通过输出变量。第二个可选参数决定这一点(默认为控制台,如果输入:0 则数据在输出变量中,作为第一个参数给出)。使用输出变量的示例

DECLARE
    out_content CLOB;
BEGIN
    photo_pkg.load_gps_data_by_filename('IMG_10282_g.JPG');
    photo_pkg.load_gps_data_by_filename('IMG_10283_g.JPG', 0);
    photo_pkg.get_gpx_file_content(out_content, 0);
    dbms_output.put_line(out_content);
END;

以下示例使用控制台(可能是更大的数据集)

DECLARE
    out_content CLOB;
BEGIN
    photo_pkg.load_gps_data_by_date('15/01/01');
    photo_pkg.get_gpx_file_content(out_content);
END;

在上面的示例中,只提供了开始日期。如果第一个参数设置为 NULL,则只能提供结束日期。

其他用于处理 GPS 数据的函数

BEGIN
    photo_pkg.load_gps_data_by_filename('IMG_10282_g.JPG');
    dbms_output.put_line(photo_pkg.v_photos_exif_gps_data_array(1).get_altitude);
    dbms_output.put_line(photo_pkg.v_photos_exif_gps_data_array(1).get_google_maps_url);
    dbms_output.put_line(photo_pkg.v_photos_exif_gps_data_array(1).get_trackpoint);
END;

函数 get_altitude 返回照片的航向(如“海拔 2096 米”),get_google_maps_url 返回显示在谷歌地图上的点的 URL,get_trackpoint 返回包含照片坐标的 gpx 元素。