本文整理汇总了C++中ProcessByLine::ClearInputCubes方法的典型用法代码示例。如果您正苦于以下问题:C++ ProcessByLine::ClearInputCubes方法的具体用法?C++ ProcessByLine::ClearInputCubes怎么用?C++ ProcessByLine::ClearInputCubes使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ProcessByLine
的用法示例。
在下文中一共展示了ProcessByLine::ClearInputCubes方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: fileLab
/**
* Set the output cube to specified file name and specified input images
* and output attributes and lat,lons
*/
Isis::Cube *ProcessMapMosaic::SetOutputCube(const QString &inputFile,
double xmin, double xmax, double ymin, double ymax,
double slat, double elat, double slon, double elon, int nbands,
CubeAttributeOutput &oAtt, const QString &mosaicFile) {
Pvl fileLab(inputFile);
PvlGroup &mapping = fileLab.findGroup("Mapping", Pvl::Traverse);
mapping["UpperLeftCornerX"] = toString(xmin);
mapping["UpperLeftCornerY"] = toString(ymax);
mapping.addKeyword(PvlKeyword("MinimumLatitude", toString(slat)), Pvl::Replace);
mapping.addKeyword(PvlKeyword("MaximumLatitude", toString(elat)), Pvl::Replace);
mapping.addKeyword(PvlKeyword("MinimumLongitude", toString(slon)), Pvl::Replace);
mapping.addKeyword(PvlKeyword("MaximumLongitude", toString(elon)), Pvl::Replace);
Projection *firstProj = ProjectionFactory::CreateFromCube(fileLab);
int samps = (int)(ceil(firstProj->ToWorldX(xmax) - firstProj->ToWorldX(xmin)) + 0.5);
int lines = (int)(ceil(firstProj->ToWorldY(ymin) - firstProj->ToWorldY(ymax)) + 0.5);
delete firstProj;
if (p_createMosaic) {
Pvl newMap;
newMap.addGroup(mapping);
// Initialize the mosaic
CubeAttributeInput inAtt;
ProcessByLine p;
p.SetInputCube(inputFile, inAtt);
p.PropagateHistory(false);
p.PropagateLabels(false);
p.PropagateTables(false);
p.PropagatePolygons(false);
p.PropagateOriginalLabel(false);
// If track set, create the origin band
if (GetTrackFlag()) {
nbands += 1;
}
// For average priority, get the new band count
else if (GetImageOverlay() == AverageImageWithMosaic) {
nbands *= 2;
}
Cube *ocube = p.SetOutputCube(mosaicFile, oAtt, samps, lines, nbands);
p.Progress()->SetText("Initializing mosaic");
p.ClearInputCubes();
p.StartProcess(ProcessMapMosaic::FillNull);
// CreateForCube created some keywords in the mapping group that needs to be added
ocube->putGroup(newMap.findGroup("Mapping", Pvl::Traverse));
p.EndProcess();
}
Cube *mosaicCube = new Cube();
mosaicCube->open(mosaicFile, "rw");
mosaicCube->addCachingAlgorithm(new UniqueIOCachingAlgorithm(2));
AddOutputCube(mosaicCube);
return mosaicCube;
}
示例2: IException
/**
* Set the output cube to specified file name and specified input images
* and output attributes and lat,lons
*/
Isis::Cube *ProcessMapMosaic::SetOutputCube(const QString &inputFile, PvlGroup mapping,
CubeAttributeOutput &oAtt, const QString &mosaicFile) {
if (OutputCubes.size() != 0) {
QString msg = "You can only specify one output cube and projection";
throw IException(IException::Programmer, msg, _FILEINFO_);
}
if (mapping.hasKeyword("UpperLeftCornerX"))
mapping.deleteKeyword("UpperLeftCornerX");
if (mapping.hasKeyword("UpperLeftCornerY"))
mapping.deleteKeyword("UpperLeftCornerY");
if (p_createMosaic) {
Pvl newMap;
newMap.addGroup(mapping);
int samps, lines, bands;
delete ProjectionFactory::CreateForCube(newMap, samps, lines, false);
// Initialize the mosaic
ProcessByLine p;
CubeAttributeInput inAtt(inputFile);
Cube *propCube = p.SetInputCube(inputFile, inAtt);
bands = propCube->bandCount();
// If track set, create the origin band
if (GetTrackFlag()) {
bands += 1;
}
// For average priority, get the new band count
else if (GetImageOverlay() == AverageImageWithMosaic) {
bands *= 2;
}
p.PropagateHistory(false);
p.PropagateLabels(false);
Cube *ocube = p.SetOutputCube(mosaicFile, oAtt, samps, lines, bands);
p.Progress()->SetText("Initializing mosaic");
p.ClearInputCubes();
p.StartProcess(ProcessMapMosaic::FillNull);
// CreateForCube created some keywords in the mapping group that needs to be added
ocube->putGroup(newMap.findGroup("Mapping", Pvl::Traverse));
p.EndProcess();
}
Cube *mosaicCube = new Cube();
AddOutputCube(mosaicCube);
mosaicCube->open(mosaicFile, "rw");
mosaicCube->addCachingAlgorithm(new UniqueIOCachingAlgorithm(2));
return mosaicCube;
}
示例3: IsisMain
void IsisMain() {
// Setup the input and output cubes along with histograms
ProcessByLine p;
Cube *mcube = p.SetInputCube("MATCH", Isis::OneBand);
Histogram *match = mcube->histogram();
p.ClearInputCubes();
Cube *icube = p.SetInputCube("FROM", Isis::OneBand);
Histogram *from = icube->histogram();
p.SetOutputCube("TO");
// Histogram specifications
UserInterface &ui = Application::GetUserInterface();
double minimum = ui.GetDouble("MINPER");
double maximum = ui.GetDouble("MAXPER");
stretch.ClearPairs();
// CDF mode selected
if(ui.GetString("STRETCH") == "CDF") {
int increment = ui.GetInteger("INCREMENT");
double lastPer = from->Percent(minimum);
stretch.AddPair(lastPer, match->Percent(minimum));
for(double i = increment + minimum; i < maximum; i += increment) {
double curPer = from->Percent(i);
if(lastPer < curPer && abs(lastPer - curPer) > DBL_EPSILON) {
stretch.AddPair(curPer, match->Percent(i));
lastPer = curPer;
}
}
double curPer = from->Percent(maximum);
if(lastPer < curPer && abs(lastPer - curPer) > DBL_EPSILON) {
stretch.AddPair(curPer, match->Percent(maximum));
}
}
// Modal mode is selected
else {
stretch.AddPair(from->Percent(minimum), match->Percent(minimum));
stretch.AddPair(from->Mode(), match->Mode());
stretch.AddPair(from->Percent(maximum), match->Percent(maximum));
}
// Start the processing
p.StartProcess(remap);
p.EndProcess();
}
示例4: IsisMain
void IsisMain() {
try {
// We will be processing by line
ProcessByLine p;
double sscale, lscale;
int ins, inl, inb;
int ons, onl;
vector<QString> bands;
Cube inCube;
// To propogate labels, set input cube,
// this cube will be cleared after output cube is set.
p.SetInputCube("FROM");
// Setup the input and output cubes
UserInterface &ui = Application::GetUserInterface();
QString replaceMode = ui.GetAsString("VPER_REPLACE");
CubeAttributeInput cai(ui.GetAsString("FROM"));
bands = cai.bands();
inCube.setVirtualBands(bands);
QString from = ui.GetFileName("FROM");
inCube.open(from);
ins = inCube.sampleCount();
inl = inCube.lineCount();
inb = inCube.bandCount();
QString alg = ui.GetString("ALGORITHM");
double vper = ui.GetDouble("VALIDPER") / 100.;
if(ui.GetString("MODE") == "TOTAL") {
ons = ui.GetInteger("ONS");
onl = ui.GetInteger("ONL");
sscale = (double)ins / (double)ons;
lscale = (double)inl / (double)onl;
}
else {
sscale = ui.GetDouble("SSCALE");
lscale = ui.GetDouble("LSCALE");
ons = (int)((double)ins / sscale + 0.5);
onl = (int)((double)inl / lscale + 0.5);
}
if(ons > ins || onl > inl) {
QString msg = "Number of output samples/lines must be less than or equal";
msg = msg + " to the input samples/lines.";
throw IException(IException::User, msg, _FILEINFO_);
}
// Allocate output file
Cube *ocube = p.SetOutputCube("TO", ons, onl, inb);
// Our processing routine only needs 1
// the original set was for info about the cube only
p.ClearInputCubes();
// Start the processing
PvlGroup results;
if(alg == "AVERAGE"){
Average average(&inCube, sscale, lscale, vper, replaceMode);
p.ProcessCubeInPlace(average, false);
results = average.UpdateOutputLabel(ocube);
}
else if(alg == "NEAREST") {
Nearest near(&inCube, sscale, lscale);
p.ProcessCubeInPlace(near, false);
results = near.UpdateOutputLabel(ocube);
}
// Cleanup
inCube.close();
p.EndProcess();
// Write the results to the log
Application::Log(results);
} // REFORMAT THESE ERRORS INTO ISIS TYPES AND RETHROW
catch (IException &) {
throw;
}
catch (std::exception const &se) {
QString message = "std::exception: " + (QString)se.what();
throw IException(IException::User, message, _FILEINFO_);
}
catch (...) {
QString message = "Other Error";
throw IException(IException::User, message, _FILEINFO_);
}
}