Skip to content
Snippets Groups Projects
Commit d83d479e authored by Robert Butora's avatar Robert Butora
Browse files

vlkb header: implements header print/backup and renames header->headermodif

parent 20733a0b
No related branches found
No related tags found
No related merge requests found
......@@ -88,7 +88,7 @@ int vlkb_listbounds(const string& skysys_str, const string& specsys_str, const s
//---------------------------------------------------------------------
// header modif coord sys
// header backup and modif
//---------------------------------------------------------------------
/*
const string VELOLSRK{"System=VELO,StdOfRest=LSRK,Unit=km/s"};
......@@ -102,6 +102,33 @@ void write_previous(string header, string filename)
}
int header_backup(const string& pathname, bool backup)
{
LOG_trace(__func__);
int maxHdu = 1;//FIXME INT_MAX; // read all HDU's
std::vector<fitsfiles::Hdu> allHdus =
fitsfiles::fname2hdrstr(pathname, maxHdu);
for(unsigned int i=0; i<allHdus.size(); i++)
{
cerr << "HDU#" << i << endl;
fitsfiles::Hdu hd = allHdus.at(i);
if(backup)
write_previous(hd.m_header, pathname +"hdr" + ((i>0) ? "#" + to_string(i+1) : "") );
else
cout << hd.m_header << endl;
// FIXME remove all explicit cout cerr to main.cpp and here use ostream&
}
return 0;
}
int header_modif_coordsys(const string& skysys_str, const string& specsys_str, const string& pathname)
{
......@@ -132,6 +159,8 @@ int header_modif_coordsys(const string& skysys_str, const string& specsys_str, c
}
//---------------------------------------------------------------------
// overlap with area given in query-string form (name=value&...)
//---------------------------------------------------------------------
......
......@@ -8,6 +8,7 @@
int vlkb_skyvertices(const std::string& pathname, const std::string& skysys_str);
int vlkb_listbounds(const std::string& skysys_str, const std::string& specsys_str, const std::string& pathname);
int header_backup(const std::string& pathname, bool backup = false);
int header_modif_coordsys(const std::string& skysys_str, const std::string& specsys_str, const std::string& pathname);
int vlkb_overlap(const std::string& pathname, const std::string& region, std::vector<uint_bounds>& bnds);
......
......@@ -43,7 +43,7 @@ namespace vlkb
<< "Usage: " << progname << " <command> [cmd-options] [cmd-args]" << endl
<< "\n where commands are:\n "
<< "\n\t cutout imcopy cutpixels multicutout mergefiles\n"
<< "\n\t listbounds header skyvertices overlap\n"
<< "\n\t listbounds header headermodif skyvertices overlap\n"
<< "\n\t nullvals dropdegen checkcard addcard modcard rawdelcard\n"
<< std::endl
<< "Version: " << VERSIONSTR << " " << BUILD << std::endl;
......@@ -55,7 +55,7 @@ namespace vlkb
enum cmd_set {
multicutout, mergefiles, cutout, imcopy, cutpixels,
listbounds, header, overlap, skyvertices, nullvals, dropdegen, checkcard, addcard, modcard, rawdelcard};
listbounds, header, headermodif, overlap, skyvertices, nullvals, dropdegen, checkcard, addcard, modcard, rawdelcard};
// from bash or interpreters usually receive params as strings
......@@ -71,6 +71,7 @@ namespace vlkb
else if(cmdstr.compare("cutpixels") == 0) cmd = cutpixels;
else if(cmdstr.compare("listbounds") == 0) cmd = listbounds;
else if(cmdstr.compare("header") == 0) cmd = header;
else if(cmdstr.compare("headermodif") == 0) cmd = headermodif;
else if(cmdstr.compare("overlap") == 0) cmd = overlap;
else if(cmdstr.compare("skyvertices") == 0) cmd = skyvertices;
else if(cmdstr.compare("nullvals") == 0) cmd = nullvals;
......@@ -327,7 +328,46 @@ int cmd_header(int argc, char * argv[])
if (argc < 2)
{
std::cerr
<< "Usage: header --sky=<SkySystem> --spec=<SpecSystem> <filename.fits>... \n"
<< "Usage: header [--backup] <pathname.fits>...\n"
<< "\n"
<< "Prints current header or writes the header into a file with the same pathname but 'fitshdr' extension.\n"
<< "Arguments:\n"
<< " --backup write current header from file 'pathname.fits' to 'pathname.fitshdr#n' where n is the HDU number.\n";
rc = EXIT_FAILURE;
}
else
{
bool backup = false;
for(int i=1; i<argc; i++)
{
if(0 == (string(argv[i]).substr(0,2+6)).compare("--backup"))
{
backup = true;
}
else
{
string pathname(argv[i]);
cout << to_string(i) << " : " << pathname << endl;
rc = header_backup(pathname, backup);
std::cout << "header_backup rc: " << rc << std::endl;
}
}
rc = EXIT_SUCCESS;
}
return rc;
}
int cmd_header_modif(int argc, char * argv[])
{
int rc;
if (argc < 2)
{
std::cerr
<< "Usage: headermodif --sky=<SkySystem> --spec=<SpecSystem> <filename.fits>... \n"
<< "\n"
<< "Modify header for new coord system.\n"
<< "Arguments:\n"
......@@ -638,6 +678,7 @@ int main (int argc, char * argv[])
case vlkb::nullvals: rc = cmd_nullvals(cmd_argc, cmd_argv); break;
case vlkb::listbounds: rc = cmd_listbounds(cmd_argc, cmd_argv); break;
case vlkb::header: rc = cmd_header(cmd_argc, cmd_argv); break;
case vlkb::headermodif: rc = cmd_header_modif(cmd_argc, cmd_argv); break;
case vlkb::skyvertices: rc = cmd_skyvertices(cmd_argc, cmd_argv); break;
case vlkb::overlap: rc = cmd_overlap(cmd_argc, cmd_argv); break;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment