本文整理汇总了C++中Projection::SetGround方法的典型用法代码示例。如果您正苦于以下问题:C++ Projection::SetGround方法的具体用法?C++ Projection::SetGround怎么用?C++ Projection::SetGround使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Projection
的用法示例。
在下文中一共展示了Projection::SetGround方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char *argv[]) {
Preference::Preferences(true);
void doit(Pvl & lab);
void doit2(Pvl & lab);
try {
cout << "Unit test for ProjectionFactory" << endl;
Pvl lab;
lab.addGroup(PvlGroup("Mapping"));
PvlGroup &mapGroup = lab.findGroup("Mapping");
mapGroup += PvlKeyword("EquatorialRadius", toString(3396190.0));
mapGroup += PvlKeyword("PolarRadius", toString(3376200.0));
mapGroup += PvlKeyword("LatitudeType", "Planetographic");
mapGroup += PvlKeyword("LongitudeDirection", "PositiveEast");
mapGroup += PvlKeyword("LongitudeDomain", toString(360));
mapGroup += PvlKeyword("ProjectionName", "SimpleCylindrical");
mapGroup += PvlKeyword("CenterLongitude", toString(220.0));
cout << "Test for missing pixel resolution ... " << endl;
doit(lab);
doit2(lab);
mapGroup += PvlKeyword("PixelResolution", toString(2000.0));
cout << "Test for missing upper left X ... " << endl;
doit(lab);
mapGroup += PvlKeyword("UpperLeftCornerX", toString(-18000.0));
cout << "Test for missing upper left Y ... " << endl;
doit(lab);
mapGroup += PvlKeyword("UpperLeftCornerY", toString(2062000.0));
cout << "Testing conversion from image to ground ... " << endl;
Projection *proj = ProjectionFactory::CreateFromCube(lab);
proj->SetWorld(245.0, 355.0);
cout << setprecision(14);
cout << "Latitude: " << proj->Latitude() << endl;
cout << "Longitude: " << proj->Longitude() << endl;
cout << endl;
cout << "Testing conversion from ground to image ... " << endl;
proj->SetGround(22.84279897788801, 227.9291842833142);
cout << "Sample: " << proj->WorldX() << endl;
cout << "Line: " << proj->WorldY() << endl;
cout << endl;
cout << "Testing missing ground range on create method ... " << endl;
doit2(lab);
mapGroup += PvlKeyword("MinimumLatitude", toString(10.8920539924144));
mapGroup += PvlKeyword("MaximumLatitude", toString(34.7603960060206));
mapGroup += PvlKeyword("MinimumLongitude", toString(219.72432466275));
mapGroup += PvlKeyword("MaximumLongitude", toString(236.186050244411));
mapGroup.deleteKeyword("UpperLeftCornerX");
mapGroup.deleteKeyword("UpperLeftCornerY");
cout << "Testing create method ... " << endl;
int lines, samples;
proj = ProjectionFactory::CreateForCube(lab, samples, lines);
cout << "Lines: " << lines << endl;
cout << "Samples: " << samples << endl;
cout << "UpperLeftX: " << (double) mapGroup["UpperLeftCornerX"] << endl;
cout << "UpperLeftY: " << (double) mapGroup["UpperLeftCornerY"] << endl;
cout << endl;
cout << "Testing create method with existing cube labels" << endl;
mapGroup.addKeyword(PvlKeyword("UpperLeftCornerX", toString(-16000.0)), Pvl::Replace);
mapGroup.addKeyword(PvlKeyword("UpperLeftCornerY", toString(2060000.0)), Pvl::Replace);
Pvl lab2;
PvlObject icube("IsisCube");
PvlObject core("Core");
PvlGroup dims("Dimensions");
dims += PvlKeyword("Lines", toString(400));
dims += PvlKeyword("Samples", toString(600));
core.addGroup(dims);
icube.addObject(core);
icube.addGroup(mapGroup);
lab2.addObject(icube);
proj = ProjectionFactory::CreateForCube(lab2, samples, lines);
cout << "Lines: " << lines << endl;
cout << "Samples: " << samples << endl;
mapGroup = lab2.findGroup("Mapping", Pvl::Traverse);
cout << "UpperLeftX: " << (double) mapGroup["UpperLeftCornerX"] << endl;
cout << "UpperLeftY: " << (double) mapGroup["UpperLeftCornerY"] << endl;
cout << endl;
cout << "Label results" << endl;
cout << lab2 << endl;
}
catch(IException &e) {
e.print();
}
}
示例2: IsisMain
void IsisMain() {
// Get the list of cubes to mosaic
UserInterface &ui = Application::GetUserInterface();
FileList flist(ui.GetFilename("FROMLIST"));
vector<Cube *> clist;
try {
if (flist.size() < 1) {
string msg = "the list file [" +ui.GetFilename("FROMLIST") +
"does not contain any data";
throw iException::Message(iException::User,msg,_FILEINFO_);
}
// open all the cube and place in vector clist
for (int i=0; i<(int)flist.size(); i++) {
Cube *c = new Cube();
clist.push_back(c);
c->Open(flist[i]);
}
// run the compair function here. This will conpair the
// labels of the first cube to the labels of each following cube.
PvlKeyword sourceProductId("SourceProductId");
string ProdId;
for (int i=0; i<(int)clist.size(); i++) {
Pvl *pmatch = clist[0]->Label();
Pvl *pcomp = clist[i]->Label();
CompareLabels(*pmatch, *pcomp);
PvlGroup g = pcomp->FindGroup("Instrument",Pvl::Traverse);
if (g.HasKeyword("StitchedProductIds")) {
PvlKeyword k = g["StitchedProductIds"];
for (int j=0; j<(int)k.Size(); j++) {
sourceProductId += g["stitchedProductIds"][j];
}
}
ProdId = (string)pmatch->FindGroup("Archive",Pvl::Traverse)["ObservationId"];
iString bandname = (string)pmatch->FindGroup("BandBin",Pvl::Traverse)["Name"];
bandname = bandname.UpCase();
ProdId = ProdId + "_" + bandname;
}
bool runXY=true;
//calculate the min and max lon
double minLat = DBL_MAX;
double maxLat = -DBL_MAX;
double minLon = DBL_MAX;
double maxLon = -DBL_MAX;
double avgLat;
double avgLon;
for (int i=0; i<(int)clist.size(); i++) {
Projection *proj = clist[i]->Projection();
if (proj->MinimumLatitude() < minLat) minLat = proj->MinimumLatitude();
if (proj->MaximumLatitude() > maxLat) maxLat = proj->MaximumLatitude();
if (proj->MinimumLongitude() < minLon) minLon = proj->MinimumLongitude();
if (proj->MaximumLongitude() > maxLon) maxLon = proj->MaximumLongitude();
}
avgLat = (minLat + maxLat) / 2;
avgLon = (minLon + maxLon) / 2;
Projection *proj = clist[0]->Projection();
proj->SetGround(avgLat,avgLon);
avgLat = proj->UniversalLatitude();
avgLon = proj->UniversalLongitude();
// Use camera class to get Inc., emi., phase, and other values
double Cemiss;
double Cphase;
double Cincid;
double ClocalSolTime;
double CsolarLong;
double CsunAzimuth;
double CnorthAzimuth;
for (int i=0; i<(int)clist.size(); i++) {
Camera *cam = clist[i]->Camera();
if (cam->SetUniversalGround(avgLat,avgLon)) {
Cemiss = cam->EmissionAngle();
Cphase = cam->PhaseAngle();
Cincid = cam->IncidenceAngle();
ClocalSolTime = cam->LocalSolarTime();
CsolarLong = cam->SolarLongitude();
CsunAzimuth = cam->SunAzimuth();
CnorthAzimuth = cam->NorthAzimuth();
runXY = false;
break;
}
}
//The code within the if runXY was added in 10/07 to find an intersect with
//pole images that would fail when using projection set universal ground.
// This is run if no intersect is found when using lat and lon in
// projection space.
if (runXY) {
double startX = DBL_MAX;
double endX = DBL_MIN;
double startY = DBL_MAX;
//.........这里部分代码省略.........