本文整理汇总了C++中FileName::expanded方法的典型用法代码示例。如果您正苦于以下问题:C++ FileName::expanded方法的具体用法?C++ FileName::expanded怎么用?C++ FileName::expanded使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FileName
的用法示例。
在下文中一共展示了FileName::expanded方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: IsisMain
void IsisMain() {
ProcessImportPds p;
Pvl label;
UserInterface &ui = Application::GetUserInterface();
QString labelFile = ui.GetFileName("FROM");
FileName inFile = ui.GetFileName("FROM");
QString id;
Pvl lab(inFile.expanded());
try {
id = (QString) lab.findKeyword("DATA_SET_ID");
}
catch(IException &e) {
QString msg = "Unable to read [DATA_SET_ID] from input file [" +
inFile.expanded() + "]";
throw IException(e, IException::Unknown, msg, _FILEINFO_);
}
id = id.simplified().trimmed();
if(id != "TC_MAP" && id != "TCO_MAP") {
QString msg = "Input file [" + inFile.expanded() + "] does not appear to be " +
"in Kaguya Terrain Camera level 2 format. " +
"DATA_SET_ID is [" + id + "]";
throw IException(IException::Unknown, msg, _FILEINFO_);
}
p.SetPdsFile(labelFile, "", label);
Cube *outcube = p.SetOutputCube("TO");
p.SetOrganization(Isis::ProcessImport::BSQ);
p.StartProcess();
// Get the mapping labels
Pvl otherLabels;
p.TranslatePdsProjection(otherLabels);
// Get the directory where the generic pds2isis level 2 translation tables are.
PvlGroup dataDir(Preference::Preferences().findGroup("DataDirectory"));
QString transDir = (QString) dataDir["base"] + "/translations/";
// Translate the Archive group
FileName transFile(transDir + "pdsImageArchive.trn");
PvlTranslationManager archiveXlater(label, transFile.expanded());
archiveXlater.Auto(otherLabels);
// Write the Archive and Mapping groups to the output cube label
outcube->putGroup(otherLabels.findGroup("Mapping"));
outcube->putGroup(otherLabels.findGroup("Archive"));
// Add the BandBin group
PvlGroup bbin("BandBin");
bbin += PvlKeyword("FilterName", "BroadBand");
bbin += PvlKeyword("Center", "640nm");
bbin += PvlKeyword("Width", "420nm");
outcube->putGroup(bbin);
p.EndProcess();
}
示例2: IsisMain
// Main program
void IsisMain() {
ProcessImportPds p;
Pvl pdsLabel;
UserInterface &ui = Application::GetUserInterface();
FileName inFile = ui.GetFileName("FROM");
p.SetPdsFile(inFile.expanded(), "", pdsLabel);
QString filename = FileName(ui.GetFileName("FROM")).baseName();
FileName toFile = ui.GetFileName("TO");
apollo = new Apollo(filename);
utcTime = (QString)pdsLabel["START_TIME"];
// Setup the output cube attributes for a 16-bit unsigned tiff
Isis::CubeAttributeOutput cao;
cao.setPixelType(Isis::Real);
p.SetOutputCube(toFile.expanded(), cao);
// Import image
p.StartProcess();
p.EndProcess();
cube.open(toFile.expanded(), "rw");
// Once the image is imported, we need to find and decrypt the code
if (apollo->IsMetric() && FindCode())
TranslateCode();
CalculateTransform();
// Once we have decrypted the code, we need to populate the image labels
TranslateApolloLabels(filename, &cube);
cube.close();
}
示例3: IsisMain
void IsisMain() {
UserInterface &ui = Application::GetUserInterface();
// Determine whether input is a raw Mariner 10 image or an Isis 2 cube
bool isRaw = false;
FileName inputFile = ui.GetFileName("FROM");
Pvl label(inputFile.expanded());
// If the PVL created from the input labels is empty, then input is raw
if(label.groups() + label.objects() + label.keywords() == 0) {
isRaw = true;
}
// Import for RAW files
if(isRaw) {
ProcessImport p;
// All mariner images from both cameras share this size
p.SetDimensions(832, 700, 1);
p.SetFileHeaderBytes(968);
p.SaveFileHeader();
p.SetPixelType(UnsignedByte);
p.SetByteOrder(Lsb);
p.SetDataSuffixBytes(136);
p.SetInputFile(ui.GetFileName("FROM"));
Cube *oCube = p.SetOutputCube("TO");
p.StartProcess();
unsigned char *header = (unsigned char *) p.FileHeader();
QString labels = EbcdicToAscii(header);
UpdateLabels(oCube, labels);
p.EndProcess();
}
// Import for Isis 2 cubes
else {
ProcessImportPds p;
// All mariner images from both cameras share this size
p.SetDimensions(832, 700, 1);
p.SetPixelType(UnsignedByte);
p.SetByteOrder(Lsb);
p.SetDataSuffixBytes(136);
p.SetPdsFile(inputFile.expanded(), "", label);
Cube *oCube = p.SetOutputCube("TO");
TranslateIsis2Labels(inputFile, oCube);
p.StartProcess();
p.EndProcess();
}
}
示例4: IsisMain
void IsisMain() {
// Grab the file to import
UserInterface &ui = Application::GetUserInterface();
FileName in = ui.GetFileName("FROM");
FileName out = ui.GetFileName("TO");
// Make sure it is a Clementine EDR
bool projected;
try {
Pvl lab(in.expanded());
projected = lab.hasObject("IMAGE_MAP_PROJECTION");
QString id;
id = (QString)lab["DATA_SET_ID"];
id = id.simplified().trimmed();
if(!id.contains("CLEM")) {
QString msg = "Invalid DATA_SET_ID [" + id + "]";
throw IException(IException::Unknown, msg, _FILEINFO_);
}
}
catch(IException &e) {
QString msg = "Input file [" + in.expanded() +
"] does not appear to be " +
"in Clementine EDR format";
throw IException(IException::Unknown, msg, _FILEINFO_);
}
//Checks if in file is rdr
if(projected) {
QString msg = "[" + in.name() + "] appears to be an rdr file.";
msg += " Use pds2isis.";
throw IException(IException::User, msg, _FILEINFO_);
}
//Decompress the file
long int lines = 0;
long int samps = 0;
QString filename = in.expanded();
pdsi = PDSR(filename.toAscii().data(), &lines, &samps);
ProcessByLine p;
CubeAttributeOutput cubeAtt("+unsignedByte+1.0:254.0");
Cube *ocube = p.SetOutputCube(ui.GetFileName("TO"), cubeAtt, pdsi->image_ncols, pdsi->image_nrows);
p.StartProcess(WriteLine);
TranslateLabels(in, ocube);
p.EndProcess();
}
示例5: IsisMain
void IsisMain() {
//Get user parameters
UserInterface &ui = Application::GetUserInterface();
FileName inFile = ui.GetFileName("FROM");
int numberOfLines = ui.GetInteger("NL");
int lineOverlap = ui.GetInteger("OVERLAP");
//Throws exception if user is dumb
if(lineOverlap >= numberOfLines) {
throw IException(IException::User, "The Line Overlap (OVERLAP) must be less than the Number of Lines (LN).", _FILEINFO_);
}
//Opens the cube
Cube cube;
cube.open(inFile.expanded());
//Loops through, cropping as desired
int cropNum = 1;
int startLine = 1;
bool hasReachedEndOfCube = false;
while(startLine <= cube.lineCount() && not hasReachedEndOfCube) {
//! Sets up the proper paramaters for running the crop program
QString parameters = "FROM=" + inFile.expanded() +
" TO=" + inFile.path() + "/" + inFile.baseName() + ".segment" + toString(cropNum) + ".cub"
+ " LINE=" + toString(startLine) + " NLINES=";
if(startLine + numberOfLines > cube.lineCount()) {
parameters += toString(cube.lineCount() - (startLine - 1));
hasReachedEndOfCube = true;
}
else {
parameters += toString(numberOfLines);
}
ProgramLauncher::RunIsisProgram("crop", parameters);
//The starting line for next crop
startLine = 1 + cropNum * (numberOfLines - lineOverlap);
cropNum++;
}
}
示例6: expanded
bool FileName::operator==(const FileName &rhs) {
QString expandedOfThis = expanded();
QString canonicalOfThis = QFileInfo(expandedOfThis).canonicalFilePath();
QString expandedOfRhs = rhs.expanded();
QString canonicalOfRhs = QFileInfo(expandedOfRhs).canonicalFilePath();
// Cononical file paths return empty strings if the file does not exist. Either both canonicals
// are valid and the same (equal is initialized to true), or neither canonical is valid but
// the expandeds are the same (equal is set to true when it isn't initialized to true).
bool equal = (!canonicalOfThis.isEmpty() && canonicalOfThis == canonicalOfRhs);
if (!equal) {
equal = (canonicalOfThis.isEmpty() && canonicalOfRhs.isEmpty() &&
expandedOfThis == expandedOfRhs);
}
return equal;
}
示例7: IException
/**
* Construct the importer.
*
* @param inputName The name of the input image
*/
TiffImporter::TiffImporter(FileName inputName) : ImageImporter(inputName) {
// Open the TIFF image
m_image = NULL;
if ((m_image = TIFFOpen(inputName.expanded().toAscii().data(), "r")) == NULL) {
throw IException(IException::Programmer,
"Could not open incoming image", _FILEINFO_);
}
// Get its constant dimensions. Note, height seems to get reset to 0 if
// called before setting width.
uint32 height;
TIFFGetField(m_image, TIFFTAG_IMAGELENGTH, &height);
setLines(height);
uint32 width;
TIFFGetField(m_image, TIFFTAG_IMAGEWIDTH, &width);
setSamples(width);
TIFFGetField(m_image, TIFFTAG_SAMPLESPERPIXEL, &m_samplesPerPixel);
// Setup the width and height of the image
unsigned long imagesize = lines() * samples();
m_raster = NULL;
if ((m_raster = (uint32 *) malloc(sizeof(uint32) * imagesize)) == NULL) {
throw IException(IException::Programmer,
"Could not allocate enough memory", _FILEINFO_);
}
// Read the image into the memory buffer
if (TIFFReadRGBAImage(m_image, samples(), lines(), m_raster, 0) == 0) {
throw IException(IException::Programmer,
"Could not read image", _FILEINFO_);
}
// Deal with photometric interpretations
if (TIFFGetField(m_image, TIFFTAG_PHOTOMETRIC, &m_photo) == 0) {
throw IException(IException::Programmer,
"Image has an undefined photometric interpretation", _FILEINFO_);
}
setDefaultBands();
}
示例8: list
/**
* Creates a ControlPointList from a list of control point ids'
*
* @param psListFile The file withe list of control point ids'
*/
ControlPointList::ControlPointList(const FileName &psListFile) {
try {
QList<QString> qList;
FileList list(psListFile);
int size = list.size();
for(int i = 0; i < size; i++) {
qList.insert(i, list[i].toString());
mbFound.push_back(false);
}
mqCpList = QStringList(qList);
//sort the list for faster searches - internally uses qsort()
mqCpList.sort();
}
catch(IException &e) {
QString msg = "Can't open or invalid file list [" +
psListFile.expanded() + "]";
throw IException(e, IException::User, msg, _FILEINFO_);
}
}
示例9: IsisMain
//.........这里部分代码省略.........
if (retrievalOpt == "POINT" && point->GetNumMeasures() == 1)
point->SetIgnored(false);
imageAdded = true;
}
}
}
cubepvl = NULL;
cam = NULL;
if (log) {
PvlKeyword &logKeyword = (imageAdded) ? added : omitted;
logKeyword.addValue(addList[img].baseName());
}
progress.CheckStatus();
}
if (log) {
// Add the list of modified points to the output log file
QList<QString> modifiedPointsList = g_modifications.keys();
for (int i = 0; i < modifiedPointsList.size(); i++)
pointsModified += modifiedPointsList[i];
results.addKeyword(added);
results.addKeyword(omitted);
results.addKeyword(pointsModified);
if (duplicates.size() > 0) {
results.addKeyword(duplicates);
}
results.write(logFile.expanded());
}
// List the modified points
if (ui.WasEntered("MODIFIEDPOINTS")) {
FileName pointList(ui.GetFileName("MODIFIEDPOINTS"));
// Set up the output file for writing
std::ofstream out_stream;
out_stream.open(pointList.expanded().toAscii().data(), std::ios::out);
out_stream.seekp(0, std::ios::beg); //Start writing from beginning of file
QList<QString> modifiedPointsList = g_modifications.keys();
for (int i = 0; i < modifiedPointsList.size(); i++)
out_stream << modifiedPointsList[i].toStdString() << std::endl;
out_stream.close();
}
// Modify the inNet to only have modified points/measures
if (ui.GetString("EXTRACT") == "MODIFIED") {
for (int cp = inNet.GetNumPoints() - 1; cp >= 0; cp--) {
ControlPoint *point = inNet.GetPoint(cp);
// If the point was not modified, delete
// Even get rid of edit locked points in this case
if (!g_modifications.contains(point->GetId())) {
point->SetEditLock(false);
inNet.DeletePoint(cp);
}
// Else, remove the unwanted measures from the modified point
else {
for (int cm = point->GetNumMeasures() - 1; cm >= 0; cm--) {
示例10: IsisMain
void IsisMain ()
{
ProcessImportPds p;
Pvl pdsLabel;
UserInterface &ui = Application::GetUserInterface();
FileName inFile = ui.GetFileName("FROM");
QString imageFile("");
if (ui.WasEntered("IMAGE")) {
imageFile = ui.GetFileName("IMAGE");
}
// Generate the housekeeping filenames
QString hkLabel("");
QString hkData("");
if (ui.WasEntered("HKFROM") ) {
hkLabel = ui.GetFileName("HKFROM");
}
else {
hkLabel = inFile.originalPath() + "/" + inFile.baseName() + "_HK.LBL";
// Determine the housekeeping file
FileName hkFile(hkLabel);
if (!hkFile.fileExists()) {
hkFile = hkLabel.replace("_1B_", "_1A_");
if (hkFile.fileExists()) hkLabel = hkFile.expanded();
}
}
if (ui.WasEntered("HKTABLE")) {
hkData = ui.GetFileName("HKTABLE");
}
QString instid;
QString missid;
try {
Pvl lab(inFile.expanded());
instid = (QString) lab.findKeyword ("CHANNEL_ID");
missid = (QString) lab.findKeyword ("INSTRUMENT_HOST_ID");
}
catch (IException &e) {
QString msg = "Unable to read [INSTRUMENT_ID] or [MISSION_ID] from input file [" +
inFile.expanded() + "]";
throw IException(e, IException::Io,msg, _FILEINFO_);
}
instid = instid.simplified().trimmed();
missid = missid.simplified().trimmed();
if (missid != "DAWN" && instid != "VIS" && instid != "IR") {
QString msg = "Input file [" + inFile.expanded() + "] does not appear to be a " +
"DAWN Visual and InfraRed Mapping Spectrometer (VIR) EDR or RDR file.";
throw IException(IException::Unknown, msg, _FILEINFO_);
}
QString target;
if (ui.WasEntered("TARGET")) {
target = ui.GetString("TARGET");
}
// p.SetPdsFile (inFile.expanded(),imageFile,pdsLabel);
// QString labelFile = ui.GetFileName("FROM");
p.SetPdsFile (inFile.expanded(),imageFile,pdsLabel);
p.SetOrganization(Isis::ProcessImport::BIP);
Cube *outcube = p.SetOutputCube ("TO");
// p.SaveFileHeader();
Pvl labelPvl (inFile.expanded());
p.StartProcess ();
// Get the directory where the DAWN translation tables are.
PvlGroup dataDir (Preference::Preferences().findGroup("DataDirectory"));
QString transDir = (QString) dataDir["Dawn"] + "/translations/";
// Create a PVL to store the translated labels in
Pvl outLabel;
// Translate the BandBin group
FileName transFile (transDir + "dawnvirBandBin.trn");
PvlTranslationManager bandBinXlater (labelPvl, transFile.expanded());
bandBinXlater.Auto(outLabel);
// Translate the Archive group
transFile = transDir + "dawnvirArchive.trn";
PvlTranslationManager archiveXlater (labelPvl, transFile.expanded());
archiveXlater.Auto(outLabel);
// Translate the Instrument group
transFile = transDir + "dawnvirInstrument.trn";
PvlTranslationManager instrumentXlater (labelPvl, transFile.expanded());
instrumentXlater.Auto(outLabel);
// Update target if user specifies it
if (!target.isEmpty()) {
PvlGroup &igrp = outLabel.findGroup("Instrument",Pvl::Traverse);
igrp["TargetName"] = target;
}
// Write the BandBin, Archive, and Instrument groups
//.........这里部分代码省略.........
示例11: main
int main() {
Preference::Preferences(true);
try {
PvlFormatPds *pdsFormatter;
// Create a temp file for the keyword to type map
{
FileName fname = FileName::createTempFile("tempPvlFormatPDSunitTest_.tmp");
QString pdsFile = fname.expanded();
ofstream out;
out.open(pdsFile.toAscii().data(), std::ios::out);
{
PvlKeyword key("skey", "string");
out << key << endl;
}
{
PvlKeyword key("ikey", "integer");
out << key << endl;
}
{
PvlKeyword key("fkey2", "rEaL");
key.addValue(toString(2));
out << key << endl;
}
{
PvlKeyword key("bkey", "bool");
out << key << endl;
}
{
PvlKeyword key("fkey0", "real");
key.addValue(toString(0));
out << key << endl;
}
{
PvlKeyword key("fkey", "real");
out << key << endl;
}
{
PvlKeyword key("ekey", "enum");
out << key << endl;
}
{
PvlKeyword key("hkey0", "hEX");
out << key << endl;
}
{
PvlKeyword key("hkey2", "hEX");
key.addValue(toString(2));
out << key << endl;
}
{
PvlKeyword key("hkey4", "hEX");
key.addValue(toString(4));
out << key << endl;
}
{
PvlKeyword key("binkey", "binary");
key.addValue(toString(7));
out << key << endl;
}
{
PvlKeyword key("binkey16", "binary");
key.addValue(toString(16));
out << key << endl;
}
{
PvlKeyword key("intkeyarray", "integer");
out << key << endl;
}
{
PvlKeyword key("dblkeyarray", "rEaL");
key.addValue(toString(2));
out << key << endl;
}
{
PvlKeyword key("wrapword", "string");
out << key << endl;
}
{
PvlKeyword key("array", "integer");
out << key << endl;
}
out.close();
pdsFormatter = new PvlFormatPds(pdsFile);
QFile::remove(pdsFile);
}
// Test Keywords
{
PvlKeyword key("skey", "somestringval");
cout << key << endl;
key.setFormat(pdsFormatter);
cout << key << pdsFormatter->formatEOL();
}
//.........这里部分代码省略.........
示例12: TranslateIsis2Labels
// Translate Isis 2 labels into Isis 3 labels.
void TranslateIsis2Labels(FileName &labelFile, Cube *oCube) {
// Get the directory where the Mariner translation tables are.
PvlGroup &dataDir = Preference::Preferences().findGroup("DataDirectory");
// Transfer the instrument group to the output cube
QString transDir = (QString) dataDir["Mariner10"] + "/translations/";
Pvl inputLabel(labelFile.expanded());
FileName transFile;
transFile = transDir + "mariner10isis2.trn";
// Get the translation manager ready
PvlTranslationManager translation(inputLabel, transFile.expanded());
Pvl *outputLabel = oCube->label();
translation.Auto(*(outputLabel));
//Instrument group
PvlGroup &inst = outputLabel->findGroup("Instrument", Pvl::Traverse);
PvlKeyword &instrumentId = inst.findKeyword("InstrumentId");
instrumentId.setValue("M10_VIDICON_" + instrumentId[0]);
PvlKeyword &targetName = inst.findKeyword("TargetName");
QString targetTail(targetName[0].mid(1));
targetTail = targetTail.toLower();
targetName.setValue(targetName[0].at(0) + targetTail);
PvlKeyword &startTime = inst.findKeyword("StartTime");
startTime.setValue(startTime[0].mid(0, startTime[0].size() - 1));
PvlGroup &archive = outputLabel->findGroup("Archive", Pvl::Traverse);
PvlKeyword &imgNo = archive.findKeyword("ImageNumber");
QString ino = imgNo[0];
ino = ino.trimmed();
imgNo.setValue(ino);
iTime time(startTime[0]);
if(time < iTime("1974-2-3T12:00:00")) {
archive += PvlKeyword("Encounter", "Moon");
}
else if(time < iTime("1974-3-22T12:00:00")) {
archive += PvlKeyword("Encounter", "Venus");
}
else if(time < iTime("1974-9-19T12:00:00")) {
archive += PvlKeyword("Encounter", "Mercury_1");
}
else if(time < iTime("1975-3-14T12:00:00")) {
archive += PvlKeyword("Encounter", "Mercury_2");
}
else {
archive += PvlKeyword("Encounter", "Mercury_3");
}
inst.findKeyword("ExposureDuration").setUnits("milliseconds");
PvlGroup &bBin = outputLabel->findGroup("BandBin", Pvl::Traverse);
QString filter = inputLabel.findObject("QUBE")["FILTER_NAME"];
if(filter != "F") {
//Band Bin group
bBin.findKeyword("Center").setUnits("micrometers");
}
// Kernels group
PvlGroup &kernels = outputLabel->findGroup("Kernels", Pvl::Traverse);
PvlGroup &reseaus = outputLabel->findGroup("Reseaus", Pvl::Traverse);
PvlKeyword &templ = reseaus.findKeyword("Template");
PvlKeyword &valid = reseaus.findKeyword("Valid");
for(int i = 0; i < valid.size(); i++) {
valid[i] = valid[i].mid(0, 1);
}
// Camera dependent information
QString camera = "";
if(QString("M10_VIDICON_A") == inst["InstrumentId"][0]) {
templ = "$mariner10/reseaus/mar10a.template.cub";
kernels.findKeyword("NaifFrameCode").setValue("-76110");
camera = "M10_VIDICON_A_RESEAUS";
}
else {
templ = "$mariner10/reseaus/mar10b.template.cub";
kernels.findKeyword("NaifFrameCode").setValue("-76120");
camera = "M10_VIDICON_B_RESEAUS";
}
}
示例13: IsisMain
// Main moccal routine
void IsisMain() {
// We will be processing by line
ProcessByLine p;
// Setup the input and make sure it is a ctx file
UserInterface &ui = Application::GetUserInterface();
Isis::Pvl lab(ui.GetFileName("FROM"));
Isis::PvlGroup &inst =
lab.findGroup("Instrument", Pvl::Traverse);
QString instId = inst["InstrumentId"];
if(instId != "CTX") {
QString msg = "This is not a CTX image. Ctxcal requires a CTX image.";
throw IException(IException::User, msg, _FILEINFO_);
}
Cube *icube = p.SetInputCube("FROM", OneBand);
Cube flatFile;
if(ui.WasEntered("FLATFILE")) {
flatFile.open(ui.GetFileName("FLATFILE"));
}
else {
FileName flat = FileName("$mro/calibration/ctxFlat_????.cub").highestVersion();
flatFile.open(flat.expanded());
}
flat = new Brick(5000, 1, 1, flatFile.pixelType());
flat->SetBasePosition(1, 1, 1);
flatFile.read(*flat);
// If it is already calibrated then complain
if(icube->hasGroup("Radiometry")) {
QString msg = "The CTX image [" + icube->fileName() + "] has already "
"been radiometrically calibrated";
throw IException(IException::User, msg, _FILEINFO_);
}
// Get label parameters we will need for calibration equation
iTime startTime((QString) inst["StartTime"]);
double etStart = startTime.Et();
// Read exposure and convert to milliseconds
exposure = inst["LineExposureDuration"];
//exposure *= 1000.;
sum = inst["SpatialSumming"];
// If firstSamp > 0, adjust by 38 to account for prefix pixels.
firstSamp = inst["SampleFirstPixel"];
if(firstSamp > 0) firstSamp -= 38;
// Read dark current info, if no dc exit?
Table dcTable("Ctx Prefix Dark Pixels");
icube->read(dcTable);
// TODO:: make sure dc records match cube nlines.
// If summing mode = 1 , average odd & even dc pixels separately for
// a & b channels.
// If summing mode != 1, average all dc pixels and use for both
for(int rec = 0; rec < dcTable.Records(); rec++) {
vector<int> darks = dcTable[rec]["DarkPixels"];
bool aChannel = true;
double dcASum = 0.;
double dcBSum = 0.;
int dcACount = 0;
int dcBCount = 0;
double dcSum = 0;
int dcCount = 0;
for(int i = 0; i < (int)darks.size(); i++) {
if(sum == 1) {
if(aChannel == true) {
dcASum += (double)darks.at(i);
dcACount++;
}
else {
dcBSum += (double)darks.at(i);
dcBCount++;
}
aChannel = !aChannel;
}
else if(sum > 1) {
dcSum += (double)darks.at(i);
dcCount ++;
}
}
if(sum == 1) {
dcA.push_back(dcASum / (double)dcACount);
dcB.push_back(dcBSum / (double)dcBCount);
}
else {
dc.push_back(dcSum / (double)dcCount);
}
}
//.........这里部分代码省略.........
示例14: IsisMain
void IsisMain() {
const QString caminfo_program = "caminfo";
UserInterface &ui = Application::GetUserInterface();
QList< QPair<QString, QString> > *general = NULL, *camstats = NULL, *statistics = NULL;
BandGeometry *bandGeom = NULL;
// Get input filename
FileName in = ui.GetFileName("FROM");
// Get the format
QString sFormat = ui.GetAsString("FORMAT");
// if true then run spiceinit, xml default is FALSE
// spiceinit will use system kernels
if(ui.GetBoolean("SPICE")) {
QString parameters = "FROM=" + in.expanded();
ProgramLauncher::RunIsisProgram("spiceinit", parameters);
}
Process p;
Cube *incube = p.SetInputCube("FROM");
// General data gathering
general = new QList< QPair<QString, QString> >;
general->append(MakePair("Program", caminfo_program));
general->append(MakePair("IsisVersion", Application::Version()));
general->append(MakePair("RunDate", iTime::CurrentGMT()));
general->append(MakePair("IsisId", SerialNumber::Compose(*incube)));
general->append(MakePair("From", in.baseName() + ".cub"));
general->append(MakePair("Lines", toString(incube->lineCount())));
general->append(MakePair("Samples", toString(incube->sampleCount())));
general->append(MakePair("Bands", toString(incube->bandCount())));
// Run camstats on the entire image (all bands)
// another camstats will be run for each band and output
// for each band.
if(ui.GetBoolean("CAMSTATS")) {
camstats = new QList< QPair<QString, QString> >;
QString filename = ui.GetAsString("FROM");
int sinc = ui.GetInteger("SINC");
int linc = ui.GetInteger("LINC");
CameraStatistics stats(filename, sinc, linc);
Pvl camPvl = stats.toPvl();
PvlGroup cg = camPvl.findGroup("Latitude", Pvl::Traverse);
camstats->append(MakePair("MinimumLatitude", cg["latitudeminimum"][0]));
camstats->append(MakePair("MaximumLatitude", cg["latitudemaximum"][0]));
cg = camPvl.findGroup("Longitude", Pvl::Traverse);
camstats->append(MakePair("MinimumLongitude", cg["longitudeminimum"][0]));
camstats->append(MakePair("MaximumLongitude", cg["longitudemaximum"][0]));
cg = camPvl.findGroup("Resolution", Pvl::Traverse);
camstats->append(MakePair("MinimumResolution", cg["resolutionminimum"][0]));
camstats->append(MakePair("MaximumResolution", cg["resolutionmaximum"][0]));
cg = camPvl.findGroup("PhaseAngle", Pvl::Traverse);
camstats->append(MakePair("MinimumPhase", cg["phaseminimum"][0]));
camstats->append(MakePair("MaximumPhase", cg["phasemaximum"][0]));
cg = camPvl.findGroup("EmissionAngle", Pvl::Traverse);
camstats->append(MakePair("MinimumEmission", cg["emissionminimum"][0]));
camstats->append(MakePair("MaximumEmission", cg["emissionmaximum"][0]));
cg = camPvl.findGroup("IncidenceAngle", Pvl::Traverse);
camstats->append(MakePair("MinimumIncidence", cg["incidenceminimum"][0]));
camstats->append(MakePair("MaximumIncidence", cg["incidencemaximum"][0]));
cg = camPvl.findGroup("LocalSolarTime", Pvl::Traverse);
camstats->append(MakePair("LocalTimeMinimum", cg["localsolartimeMinimum"][0]));
camstats->append(MakePair("LocalTimeMaximum", cg["localsolartimeMaximum"][0]));
}
// Compute statistics for entire cube
if(ui.GetBoolean("STATISTICS")) {
statistics = new QList< QPair<QString, QString> >;
LineManager iline(*incube);
Statistics stats;
Progress progress;
progress.SetText("Statistics...");
progress.SetMaximumSteps(incube->lineCount()*incube->bandCount());
progress.CheckStatus();
iline.SetLine(1);
for(; !iline.end() ; iline.next()) {
incube->read(iline);
stats.AddData(iline.DoubleBuffer(), iline.size());
progress.CheckStatus();
}
// Compute stats of entire cube
double nPixels = stats.TotalPixels();
double nullpercent = (stats.NullPixels() / (nPixels)) * 100;
double hispercent = (stats.HisPixels() / (nPixels)) * 100;
double hrspercent = (stats.HrsPixels() / (nPixels)) * 100;
double lispercent = (stats.LisPixels() / (nPixels)) * 100;
double lrspercent = (stats.LrsPixels() / (nPixels)) * 100;
//.........这里部分代码省略.........
示例15: TranslateLabels
void TranslateLabels(FileName in, Cube *ocube) {
// Get the directory where the Clementine translation tables are.
PvlGroup &dataDir = Preference::Preferences().findGroup("DataDirectory");
// Transfer the instrument group to the output cube
QString transDir = (QString) dataDir["clementine1"];
FileName transFile(transDir + "/translations/clementine.trn");
Pvl pdsLab(in.expanded());
PvlTranslationManager labelXlater(pdsLab, transFile.expanded());
// Pvl outputLabels;
Pvl *outputLabel = ocube->label();
labelXlater.Auto(*(outputLabel));
//Instrument group
PvlGroup inst = outputLabel->findGroup("Instrument", Pvl::Traverse);
PvlKeyword &startTime = inst.findKeyword("StartTime");
startTime.setValue(startTime[0].mid(0, startTime[0].size() - 1));
// Old PDS labels used keyword INSTRUMENT_COMPRESSION_TYPE & PDS Labels now use ENCODING_TYPE
if(pdsLab.findObject("Image").hasKeyword("InstrumentCompressionType")) {
inst += PvlKeyword("EncodingFormat", (QString) pdsLab.findObject("Image")["InstrumentCompressionType"]);
}
else {
inst += PvlKeyword("EncodingFormat", (QString) pdsLab.findObject("Image")["EncodingType"]);
}
if(((QString)inst["InstrumentId"]) == "HIRES") {
inst += PvlKeyword("MCPGainModeID", (QString)pdsLab["MCP_Gain_Mode_ID"], "");
}
ocube->putGroup(inst);
PvlGroup bBin = outputLabel->findGroup("BandBin", Pvl::Traverse);
QString filter = pdsLab["FilterName"];
if(filter != "F") {
//Band Bin group
double center = pdsLab["CenterFilterWavelength"];
center /= 1000.0;
bBin.findKeyword("Center").setValue(toString(center), "micrometers");
}
double width = pdsLab["Bandwidth"];
width /= 1000.0;
bBin.findKeyword("Width").setValue(toString(width), "micrometers");
ocube->putGroup(bBin);
//Kernel group
PvlGroup kern("Kernels");
if(((QString)inst["InstrumentId"]) == "HIRES") {
kern += PvlKeyword("NaifFrameCode", "-40001");
}
if(((QString)inst["InstrumentId"]) == "UVVIS") {
kern += PvlKeyword("NaifFrameCode", "-40002");
}
if(((QString)inst["InstrumentId"]) == "NIR") {
kern += PvlKeyword("NaifFrameCode", "-40003");
}
if(((QString)inst["InstrumentId"]) == "LWIR") {
kern += PvlKeyword("NaifFrameCode", "-40004");
}
ocube->putGroup(kern);
OriginalLabel org(pdsLab);
ocube->write(org);
}