// Digikam stores its tree of tags as individual tags,
@ -109,15 +109,18 @@ export async function add_full_tag_info(db) {
}
functionpolygons_benchmark(database){
varimg_query="SELECT Images.id, ImagePositions.latitudeNumber, ImagePositions.longitudeNumber FROM Images "
+"LEFT JOIN ImagePositions ON ImagePositions.imageid=Images.id WHERE ImagePositions.latitudeNumber NOT NULL GROUP BY Images.id;";
varimg_query="SELECT GROUP_CONCAT(Images.id), ImagePositions.latitudeNumber, ImagePositions.longitudeNumber FROM Images "
+"LEFT JOIN ImagePositions ON ImagePositions.imageid=Images.id WHERE ImagePositions.latitudeNumber NOT NULL GROUP BY ImagePositions.latitudeNumber, ImagePositions.longitudeNumber;";
@ -8,7 +17,7 @@ export function hash_geo_area(geo_area) {
exportfunctionadd_geo_area_to_store(area){
varh=hash_geo_area(area);
if(!(hing_GeoStore)){
g_GeoStore[h]=area;
g_GeoStore["areas"][h]=area;
}
returnh;
@ -16,7 +25,119 @@ export function add_geo_area_to_store(area) {
exportfunctionget_geo_area_from_store(hash){
if(hashing_GeoStore){
returng_GeoStore[hash];
returng_GeoStore["areas"][hash];
}
thrownewError("Requested non-existent geo area from store.");
}
exportfunctioninitialize_image_index(database){
returnnewPromise((resolve,reject)=>{
varimg_query="SELECT GROUP_CONCAT(Images.id), ImagePositions.latitudeNumber, ImagePositions.longitudeNumber FROM Images "
+"LEFT JOIN ImagePositions ON ImagePositions.imageid=Images.id WHERE ImagePositions.latitudeNumber NOT NULL GROUP BY ImagePositions.latitudeNumber, ImagePositions.longitudeNumber;";
sqljs_async_queries(database,[img_query])
.then(res=>{
varpoints=[];// will contain a list of unique [long, lat] points
varids_per_point=[];// will contain a list of image ids per point in "points", same indexing