diff --git a/data-access/engine/src/vlkb-obscore/src/database/ObsCoreKeys.hpp b/data-access/engine/src/vlkb-obscore/src/database/ObsCoreKeys.hpp index 874291ca4de51eb2a02a2f7535f2a6a033bec2f1..ffb33b81e2ff7adf68548bf557b76711f84128bd 100644 --- a/data-access/engine/src/vlkb-obscore/src/database/ObsCoreKeys.hpp +++ b/data-access/engine/src/vlkb-obscore/src/database/ObsCoreKeys.hpp @@ -24,9 +24,12 @@ namespace ObsCoreKeys }; const std::set<std::string> doubleKeys = { - "CDELT1", + "CDELT1", "CDELT2", - "CDELT3" + "CDELT3", + "WAVELEN", + "WAVELENG", + "WAVELNTH", }; inline std::set<std::string> add_str_keys(const std::set<std::string> strSet1, std::set<std::string> strSet2) diff --git a/data-access/engine/src/vlkb-obscore/src/database/SqlSchema_INSERT.cpp b/data-access/engine/src/vlkb-obscore/src/database/SqlSchema_INSERT.cpp index e929312f09092e834d872d6999de6d0f4e32b08c..97a319fbd693ed2ca8fd9bc0bcd89d511e8bfa6e 100644 --- a/data-access/engine/src/vlkb-obscore/src/database/SqlSchema_INSERT.cpp +++ b/data-access/engine/src/vlkb-obscore/src/database/SqlSchema_INSERT.cpp @@ -147,6 +147,32 @@ string asSqlString(fitsfiles::key_values_by_type key_values, string key) } } +string get_wavelen(fitsfiles::key_values_by_type key_values) +{ + const double UNIT_CONVERT = 0.001; // FIXME header-card unit [mm] but ObsCore em_ is [m] + if(key_values.doubleValues.find("WAVELEN") == key_values.doubleValues.end() ) + { + if(key_values.doubleValues.find("WAVELENG") == key_values.doubleValues.end() ) + { + if(key_values.doubleValues.find("WAVELNTH") == key_values.doubleValues.end() ) + { + return "NULL"; + } + else + { + return to_string(UNIT_CONVERT * key_values.doubleValues["WAVELNTH"]); + } + } + else + { + return to_string(UNIT_CONVERT * key_values.doubleValues["WAVELENG"]); + } + } + else + { + return to_string(UNIT_CONVERT * key_values.doubleValues["WAVELEN"]); + } +} @@ -195,13 +221,13 @@ void SqlSchema_INSERT::appendRow(/*const int hid, const int sid,*/ //////////////////////////////////////////////////////////////////////// // set table values -/* - headersRow[headersColId::header_id] = to_string(hid); - headersRow[headersColId::filename] = to_sqlstring(filename); - headersRow[headersColId::hdunum] = to_string(hdu.m_hdunum); - headersRow[headersColId::pubdid] = to_sqlstring(pubdid); - headersRow[headersColId::header] = "$$" + hdu.m_header + "$$"; - headersRow[headersColId::survey_id] = to_string(sid); + /* + headersRow[headersColId::header_id] = to_string(hid); + headersRow[headersColId::filename] = to_sqlstring(filename); + headersRow[headersColId::hdunum] = to_string(hdu.m_hdunum); + headersRow[headersColId::pubdid] = to_sqlstring(pubdid); + headersRow[headersColId::header] = "$$" + hdu.m_header + "$$"; + headersRow[headersColId::survey_id] = to_string(sid); // cubebounds - GALACTIC @@ -214,15 +240,15 @@ void SqlSchema_INSERT::appendRow(/*const int hid, const int sid,*/ boundsgalRow[bunit] = to_sqlstring(galBounds[1].unit);//y_unit); if(galBounds.size() >2) { - boundsgalRow[vfrom] = to_string(galBounds[2].low);//vel_from); - boundsgalRow[vto] = to_string(galBounds[2].up);//vel_to); - boundsgalRow[vunit] = to_sqlstring(galBounds[2].unit);//vel_unit); + boundsgalRow[vfrom] = to_string(galBounds[2].low);//vel_from); + boundsgalRow[vto] = to_string(galBounds[2].up);//vel_to); + boundsgalRow[vunit] = to_sqlstring(galBounds[2].unit);//vel_unit); } else { - boundsgalRow[vfrom] = "NULL"; - boundsgalRow[vto] = "NULL"; - boundsgalRow[vunit] = "NULL"; + boundsgalRow[vfrom] = "NULL"; + boundsgalRow[vto] = "NULL"; + boundsgalRow[vunit] = "NULL"; } // cubebounds - ICRS @@ -259,7 +285,7 @@ void SqlSchema_INSERT::appendRow(/*const int hid, const int sid,*/ verticesicrsRow[p3dec] = to_string(icrsVerts[2].lat); verticesicrsRow[p4ra] = to_string(icrsVerts[3].lon); verticesicrsRow[p4dec] = to_string(icrsVerts[3].lat); -*/ + */ // obscore - values from Surveys table @@ -323,18 +349,24 @@ void SqlSchema_INSERT::appendRow(/*const int hid, const int sid,*/ if(icrsBounds.size() >= 3) // 3D cubes { - obscoreRow[em_min] = to_string(galBounds[2].low); - obscoreRow[em_max] = to_string(galBounds[2].up); + //obscoreRow[em_min] = to_string(galBounds[2].low); + //obscoreRow[em_max] = to_string(galBounds[2].up); + obscoreRow[em_min] = to_string(icrsBounds[2].low); // FIXME must be Wave-length in [m] + obscoreRow[em_max] = to_string(icrsBounds[2].up); // FIXME must be Wave-length in [m] + obscoreRow[em_res_power] = asSqlString(hdu.key_values, "CDELT3"); obscoreRow[em_xel] = asSqlString(hdu.key_values, "NAXIS3"); } -#if 0 - else if(icrsBounds.naxis == 2) // 2D images + else if(icrsBounds.size() == 2) // 2D images { - if(!strcmp(survey.survSpecies.c_str(), "Continuum")) - dem_min = dem_max = 0.0; // FIXME transtod(psurv->transition); + //if(!strcmp(survey.survSpecies.c_str(), "Continuum")) + // dem_min = dem_max = 0.0; // FIXME transtod(psurv->transition); + + obscoreRow[em_min] = get_wavelen(hdu.key_values); + obscoreRow[em_max] = obscoreRow[em_min]; + obscoreRow[em_res_power] = "NULL"; + obscoreRow[em_xel] = "NULL"; } -#endif else { obscoreRow[em_min] = "NULL"; @@ -385,13 +417,13 @@ void SqlSchema_INSERT::appendRow(/*const int hid, const int sid,*/ vector<string> SqlSchema_INSERT::getINSERT(void) { vector<string> vCmds{ - /* {"INSERT INTO headers " + m_columns[headers] + " VALUES " + skl(m_values[headers])}, - {"INSERT INTO cubeboundsgalactic " + m_columns[boundsgal] + " VALUES " + skl(m_values[boundsgal])}, - {"INSERT INTO cubeboundsicrs " + m_columns[boundsicrs] + " VALUES " + skl(m_values[boundsicrs])}, - {"INSERT INTO verticesgalactic " + m_columns[verticesgal] + " VALUES " + skl(m_values[verticesgal])}, - {"INSERT INTO verticesicrs " + m_columns[verticesicrs] + " VALUES " + skl(m_values[verticesicrs])}, - */ - {"INSERT INTO obscore " + m_columns[obscore] + " VALUES " + skl(m_values[obscore])}, + /* {"INSERT INTO headers " + m_columns[headers] + " VALUES " + skl(m_values[headers])}, + {"INSERT INTO cubeboundsgalactic " + m_columns[boundsgal] + " VALUES " + skl(m_values[boundsgal])}, + {"INSERT INTO cubeboundsicrs " + m_columns[boundsicrs] + " VALUES " + skl(m_values[boundsicrs])}, + {"INSERT INTO verticesgalactic " + m_columns[verticesgal] + " VALUES " + skl(m_values[verticesgal])}, + {"INSERT INTO verticesicrs " + m_columns[verticesicrs] + " VALUES " + skl(m_values[verticesicrs])}, + */ + {"INSERT INTO obscore " + m_columns[obscore] + " VALUES " + skl(m_values[obscore])}, }; reset(); return vCmds;