本文整理汇总了C++中Projection::Latitude方法的典型用法代码示例。如果您正苦于以下问题:C++ Projection::Latitude方法的具体用法?C++ Projection::Latitude怎么用?C++ Projection::Latitude使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Projection
的用法示例。
在下文中一共展示了Projection::Latitude方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ExtractLatLonRange
/**
* Removes control points not in the lat/lon range provided in the unput
* parameters.
*
* @param outNet The output control net being removed from
* @param noLanLonPoint The keyword recording all of the control points removed
* due to the provided lat/lon range
* @param noLanLonPoint The keyword recording all of the control points removed
* due to the inability to calculate the lat/lon for that
* point
*/
void ExtractLatLonRange( ControlNet & outNet, PvlKeyword & nonLatLonPoints,
PvlKeyword & cannotGenerateLatLonPoints, map<iString,iString> sn2filename ) {
if( outNet.Size() == 0 ) { return; }
UserInterface &ui = Application::GetUserInterface();
// Get the lat/lon and fix the range for the internal 0/360
double minlat = ui.GetDouble("MINLAT");
double maxlat = ui.GetDouble("MAXLAT");
double minlon = ui.GetDouble("MINLON");
if( minlon < 0.0 ) { minlon += 360; }
double maxlon = ui.GetDouble("MAXLON");
if( maxlon < 0.0 ) { minlon += 360; }
bool useNetwork = ui.GetBoolean("USENETWORK");
Progress progress;
progress.SetText("Calculating lat/lon");
progress.SetMaximumSteps(outNet.Size());
progress.CheckStatus();
CubeManager manager;
manager.SetNumOpenCubes( 50 ); //Should keep memory usage to around 1GB
for( int cp = outNet.Size()-1; cp >= 0; cp --) {
progress.CheckStatus();
// If the Contorl Network takes priority, use it
double pointLat = outNet[cp].UniversalLatitude();
double pointLon = outNet[cp].UniversalLongitude();
bool useControlNet = useNetwork && pointLat > -1000 && pointLon > -1000;
if( outNet[cp].Type() == Isis::ControlPoint::Ground || useControlNet ) {
if( NotInLatLonRange( outNet[cp].UniversalLatitude(),
outNet[cp].UniversalLongitude(),
minlat, maxlat, minlon, maxlon ) ) {
nonLatLonPoints += outNet[cp].Id();
outNet.Delete( cp );
}
}
/**
* If the lat/lon cannot be determined from the point, then we need to calculate
* lat/lon on our own
*/
else if( ui.WasEntered("FROMLIST") ) {
// Find a cube in the Control Point to get the lat/lon from
int cm = 0;
iString sn = "";
double lat = 0.0;
double lon = 0.0;
double radius = 0.0;
// First check the reference Measure
if( outNet[cp].HasReference() ) {
cm = outNet[cp].ReferenceIndex();
if( !sn2filename[outNet[cp][cm].CubeSerialNumber()].empty() ) {
sn = outNet[cp][cm].CubeSerialNumber();
}
}
// Search for other Control Measures if needed
if( sn.empty() ) {
// Find the Serial Number if it exists
for( int cm = 0; (cm < outNet[cp].Size()) && sn.empty(); cm ++ ) {
if( !sn2filename[outNet[cp][cm].CubeSerialNumber()].empty() ) {
sn = outNet[cp][cm].CubeSerialNumber();
}
}
}
// Connot fine a cube to get the lat/lon from
if( sn.empty() ) {
cannotGenerateLatLonPoints += outNet[cp].Id();
outNet.Delete( cp );
}
// Calculate the lat/lon and check for validity
else {
bool remove = false;
Cube *cube = manager.OpenCube( sn2filename[sn] );
Camera *camera = cube->Camera();
if (camera == NULL) {
try {
Projection *projection = ProjectionFactory::Create( (*(cube->Label())) );
if(!projection->SetCoordinate(outNet[cp][cm].Sample(),outNet[cp][cm].Line())) {
//.........这里部分代码省略.........
示例2: 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();
}
}