本文整理汇总了C++中TextFile::PutLine方法的典型用法代码示例。如果您正苦于以下问题:C++ TextFile::PutLine方法的具体用法?C++ TextFile::PutLine怎么用?C++ TextFile::PutLine使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TextFile
的用法示例。
在下文中一共展示了TextFile::PutLine方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: IsisMain
void IsisMain() {
//Create a process to create the input cubes
Process p;
//Create the input cubes, matching sample/lines
Cube *inCube = p.SetInputCube ("FROM");
Cube *latCube = p.SetInputCube("LATCUB", SpatialMatch);
Cube *lonCube = p.SetInputCube("LONCUB", SpatialMatch);
//A 1x1 brick to read in the latitude and longitude DN values from
//the specified cubes
Brick latBrick(1,1,1, latCube->PixelType());
Brick lonBrick(1,1,1, lonCube->PixelType());
UserInterface &ui = Application::GetUserInterface();
//Set the sample and line increments
int sinc = (int)(inCube->Samples() * 0.10);
if(ui.WasEntered("SINC")) {
sinc = ui.GetInteger("SINC");
}
int linc = (int)(inCube->Lines() * 0.10);
if(ui.WasEntered("LINC")) {
linc = ui.GetInteger("LINC");
}
//Set the degree of the polynomial to use in our functions
int degree = ui.GetInteger("DEGREE");
//We are using a polynomial with two variables
PolynomialBivariate sampFunct(degree);
PolynomialBivariate lineFunct(degree);
//We will be solving the function using the least squares method
LeastSquares sampSol(sampFunct);
LeastSquares lineSol(lineFunct);
//Setup the variables for solving the stereographic projection
//x = cos(latitude) * sin(longitude - lon_center)
//y = cos(lat_center) * sin(latitude) - sin(lat_center) * cos(latitude) * cos(longitude - lon_center)
//Get the center lat and long from the input cubes
double lat_center = latCube->Statistics()->Average() * PI/180.0;
double lon_center = lonCube->Statistics()->Average() * PI/180.0;
/**
* Loop through lines and samples projecting the latitude and longitude at those
* points to stereographic x and y and adding these points to the LeastSquares
* matrix.
*/
for(int i = 1; i <= inCube->Lines(); i+= linc) {
for(int j = 1; j <= inCube->Samples(); j+= sinc) {
latBrick.SetBasePosition(j, i, 1);
latCube->Read(latBrick);
if(IsSpecial(latBrick.at(0))) continue;
double lat = latBrick.at(0) * PI/180.0;
lonBrick.SetBasePosition(j, i, 1);
lonCube->Read(lonBrick);
if(IsSpecial(lonBrick.at(0))) continue;
double lon = lonBrick.at(0) * PI/180.0;
//Project lat and lon to x and y using a stereographic projection
double k = 2/(1 + sin(lat_center) * sin(lat) + cos(lat_center)*cos(lat)*cos(lon - lon_center));
double x = k * cos(lat) * sin(lon - lon_center);
double y = k * (cos(lat_center) * sin(lat)) - (sin(lat_center) * cos(lat) * cos(lon - lon_center));
//Add x and y to the least squares matrix
vector<double> data;
data.push_back(x);
data.push_back(y);
sampSol.AddKnown(data, j);
lineSol.AddKnown(data, i);
//If the sample increment goes past the last sample in the line, we want to
//always read the last sample..
if(j != inCube->Samples() && j + sinc > inCube->Samples()) {
j = inCube->Samples() - sinc;
}
}
//If the line increment goes past the last line in the cube, we want to
//always read the last line..
if(i != inCube->Lines() && i + linc > inCube->Lines()) {
i = inCube->Lines() - linc;
}
}
//Solve the least squares functions using QR Decomposition
sampSol.Solve(LeastSquares::QRD);
lineSol.Solve(LeastSquares::QRD);
//If the user wants to save the residuals to a file, create a file and write
//the column titles to it.
TextFile oFile;
if(ui.WasEntered("RESIDUALS")) {
oFile.Open(ui.GetFilename("RESIDUALS"), "overwrite");
oFile.PutLine("Sample,\tLine,\tX,\tY,\tSample Error,\tLine Error\n");
}
//Gather the statistics for the residuals from the least squares solutions
//.........这里部分代码省略.........
示例2: IsisMain
void IsisMain() {
UserInterface &ui = Application::GetUserInterface();
ProcessByLine p;
Cube *icube = p.SetInputCube("FROM");
numIgnoredLines = 0;
cubeAverage.resize(icube->Bands());
lineAverages.resize(icube->Bands());
for(int i = 0; i < icube->Bands(); i++) {
cubeAverage[i] = 0;
lineAverages[i] = NULL;
}
int boxcarSize;
if(ui.GetString("BOXTYPE").compare("NONE") == 0) {
boxcarSize = (int)(icube->Lines() * 0.10);
}
else if(ui.GetString("BOXTYPE").compare("ABSOLUTE") == 0) {
boxcarSize = ui.GetInteger("BOXSIZE");
}
else if(ui.GetString("BOXTYPE").compare("PERCENTAGE") == 0) {
boxcarSize = (int)(((double)ui.GetInteger("BOXSIZE") / 100.0) * icube->Lines());
}
// Boxcar must be odd size
if(boxcarSize % 2 != 1) {
boxcarSize ++;
}
PvlGroup data("lineeq");
data += PvlKeyword("BoxcarSize", boxcarSize, "lines");
data += PvlKeyword("OutputCsv", ui.GetBoolean("AVERAGES"));
TextFile *csvOutput = NULL;
if(ui.GetBoolean("AVERAGES")) {
csvOutput = new TextFile(ui.GetFilename("CSV"), "overwrite", "");
csvOutput->PutLine("Average,SmoothedAvg");
data += PvlKeyword("CsvFile", ui.GetFilename("CSV"));
}
Application::Log(data);
for(int band = 0; band < icube->Bands(); band ++) {
lineAverages[band] = new double[icube->Lines()];
}
p.Progress()->SetText("Gathering line averages");
p.StartProcess(gatherAverages);
// Now filter the bands
p.Progress()->SetText("Smoothing line averages");
p.Progress()->SetMaximumSteps((icube->Bands() + 1) * icube->Lines());
p.Progress()->CheckStatus();
QuickFilter filter(icube->Lines(), boxcarSize, 1);
if(icube->Lines() <= numIgnoredLines) {
throw iException::Message(iException::User, "Image does not contain any valid data.", _FILEINFO_);
}
for(int band = 0; band < icube->Bands(); band ++) {
cubeAverage[band] /= (icube->Lines() - numIgnoredLines);
filter.AddLine(lineAverages[band]);
for(int line = 0; line < icube->Lines(); line ++) {
p.Progress()->CheckStatus();
double filteredLine = filter.Average(line);
if(csvOutput != NULL) {
csvOutput->PutLine((iString)lineAverages[band][line] + (iString)"," + (iString)filteredLine);
}
lineAverages[band][line] = filteredLine;
}
filter.RemoveLine(lineAverages[band]);
}
if(csvOutput != NULL) {
delete csvOutput; // This closes the file automatically
csvOutput = NULL;
}
p.SetOutputCube("TO");
p.Progress()->SetText("Applying Equalization");
p.StartProcess(apply);
for(int band = 0; band < icube->Bands(); band ++) {
delete [] lineAverages[band];
lineAverages[band] = NULL;
}
p.EndProcess();
}