krsc / krsc-photo-db
Krsc-Photo-Db 是一个用于导入、存储数据库中并分析照片 EXIF 数据的工具。利用 Oracle PL/SQL 对大量数据进行计算。
v1.0.0
2020-03-30 14:04 UTC
Requires
- php: ^7.1
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 元素。