本文整理汇总了C++中PvlGroup::keywords方法的典型用法代码示例。如果您正苦于以下问题:C++ PvlGroup::keywords方法的具体用法?C++ PvlGroup::keywords怎么用?C++ PvlGroup::keywords使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PvlGroup
的用法示例。
在下文中一共展示了PvlGroup::keywords方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: FindObservationTranslation
/**
* Get Groups by translating from correct Translation table
*
* @param label A pvl formatted label to be used to generate the serial number
*/
PvlGroup ObservationNumber::FindObservationTranslation(Pvl &label) {
Pvl outLabel;
static PvlGroup dataDir(Preference::Preferences().findGroup("DataDirectory"));
// Get the mission name
static QString missionTransFile = (QString) dataDir["base"] + "/translations/MissionName2DataDir.trn";
static PvlTranslationManager missionXlater(missionTransFile);
missionXlater.SetLabel(label);
QString mission = missionXlater.Translate("MissionName");
// Get the instrument name
static QString instTransFile = (QString) dataDir["base"] + "/translations/Instruments.trn";
static PvlTranslationManager instrumentXlater(instTransFile);
instrumentXlater.SetLabel(label);
QString instrument = instrumentXlater.Translate("InstrumentName");
// We want to use this instrument's translation manager. It's much faster for
// ObservationNumberList if we keep the translation manager in memory, so re-reading
// from the disk is not necessary every time. To do this, we'll use a map to store
// the translation managers and observation number keys with a string identifier to find them.
// This identifier needs to have the mission name and the instrument name.
static std::map<QString, std::pair<PvlTranslationManager, PvlKeyword> > missionTranslators;
QString key = mission + "_" + instrument;
std::map<QString, std::pair<PvlTranslationManager, PvlKeyword> >::iterator
translationIterator = missionTranslators.find(key);
if(translationIterator == missionTranslators.end()) {
// Get the file
FileName snFile((QString) dataDir[mission] + "/translations/" +
instrument + "SerialNumber????.trn");
snFile = snFile.highestVersion();
// Delets the extra
Pvl translation(snFile.expanded());
PvlKeyword observationKeys;
if(translation.hasKeyword("ObservationKeys")) {
observationKeys = translation["ObservationKeys"];
}
// use the translation file to generate keywords
missionTranslators.insert(
std::pair<QString, std::pair<PvlTranslationManager, PvlKeyword> >
(key, std::pair<PvlTranslationManager, PvlKeyword>(PvlTranslationManager(snFile.expanded()), observationKeys))
);
translationIterator = missionTranslators.find(key);
}
translationIterator->second.first.SetLabel(label);
translationIterator->second.first.Auto(outLabel);
PvlGroup snGroup = outLabel.findGroup("SerialNumberKeywords");
// Delets the extra
if(!translationIterator->second.second.name().isEmpty()) {
snGroup += translationIterator->second.second;
}
else {
snGroup += PvlKeyword("ObservationKeys", toString(snGroup.keywords()));
}
return snGroup;
}
示例2: IsisMain
void IsisMain() {
UserInterface &ui = Application::GetUserInterface();
SerialNumberList serialNumbers(true);
FileList images(ui.GetFileName("FROMLIST"));
// list of sns/filenames sorted by serial number
vector< pair<QString, QString> > sortedList;
// We want to sort the input data by serial number so that the same
// results are produced every time this program is run with the same
// images. This is a modified insertion sort.
for(int image = 0; image < images.size(); image++) {
unsigned int insertPos = 0;
QString sn = SerialNumber::Compose(images[image].toString());
for(insertPos = 0; insertPos < sortedList.size(); insertPos++) {
if(sn.compare(sortedList[insertPos].first) < 0) break;
}
pair<QString, QString> newPair = pair<QString, QString>(sn, images[image].toString());
sortedList.insert(sortedList.begin() + insertPos, newPair);
}
// Add the serial numbers in sorted order now
for(unsigned int i = 0; i < sortedList.size(); i++) {
serialNumbers.Add(sortedList[i].second);
}
// Now we want the ImageOverlapSet to calculate our overlaps
ImageOverlapSet overlaps(true);
// Use multi-threading to create the overlaps
overlaps.FindImageOverlaps(serialNumbers, FileName(ui.GetFileName(
"OVERLAPLIST")).expanded());
// This will only occur when "CONTINUE" was true, so we can assume "ERRORS" was
// an entered parameter.
if(overlaps.Errors().size() != 0 && ui.WasEntered("ERRORS")) {
Pvl outFile;
bool filenamesOnly = !ui.GetBoolean("DETAILED");
vector<PvlGroup> errorList = overlaps.Errors();
for(unsigned int err = 0; err < errorList.size(); err++) {
if(!filenamesOnly) {
outFile += errorList[err];
}
else if(errorList[err].hasKeyword("FileNames")) {
PvlGroup origError = errorList[err];
PvlGroup err("ImageOverlapError");
for(int keyword = 0; keyword < origError.keywords(); keyword++) {
if(origError[keyword].name() == "FileNames") {
err += origError[keyword];
}
}
outFile += err;
}
}
outFile.write(FileName(ui.GetFileName("ERRORS")).expanded());
}
PvlGroup results("Results");
results += PvlKeyword("ErrorCount", toString((BigInt)overlaps.Errors().size()));
Application::Log(results);
}
示例3: IsisMain
//.........这里部分代码省略.........
if(outMappingGrp.hasKeyword("PixelResolution")) {
outMappingGrp.deleteKeyword("PixelResolution");
}
if(fromMappingGrp.hasKeyword("Scale")) {
fromMappingGrp.deleteKeyword("Scale");
}
if(fromMappingGrp.hasKeyword("PixelResolution")) {
fromMappingGrp.deleteKeyword("PixelResolution");
}
if(userMappingGrp.hasKeyword("Scale")) {
userMappingGrp.deleteKeyword("Scale");
}
if(userMappingGrp.hasKeyword("PixelResolution")) {
userMappingGrp.deleteKeyword("PixelResolution");
}
outMappingGrp.addKeyword(PvlKeyword("Scale", toString(ui.GetDouble("RESOLUTION")), "pixels/degree"), Pvl::Replace);
}
// Rotation will NOT Propagate
if(outMappingGrp.hasKeyword("Rotation")) {
outMappingGrp.deleteKeyword("Rotation");
}
/**
* The user specified map template file overrides what ever is in the
* cube's mapping group.
*/
for(int keyword = 0; keyword < userMappingGrp.keywords(); keyword ++) {
outMappingGrp.addKeyword(userMappingGrp[keyword], Pvl::Replace);
}
/**
* Now, we have to deal with unit conversions. We convert only if the following are true:
* 1) We used values from the input cube
* 2) The values are longitudes or latitudes
* 3) The map file or user-specified information uses a different measurement system than
* the input cube for said values.
*
* The data is corrected for:
* 1) Positive east/positive west
* 2) Longitude domain
* 3) planetographic/planetocentric.
*/
// First, the longitude direction
if(!sameDirection) {
PvlGroup longitudes = inproj->MappingLongitudes();
for(int index = 0; index < longitudes.keywords(); index ++) {
if(!userMappingGrp.hasKeyword(longitudes[index].name())) {
// use the from domain because that's where our values are coming from
if(((QString)userMappingGrp["LongitudeDirection"]).compare("PositiveEast") == 0) {
outMappingGrp[longitudes[index].name()] = toString(
TProjection::ToPositiveEast(outMappingGrp[longitudes[index].name()],
outMappingGrp["LongitudeDomain"]));
}
else {
outMappingGrp[longitudes[index].name()] = toString(
TProjection::ToPositiveWest(outMappingGrp[longitudes[index].name()],
outMappingGrp["LongitudeDomain"]));
示例4: b
/**
* GetPointInfo builds the PvlGroup containing all the important
* information derived from the Camera.
*
* @return PvlGroup* Data taken directly from the Camera and
* drived from Camera information. Ownership passed.
*/
PvlGroup *CameraPointInfo::GetPointInfo(bool passed, bool allowOutside, bool allowErrors) {
PvlGroup *gp = new PvlGroup("GroundPoint");
{
gp->addKeyword(PvlKeyword("Filename"));
gp->addKeyword(PvlKeyword("Sample"));
gp->addKeyword(PvlKeyword("Line"));
gp->addKeyword(PvlKeyword("PixelValue"));
gp->addKeyword(PvlKeyword("RightAscension"));
gp->addKeyword(PvlKeyword("Declination"));
gp->addKeyword(PvlKeyword("PlanetocentricLatitude"));
gp->addKeyword(PvlKeyword("PlanetographicLatitude"));
gp->addKeyword(PvlKeyword("PositiveEast360Longitude"));
gp->addKeyword(PvlKeyword("PositiveEast180Longitude"));
gp->addKeyword(PvlKeyword("PositiveWest360Longitude"));
gp->addKeyword(PvlKeyword("PositiveWest180Longitude"));
gp->addKeyword(PvlKeyword("BodyFixedCoordinate"));
gp->addKeyword(PvlKeyword("LocalRadius"));
gp->addKeyword(PvlKeyword("SampleResolution"));
gp->addKeyword(PvlKeyword("LineResolution"));
gp->addKeyword(PvlKeyword("SpacecraftPosition"));
gp->addKeyword(PvlKeyword("SpacecraftAzimuth"));
gp->addKeyword(PvlKeyword("SlantDistance"));
gp->addKeyword(PvlKeyword("TargetCenterDistance"));
gp->addKeyword(PvlKeyword("SubSpacecraftLatitude"));
gp->addKeyword(PvlKeyword("SubSpacecraftLongitude"));
gp->addKeyword(PvlKeyword("SpacecraftAltitude"));
gp->addKeyword(PvlKeyword("OffNadirAngle"));
gp->addKeyword(PvlKeyword("SubSpacecraftGroundAzimuth"));
gp->addKeyword(PvlKeyword("SunPosition"));
gp->addKeyword(PvlKeyword("SubSolarAzimuth"));
gp->addKeyword(PvlKeyword("SolarDistance"));
gp->addKeyword(PvlKeyword("SubSolarLatitude"));
gp->addKeyword(PvlKeyword("SubSolarLongitude"));
gp->addKeyword(PvlKeyword("SubSolarGroundAzimuth"));
gp->addKeyword(PvlKeyword("Phase"));
gp->addKeyword(PvlKeyword("Incidence"));
gp->addKeyword(PvlKeyword("Emission"));
gp->addKeyword(PvlKeyword("NorthAzimuth"));
gp->addKeyword(PvlKeyword("EphemerisTime"));
gp->addKeyword(PvlKeyword("UTC"));
gp->addKeyword(PvlKeyword("LocalSolarTime"));
gp->addKeyword(PvlKeyword("SolarLongitude"));
if (allowErrors) gp->addKeyword(PvlKeyword("Error"));
}
bool noErrors = passed;
QString error = "";
if (!m_camera->HasSurfaceIntersection()) {
error = "Requested position does not project in camera model; no surface intersection";
noErrors = false;
if (!allowErrors) throw IException(IException::Unknown, error, _FILEINFO_);
}
if (!m_camera->InCube() && !allowOutside) {
error = "Requested position does not project in camera model; not inside cube";
noErrors = false;
if (!allowErrors) throw IException(IException::Unknown, error, _FILEINFO_);
}
if (!noErrors) {
for (int i = 0; i < gp->keywords(); i++) {
QString name = (*gp)[i].name();
// These three keywords have 3 values, so they must have 3 N/As
if (name == "BodyFixedCoordinate" || name == "SpacecraftPosition" ||
name == "SunPosition") {
(*gp)[i].addValue("N/A");
(*gp)[i].addValue("N/A");
(*gp)[i].addValue("N/A");
}
else {
(*gp)[i].setValue("N/A");
}
}
// Set all keywords that still have valid information
gp->findKeyword("Error").setValue(error);
gp->findKeyword("FileName").setValue(m_currentCube->fileName());
gp->findKeyword("Sample").setValue(toString(m_camera->Sample()));
gp->findKeyword("Line").setValue(toString(m_camera->Line()));
gp->findKeyword("EphemerisTime").setValue(
toString(m_camera->time().Et()), "seconds");
gp->findKeyword("EphemerisTime").addComment("Time");
QString utc = m_camera->time().UTC();
gp->findKeyword("UTC").setValue(utc);
gp->findKeyword("SpacecraftPosition").addComment("Spacecraft Information");
gp->findKeyword("SunPosition").addComment("Sun Information");
gp->findKeyword("Phase").addComment("Illumination and Other");
}
else {
Brick b(3, 3, 1, m_currentCube->pixelType());
int intSamp = (int)(m_camera->Sample() + 0.5);
int intLine = (int)(m_camera->Line() + 0.5);
//.........这里部分代码省略.........