From a157b274a241d392e97986288fc1ebf0725a16b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Poizl?= Date: Thu, 23 Jun 2022 16:57:00 +0200 Subject: [PATCH] Save to database CRVALi --- database.cpp | 10 ++++++---- imageinfo.cpp | 12 +++++++++++- imageinfo.h | 2 +- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/database.cpp b/database.cpp index be3883c..0ae6d1d 100644 --- a/database.cpp +++ b/database.cpp @@ -32,7 +32,7 @@ bool Database::init() m_database.exec("PRAGMA user_version = 1"); m_database.exec("CREATE TABLE IF NOT EXISTS files (id INTEGER PRIMARY KEY AUTOINCREMENT, file VARCHAR(255) UNIQUE)"); m_database.exec("CREATE TABLE IF NOT EXISTS fits_files (id INTEGER PRIMARY KEY AUTOINCREMENT, file VARCHAR(255) UNIQUE, mtime DATETIME," - " minRa REAL, maxRa REAL, minDec REAL, maxDec REAL)"); + " minRa REAL, maxRa REAL, minDec REAL, maxDec REAL, crVal1 REAL, crVal2 REAL)"); m_database.exec("CREATE TABLE IF NOT EXISTS fits_headers (id INTEGER PRIMARY KEY AUTOINCREMENT, id_file INTEGER," "key VARCHAR(81), value VARCHAR(81), comment VARCHAR(81), FOREIGN KEY(id_file) REFERENCES fits_files(id) ON DELETE CASCADE)"); m_database.exec("CREATE INDEX IF NOT EXISTS key_value ON fits_headers(key, value)"); @@ -62,7 +62,7 @@ bool Database::init() m_insertFile = QSqlQuery(m_database); m_insertFile.prepare("INSERT INTO fits_files (file, mtime) VALUES (?, ?)"); m_insertFileWcs = QSqlQuery(m_database); - m_insertFileWcs.prepare("INSERT INTO fits_files (file, mtime, minRa, maxRa, minDec, maxDec) VALUES (?, ?, ?, ?, ?, ?)"); + m_insertFileWcs.prepare("INSERT INTO fits_files (file, mtime, minRa, maxRa, minDec, maxDec, crVal1, crVal2) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"); m_insertFitsHeader = QSqlQuery(m_database); m_insertFitsHeader.prepare("INSERT INTO fits_headers (id_file, key, value, comment) VALUES (?, ?, ?, ?)"); m_checkFile = QSqlQuery(m_database); @@ -270,8 +270,8 @@ bool Database::indexFile(const QFileInfo &file) { if(info.wcs) { - double minRa, maxRa, minDec, maxDec; - info.wcs->calculateBounds(minRa, maxRa, minDec, maxDec); + double minRa, maxRa, minDec, maxDec, crVal1, crVal2; + info.wcs->calculateBounds(minRa, maxRa, minDec, maxDec, crVal1, crVal2); qDebug() << "bounds" << minRa << maxRa << minDec << maxDec; m_insertFileWcs.bindValue(0, filePath); m_insertFileWcs.bindValue(1, mtime); @@ -279,6 +279,8 @@ bool Database::indexFile(const QFileInfo &file) m_insertFileWcs.bindValue(3, maxRa); m_insertFileWcs.bindValue(4, minDec); m_insertFileWcs.bindValue(5, maxDec); + m_insertFileWcs.bindValue(6, crVal1); + m_insertFileWcs.bindValue(7, crVal2); if(!m_insertFileWcs.exec()) { qDebug() << m_insertFileWcs.lastError(); diff --git a/imageinfo.cpp b/imageinfo.cpp index c8cc1dd..dc3c34d 100644 --- a/imageinfo.cpp +++ b/imageinfo.cpp @@ -192,7 +192,7 @@ bool WCSData::worldToPixel(const SkyPoint &point, QPointF &pixel) const return false; } -void WCSData::calculateBounds(double &minRa, double &maxRa, double &minDec, double &maxDec) const +void WCSData::calculateBounds(double &minRa, double &maxRa, double &minDec, double &maxDec, double &crVal1, double &crVal2) const { if(wcs == nullptr)return; @@ -201,6 +201,16 @@ void WCSData::calculateBounds(double &minRa, double &maxRa, double &minDec, doub minDec = 1000; maxDec = -1000; + if(wcs->crval) + { + crVal1 = wcs->crval[0]; + crVal2 = wcs->crval[1]; + } + else + { + crVal1 = crVal2 = NAN; + } + auto update = [&](const QPointF &pixel) { SkyPoint point; diff --git a/imageinfo.h b/imageinfo.h index b12d15b..eebe0cd 100644 --- a/imageinfo.h +++ b/imageinfo.h @@ -47,7 +47,7 @@ public: ~WCSData(); bool pixelToWorld(const QPointF &pixel, SkyPoint &point) const; bool worldToPixel(const SkyPoint &point, QPointF &pixel) const; - void calculateBounds(double &minRa, double &maxRa, double &minDec, double &maxDec) const; + void calculateBounds(double &minRa, double &maxRa, double &minDec, double &maxDec, double &crVal1, double &crVal2) const; bool valid() const { return wcs; }; };