本文整理汇总了C++中PvlGroup::AddKeyword方法的典型用法代码示例。如果您正苦于以下问题:C++ PvlGroup::AddKeyword方法的具体用法?C++ PvlGroup::AddKeyword怎么用?C++ PvlGroup::AddKeyword使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PvlGroup
的用法示例。
在下文中一共展示了PvlGroup::AddKeyword方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: 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() {
CheckConditions();
Brick b(3,3,1,currentCube->PixelType());
int intSamp = (int)(camera->Sample() + 0.5);
int intLine = (int)(camera->Line() + 0.5);
b.SetBasePosition(intSamp, intLine, 1);
currentCube->Read(b);
double pB[3], spB[3], sB[3];
string utc;
double ssplat, ssplon, sslat, sslon, pwlon, oglat;
// Create group with ground position
PvlGroup * gp = new PvlGroup("GroundPoint");
{
gp->AddKeyword(PvlKeyword("Filename",currentCube->Filename()));
gp->AddKeyword(PvlKeyword("Sample",camera->Sample()));
gp->AddKeyword(PvlKeyword("Line",camera->Line()));
gp->AddKeyword(PvlKeyword("PixelValue",PixelToString(b[0])));
gp->AddKeyword(PvlKeyword("RightAscension",camera->RightAscension()));
gp->AddKeyword(PvlKeyword("Declination",camera->Declination()));
gp->AddKeyword(PvlKeyword("PlanetocentricLatitude",
camera->UniversalLatitude()));
// Convert lat to planetographic
double radii[3];
camera->Radii(radii);
oglat = Isis::Projection::ToPlanetographic(camera->UniversalLatitude(),
radii[0],radii[2]);
gp->AddKeyword(PvlKeyword("PlanetographicLatitude",oglat));
gp->AddKeyword(PvlKeyword("PositiveEast360Longitude",
camera->UniversalLongitude()));
//Convert lon to -180 - 180 range
gp->AddKeyword(PvlKeyword("PositiveEast180Longitude",
Isis::Projection::To180Domain(
camera->UniversalLongitude())));
//Convert lon to positive west
pwlon = Isis::Projection::ToPositiveWest(camera->UniversalLongitude(),
360);
gp->AddKeyword(PvlKeyword("PositiveWest360Longitude",pwlon));
//Convert pwlon to -180 - 180 range
gp->AddKeyword(PvlKeyword("PositiveWest180Longitude",
Isis::Projection::To180Domain(pwlon)));
camera->Coordinate(pB);
PvlKeyword coord("BodyFixedCoordinate");
coord.AddValue(pB[0],"km");
coord.AddValue(pB[1],"km");
coord.AddValue(pB[2],"km");
gp->AddKeyword(coord);
gp->AddKeyword(PvlKeyword("LocalRadius",camera->LocalRadius(),"m"));
gp->AddKeyword(PvlKeyword("SampleResolution",camera->SampleResolution(),"m"));
gp->AddKeyword(PvlKeyword("LineResolution",camera->LineResolution(),"m"));
camera->InstrumentPosition(spB);
PvlKeyword spcoord("SpacecraftPosition");
spcoord.AddValue(spB[0],"km");
spcoord.AddValue(spB[1],"km");
spcoord.AddValue(spB[2],"km");
spcoord.AddComment("Spacecraft Information");
gp->AddKeyword(spcoord);
gp->AddKeyword(PvlKeyword("SpacecraftAzimuth",camera->SpacecraftAzimuth()));
gp->AddKeyword(PvlKeyword("SlantDistance",camera->SlantDistance(),"km"));
gp->AddKeyword(PvlKeyword("TargetCenterDistance",camera->TargetCenterDistance(),"km"));
camera->SubSpacecraftPoint(ssplat,ssplon);
gp->AddKeyword(PvlKeyword("SubSpacecraftLatitude",ssplat));
gp->AddKeyword(PvlKeyword("SubSpacecraftLongitude",ssplon));
gp->AddKeyword(PvlKeyword("SpacecraftAltitude",camera->SpacecraftAltitude(),"km"));
gp->AddKeyword(PvlKeyword("OffNadirAngle",camera->OffNadirAngle()));
double subspcgrdaz;
subspcgrdaz = camera->GroundAzimuth(camera->UniversalLatitude(),camera->UniversalLongitude(),
ssplat,ssplon);
gp->AddKeyword(PvlKeyword("SubSpacecraftGroundAzimuth",subspcgrdaz));
camera->SunPosition(sB);
PvlKeyword scoord("SunPosition");
scoord.AddValue(sB[0],"km");
scoord.AddValue(sB[1],"km");
scoord.AddValue(sB[2],"km");
scoord.AddComment("Sun Information");
gp->AddKeyword(scoord);
gp->AddKeyword(PvlKeyword("SubSolarAzimuth",camera->SunAzimuth()));
gp->AddKeyword(PvlKeyword("SolarDistance",camera->SolarDistance(),"AU"));
//.........这里部分代码省略.........
示例2: TryKernels
bool TryKernels(Cube *icube, Process &p,
Kernel lk, Kernel pck,
Kernel targetSpk, Kernel ck,
Kernel fk, Kernel ik, Kernel sclk,
Kernel spk, Kernel iak,
Kernel dem, Kernel exk) {
Pvl lab = *icube->Label();
// Add the new kernel files to the existing kernels group
PvlKeyword lkKeyword("LeapSecond");
PvlKeyword pckKeyword("TargetAttitudeShape");
PvlKeyword targetSpkKeyword("TargetPosition");
PvlKeyword ckKeyword("InstrumentPointing");
PvlKeyword ikKeyword("Instrument");
PvlKeyword sclkKeyword("SpacecraftClock");
PvlKeyword spkKeyword("InstrumentPosition");
PvlKeyword iakKeyword("InstrumentAddendum");
PvlKeyword demKeyword("ShapeModel");
PvlKeyword exkKeyword("Extra");
for (int i=0; i<lk.size(); i++) {
lkKeyword.AddValue(lk[i]);
}
for (int i=0; i<pck.size(); i++) {
pckKeyword.AddValue(pck[i]);
}
for (int i=0; i<targetSpk.size(); i++) {
targetSpkKeyword.AddValue(targetSpk[i]);
}
for (int i=0; i<ck.size(); i++) {
ckKeyword.AddValue(ck[i]);
}
for (int i=0; i<ik.size(); i++) {
ikKeyword.AddValue(ik[i]);
}
for (int i=0; i<sclk.size(); i++) {
sclkKeyword.AddValue(sclk[i]);
}
for (int i=0; i<spk.size(); i++) {
spkKeyword.AddValue(spk[i]);
}
for (int i=0; i<iak.size(); i++) {
iakKeyword.AddValue(iak[i]);
}
for (int i=0; i<dem.size(); i++) {
demKeyword.AddValue(dem[i]);
}
for (int i=0; i<exk.size(); i++) {
exkKeyword.AddValue(exk[i]);
}
PvlGroup originalKernels = icube->GetGroup("Kernels");
PvlGroup currentKernels = originalKernels;
currentKernels.AddKeyword(lkKeyword, Pvl::Replace);
currentKernels.AddKeyword(pckKeyword, Pvl::Replace);
currentKernels.AddKeyword(targetSpkKeyword, Pvl::Replace);
currentKernels.AddKeyword(ckKeyword, Pvl::Replace);
currentKernels.AddKeyword(ikKeyword, Pvl::Replace);
currentKernels.AddKeyword(sclkKeyword, Pvl::Replace);
currentKernels.AddKeyword(spkKeyword, Pvl::Replace);
currentKernels.AddKeyword(iakKeyword, Pvl::Replace);
currentKernels.AddKeyword(demKeyword, Pvl::Replace);
// report qualities
PvlKeyword spkQuality("InstrumentPositionQuality");
spkQuality.AddValue(spiceInit::kernelTypeEnum(spk.kernelType));
currentKernels.AddKeyword(spkQuality, Pvl::Replace);
PvlKeyword ckQuality("InstrumentPointingQuality");
ckQuality.AddValue(spiceInit::kernelTypeEnum(ck.kernelType));
currentKernels.AddKeyword(ckQuality, Pvl::Replace);
if (!exkKeyword.IsNull()) {
currentKernels.AddKeyword(exkKeyword, Pvl::Replace);
}
else if( currentKernels.HasKeyword("EXTRA") ) {
currentKernels.DeleteKeyword( "EXTRA" );
}
// Get rid of old keywords from previously inited cubes
if (currentKernels.HasKeyword("SpacecraftPointing")) {
currentKernels.DeleteKeyword("SpacecraftPointing");
}
if (currentKernels.HasKeyword("SpacecraftPosition")) {
currentKernels.DeleteKeyword("SpacecraftPosition");
}
if (currentKernels.HasKeyword("ElevationModel")) {
currentKernels.DeleteKeyword("ElevationModel");
}
if (currentKernels.HasKeyword("Frame")) {
currentKernels.DeleteKeyword("Frame");
}
if (currentKernels.HasKeyword("StartPadding")) {
currentKernels.DeleteKeyword("StartPadding");
}
if (currentKernels.HasKeyword("EndPadding")) {
currentKernels.DeleteKeyword("EndPadding");
}
UserInterface &ui = Application::GetUserInterface();
//.........这里部分代码省略.........
示例3: IsisMain
void IsisMain() {
// We will be warping a cube
ProcessRubberSheet p;
// Get the map projection file provided by the user
UserInterface &ui = Application::GetUserInterface();
Pvl userPvl(ui.GetFilename("MAP"));
PvlGroup &userMappingGrp = userPvl.FindGroup("Mapping",Pvl::Traverse);
// Open the input cube and get the projection
Cube *icube = p.SetInputCube ("FROM");
// Get the mapping group
PvlGroup fromMappingGrp = icube->GetGroup("Mapping");
Projection *inproj = icube->Projection();
PvlGroup outMappingGrp = fromMappingGrp;
// If the default range is FROM, then wipe out any range data in user mapping file
if(ui.GetString("DEFAULTRANGE").compare("FROM") == 0 && !ui.GetBoolean("MATCHMAP")) {
if(userMappingGrp.HasKeyword("MinimumLatitude")) {
userMappingGrp.DeleteKeyword("MinimumLatitude");
}
if(userMappingGrp.HasKeyword("MaximumLatitude")) {
userMappingGrp.DeleteKeyword("MaximumLatitude");
}
if(userMappingGrp.HasKeyword("MinimumLongitude")) {
userMappingGrp.DeleteKeyword("MinimumLongitude");
}
if(userMappingGrp.HasKeyword("MaximumLongitude")) {
userMappingGrp.DeleteKeyword("MaximumLongitude");
}
}
// Deal with user overrides entered in the GUI. Do this by changing the user's mapping group, which
// will then overlay anything in the output mapping group.
if(ui.WasEntered("MINLAT") && !ui.GetBoolean("MATCHMAP")) {
userMappingGrp.AddKeyword( PvlKeyword("MinimumLatitude", ui.GetDouble("MINLAT")), Pvl::Replace );
}
if(ui.WasEntered("MAXLAT") && !ui.GetBoolean("MATCHMAP")) {
userMappingGrp.AddKeyword( PvlKeyword("MaximumLatitude", ui.GetDouble("MAXLAT")), Pvl::Replace );
}
if(ui.WasEntered("MINLON") && !ui.GetBoolean("MATCHMAP")) {
userMappingGrp.AddKeyword( PvlKeyword("MinimumLongitude", ui.GetDouble("MINLON")), Pvl::Replace );
}
if(ui.WasEntered("MAXLON") && !ui.GetBoolean("MATCHMAP")) {
userMappingGrp.AddKeyword( PvlKeyword("MaximumLongitude", ui.GetDouble("MAXLON")), Pvl::Replace );
}
/**
* If the user is changing from positive east to positive west, or vice-versa, the output minimum is really
* the input maximum. However, the user mapping group must be left unaffected (an input minimum must be the
* output minimum). To accomplish this, we swap the minimums/maximums in the output group ahead of time. This
* causes the minimums and maximums to correlate to the output minimums and maximums. That way when we copy
* the user mapping group into the output group a mimimum overrides a minimum and a maximum overrides a maximum.
*/
bool sameDirection = true;
if(userMappingGrp.HasKeyword("LongitudeDirection")) {
if(((string)userMappingGrp["LongitudeDirection"]).compare(fromMappingGrp["LongitudeDirection"]) != 0) {
sameDirection = false;
}
}
// Since the out mapping group came from the from mapping group, which came from a valid cube,
// we can assume both min/max lon exists if min longitude exists.
if(!sameDirection && outMappingGrp.HasKeyword("MinimumLongitude")) {
double minLon = outMappingGrp["MinimumLongitude"];
double maxLon = outMappingGrp["MaximumLongitude"];
outMappingGrp["MaximumLongitude"] = minLon;
outMappingGrp["MinimumLongitude"] = maxLon;
}
if(ui.GetString("PIXRES").compare("FROM") == 0 && !ui.GetBoolean("MATCHMAP")) {
// Resolution will be in fromMappingGrp and outMappingGrp at this time
// delete from user mapping grp
if(userMappingGrp.HasKeyword("Scale")) {
userMappingGrp.DeleteKeyword("Scale");
}
if(userMappingGrp.HasKeyword("PixelResolution")) {
userMappingGrp.DeleteKeyword("PixelResolution");
}
}
else if(ui.GetString("PIXRES").compare("MAP") == 0 || ui.GetBoolean("MATCHMAP")) {
// Resolution will be in userMappingGrp - delete all others
if(outMappingGrp.HasKeyword("Scale")) {
outMappingGrp.DeleteKeyword("Scale");
}
if(outMappingGrp.HasKeyword("PixelResolution")) {
outMappingGrp.DeleteKeyword("PixelResolution");
}
if(fromMappingGrp.HasKeyword("Scale")); {
//.........这里部分代码省略.........