本文整理汇总了C++中ossimGpt类的典型用法代码示例。如果您正苦于以下问题:C++ ossimGpt类的具体用法?C++ ossimGpt怎么用?C++ ossimGpt使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ossimGpt类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: lineSampleToWorld
//*****************************************************************************
// METHOD: ossimRpcModel::lineSampleToWorld()
//
// Overrides base class implementation. Performs DEM intersection.
//*****************************************************************************
void ossimRpcModel::lineSampleToWorld(const ossimDpt& imagePoint,
ossimGpt& worldPoint) const
{
//---
// Under debate... (drb 20130610)
// this seems to be more accurate for the round trip
//---
#if 0
if(!imagePoint.hasNans())
{
lineSampleHeightToWorld(imagePoint,
worldPoint.height(),
worldPoint);
}
else
{
worldPoint.makeNan();
}
#else
if(!imagePoint.hasNans())
{
ossimEcefRay ray;
imagingRay(imagePoint, ray);
ossimElevManager::instance()->intersectRay(ray, worldPoint);
}
else
{
worldPoint.makeNan();
}
#endif
}
开发者ID:rb-rialto,项目名称:ossim,代码行数:38,代码来源:ossimRpcModel.cpp
示例2: computeZone
ossim_int32 ossimUtmProjection::computeZone(const ossimGpt& ground)
{
ossim_int32 result = 0;
double longitude = ground.lonr();
double lat_Degrees = (ossim_int32)( (ground.latd()) + 0.00000005);
double long_Degrees = (ossim_int32)( (ground.lond()) + 0.00000005);
if (longitude < M_PI)
result = (ossim_int32)( (31 + ((180 * longitude) / (6 * M_PI)) ) + 0.00000005);
else
result = (ossim_int32)( (((180 * longitude) / (6 * M_PI)) - 29) + 0.00000005);
if (result > 60)
result = 1;
/* UTM special cases */
if ((lat_Degrees > 55) && (lat_Degrees < 64) && (long_Degrees > -1)
&& (long_Degrees < 3))
result = 31;
if ((lat_Degrees > 55) && (lat_Degrees < 64) && (long_Degrees > 2)
&& (long_Degrees < 12))
result = 32;
if ((lat_Degrees > 71) && (long_Degrees > -1) && (long_Degrees < 9))
result = 31;
if ((lat_Degrees > 71) && (long_Degrees > 8) && (long_Degrees < 21))
result = 33;
if ((lat_Degrees > 71) && (long_Degrees > 20) && (long_Degrees < 33))
result = 35;
if ((lat_Degrees > 71) && (long_Degrees > 32) && (long_Degrees < 42))
result = 37;
return result;
}
开发者ID:ossimlabs,项目名称:ossim,代码行数:32,代码来源:ossimUtmProjection.cpp
示例3: worldToLineSample
//*****************************************************************************
// METHOD: ossimRpcProjection::worldToLineSample()
//
// Overrides base class implementation. Directly computes line-sample from
// the polynomials.
//*****************************************************************************
void ossimRpcProjection::worldToLineSample(const ossimGpt& ground_point,
ossimDpt& imgPt) const
{
if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimRpcProjection::worldToLineSample(): entering..." << std::endl;
if(ground_point.isLatNan() ||
ground_point.isLonNan() )
{
imgPt.makeNan();
return;
}
//*
// Normalize the lat, lon, hgt:
//*
double nlat = (ground_point.lat - theLatOffset) / theLatScale;
double nlon = (ground_point.lon - theLonOffset) / theLonScale;
double nhgt;
if(ossim::isnan(ground_point.hgt))
{
nhgt = (theHgtScale - theHgtOffset) / theHgtScale;
}
else
{
nhgt = (ground_point.hgt - theHgtOffset) / theHgtScale;
}
//***
// Compute the adjusted, normalized line (U) and sample (V):
//***
double Pu = polynomial(nlat, nlon, nhgt, theLineNumCoef);
double Qu = polynomial(nlat, nlon, nhgt, theLineDenCoef);
double Pv = polynomial(nlat, nlon, nhgt, theSampNumCoef);
double Qv = polynomial(nlat, nlon, nhgt, theSampDenCoef);
double U_rot = Pu / Qu;
double V_rot = Pv / Qv;
//***
// U, V are normalized quantities. Need now to establish the image file
// line and sample. First, back out the adjustable parameter effects
// starting with rotation:
//***
double U = U_rot*theCosMapRot + V_rot*theSinMapRot;
double V = V_rot*theCosMapRot - U_rot*theSinMapRot;
//***
// Now back out skew, scale, and offset adjustments:
//***
imgPt.line = U*(theLineScale+theIntrackScale) + theLineOffset + theIntrackOffset;
imgPt.samp = V*(theSampScale+theCrtrackScale) + theSampOffset + theCrtrackOffset;
if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimRpcProjection::worldToLineSample(): returning..." << std::endl;
return;
}
开发者ID:ossimlabs,项目名称:ossim,代码行数:64,代码来源:ossimRpcProjection.cpp
示例4: lineSampleToWorld
void ossimRpcProjection::lineSampleToWorld(const ossimDpt& imagePoint,
ossimGpt& worldPoint) const
{
if(!imagePoint.hasNans())
{
lineSampleHeightToWorld(imagePoint,
worldPoint.height(),
worldPoint);
}
else
{
worldPoint.makeNan();
}
}
开发者ID:ossimlabs,项目名称:ossim,代码行数:15,代码来源:ossimRpcProjection.cpp
示例5: lineSampleToWorld
void ossimBuckeyeSensor::lineSampleToWorld(const ossimDpt& image_point,
ossimGpt& gpt) const
{
if (traceDebug()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimBuckeyeSensor::lineSampleToWorld:entering..." << std::endl;
if(image_point.hasNans())
{
gpt.makeNan();
return;
}
//***
// Determine imaging ray and invoke elevation source object's services to
// intersect ray with terrain model:
//***
ossimEcefRay ray;
imagingRay(image_point, ray);
ossimElevManager::instance()->intersectRay(ray, gpt);
if (traceDebug())
{
ossimNotify(ossimNotifyLevel_DEBUG) << "image_point = " << image_point << std::endl;
ossimNotify(ossimNotifyLevel_DEBUG) << "ray = " << ray << std::endl;
ossimNotify(ossimNotifyLevel_DEBUG) << "gpt = " << gpt << std::endl;
}
if (traceDebug()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimBuckeyeSensor::lineSampleToWorld: returning..." << std::endl;
return;
}
开发者ID:Dukeke,项目名称:ossim,代码行数:30,代码来源:ossimBuckeyeSensor.cpp
示例6: ossimGpt
ossimGpt ossimThreeParamDatum::shift(const ossimGpt &aPt)const
{
const ossimDatum *aDatum = aPt.datum();
if( code() == aDatum->code())
{
return ossimGpt(aPt.latd(), aPt.lond(), aPt.height(), this);
}
if(aDatum)
{
return shiftFromWgs84(aDatum->shiftToWgs84(aPt));
}
return aPt;
}
开发者ID:loongfee,项目名称:ossim-svn,代码行数:16,代码来源:ossimThreeParamDatum.cpp
示例7: imageToGround
void ossimIvtGeomXform::imageToGround(const ossimDpt& ipt, ossimGpt& gpt)
{
gpt.makeNan();
if(m_geom.valid())
{
m_geom->localToWorld(ipt, gpt);
}
}
开发者ID:bradh,项目名称:ossim-plugins,代码行数:8,代码来源:ossimIvtGeomXform.cpp
示例8: viewToGround
void ossimIvtGeomXform::viewToGround(const ossimDpt& viewPt, ossimGpt& gpt)
{
ossimDpt ipt;
gpt.makeNan();
viewToImage(viewPt, ipt);
if(!ipt.hasNans())
{
imageToGround(ipt, gpt);
}
}
开发者ID:bradh,项目名称:ossim-plugins,代码行数:10,代码来源:ossimIvtGeomXform.cpp
示例9: setOrigin
void ossimUtmProjection::setOrigin(const ossimGpt& origin)
{
setZone(origin);
// NOTE: We will not set the hemisphere if the origin latitude is 0.0.
if (origin.latd() != 0.0)
{
setHemisphere(origin);
}
ossimMapProjection::setOrigin(origin);
}
开发者ID:ossimlabs,项目名称:ossim,代码行数:10,代码来源:ossimUtmProjection.cpp
示例10: lineSampleToWorld
//*****************************************************************************
// METHOD: ossimRpcModel::lineSampleToWorld()
//
// Overrides base class implementation. Performs DEM intersection.
//*****************************************************************************
void ossimRpcModel::lineSampleToWorld(const ossimDpt& imagePoint,
ossimGpt& worldPoint) const
{
//lineSampleHeightToWorld(imagePoint, theHgtOffset, worldPoint);
//worldPoint.hgt = ossimElevManager::instance()->getHeightAboveEllipsoid(worldPoint);
//if(!worldPoint.hasNans()) return;
if(!imagePoint.hasNans())
{
ossimEcefRay ray;
imagingRay(imagePoint, ray);
if (m_proj) worldPoint.datum(m_proj->getDatum()); //loong
ossimElevManager::instance()->intersectRay(ray, worldPoint);
}
else
{
worldPoint.makeNan();
}
}
开发者ID:loongfee,项目名称:radi-ossim,代码行数:25,代码来源:ossimRpcModel.cpp
示例11: createRelativePath
void ossimDtedElevationDatabase::createRelativePath(ossimFilename& file, const ossimGpt& gpt)const
{
ossimFilename lon, lat;
int ilon = static_cast<int>(floor(gpt.lond()));
if (ilon < 0)
{
lon = "w";
}
else
{
lon = "e";
}
ilon = abs(ilon);
std::ostringstream s1;
s1 << std::setfill('0') << std::setw(3)<< ilon;
lon += s1.str().c_str();//ossimString::toString(ilon);
int ilat = static_cast<int>(floor(gpt.latd()));
if (ilat < 0)
{
lat += "s";
}
else
{
lat += "n";
}
ilat = abs(ilat);
std::ostringstream s2;
s2<< std::setfill('0') << std::setw(2)<< ilat;
lat += s2.str().c_str();
file = lon.dirCat(lat+m_extension);
}
开发者ID:loongfee,项目名称:ossim-svn,代码行数:39,代码来源:ossimDtedElevationDatabase.cpp
示例12: worldToLineSample
void ossimTileMapModel::worldToLineSample(const ossimGpt& ground_point,
ossimDpt& img_pt) const
{
// if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimTileMapModel::worldToLineSample(): entering..." << std::endl;
if(ground_point.isLatNan() || ground_point.isLonNan() )
{
img_pt.makeNan();
return;
}
double x = (180.0 + ground_point.lon) / 360.0;
double y = - ground_point.lat * M_PI / 180; // convert to radians
y = 0.5 * log((1+sin(y)) / (1 - sin(y)));
y *= 1.0/(2 * M_PI); // scale factor from radians to normalized
y += 0.5; // and make y range from 0 - 1
img_pt.samp = floor(x*pow(2.,static_cast<double>(qDepth))*256);
img_pt.line = floor(y*pow(2.,static_cast<double>(qDepth))*256);
return;
}
开发者ID:573671712,项目名称:OTB,代码行数:23,代码来源:ossimTileMapModel.cpp
示例13: createRelativePath
void ossimSrtmElevationDatabase::createRelativePath(ossimFilename& file, const ossimGpt& gpt)const
{
int ilat = static_cast<int>(floor(gpt.latd()));
if (ilat < 0)
{
file = "S";
}
else
{
file = "N";
}
ilat = abs(ilat);
std::ostringstream os1;
os1 << std::setfill('0') << std::setw(2) <<ilat;
file += os1.str().c_str();
int ilon = static_cast<int>(floor(gpt.lond()));
if (ilon < 0)
{
file += "W";
}
else
{
file += "E";
}
ilon = abs(ilon);
std::ostringstream os2;
os2 << std::setfill('0') << std::setw(3) << ilon;
file += os2.str().c_str();
file.setExtension("hgt");
}
开发者ID:loongfee,项目名称:ossim-svn,代码行数:37,代码来源:ossimSrtmElevationDatabase.cpp
示例14: centerGpt
std::string oms::WktUtility::toWktGeometryGivenCenterRadius(const ossimGpt& center,
double radius,
ossimUnitType radialUnit,
unsigned int numberOfSamples,
int directionalSign)const
{
std::string result = "";
if(ossim::almostEqual(radius, 0.0))
{
result = "POINT(" + ossimString::toString(center.lond()).string() + " " + ossimString::toString(center.latd()).string() + ")";
}
else
{
double headingStepSizeInDegrees = (360.0/static_cast<double>(numberOfSamples))*
directionalSign;
ossim_uint32 step = 0;
double degreesDistance = ossimUnitConversionTool(radius, radialUnit).getValue(OSSIM_DEGREES);
ossimDpt centerGpt(center);
ossimDpt newPoint;
ossimDpt firstPoint;
if(numberOfSamples > 0)
{
result = "POLYGON((";
}
for(step = 0; step < numberOfSamples; ++step)
{
double x = ossim::degreesToRadians(headingStepSizeInDegrees*step);// - 90.0));
double dy = sin(x);
double dx = cos(x);
newPoint.lat = dy*degreesDistance;
newPoint.lon = dx*degreesDistance;
newPoint = centerGpt + newPoint;
if(step == 0)
{
firstPoint = newPoint;
}
result += (ossimString::toString(ossim::clamp(newPoint.lon, -180.0, 180.0)).string()+" "
+ossimString::toString(ossim::clamp(newPoint.lat, -90.0, 90.0)).string()+",");
}
if(numberOfSamples > 0)
{
result += (ossimString::toString(firstPoint.lon ).string() + " " +
ossimString::toString(firstPoint.lat ).string() );
result += "))";
}
}
return result;
}
开发者ID:loongfee,项目名称:ossim-svn,代码行数:49,代码来源:WktUtility.cpp
示例15: lineSampleToWorld
void ossimCsmSensorModel::lineSampleToWorld(const ossimDpt& image_point,
ossimGpt& gpt) const
{
if(image_point.hasNans())
{
gpt.makeNan();
return;
}
//***
// Determine imaging ray and invoke elevation source object's services to
// intersect ray with terrain model:
//***
ossimEcefRay ray;
imagingRay(image_point, ray);
ossimElevManager::instance()->intersectRay(ray, gpt);
}
开发者ID:ICODE-MDA,项目名称:AutomatedSARShipDetection,代码行数:16,代码来源:ossimCsmSensorModel.cpp
示例16: lineSampleHeightToWorld
void ossimTileMapModel::lineSampleHeightToWorld(const ossimDpt& image_point,
const double& /* height */,
ossimGpt& gpt) const
{
if(!image_point.hasNans())
{
gpt.lon = static_cast<double>(image_point.samp)/(1 << qDepth)/256 *360.0-180.0;
double y = static_cast<double>(image_point.line)/(1 << qDepth)/256;
double ex = exp(4*M_PI*(y-0.5));
gpt.lat = -180.0/M_PI*asin((ex-1)/(ex+1));
}
else
{
gpt.makeNan();
}
return;
}
开发者ID:573671712,项目名称:OTB,代码行数:17,代码来源:ossimTileMapModel.cpp
示例17: subCode
ossimGpt ossimNadconNarDatum::shift(const ossimGpt &aPt)const
{
const ossimDatum* datum = aPt.datum();
ossimString code = datum->code();
ossimString subCode(code.begin(),
code.begin() + 3);
if(subCode == "NAR")
{
return aPt;
}
else
{
if(subCode == "NAS")
{
checkGrid(aPt);
if(!theLatGrid.getFileOkFlag()||
!theLonGrid.getFileOkFlag())
{
return ossimThreeParamDatum::shift(aPt);
}
double shiftLat = theLatGrid.getShiftAtLatLon(aPt.latd(), aPt.lond());
double shiftLon = theLonGrid.getShiftAtLatLon(aPt.latd(), aPt.lond());
if( (ossim::isnan(shiftLat)) || (ossim::isnan(shiftLon)) )
{
return ossimThreeParamDatum::shift(aPt);
}
else
{
// Note the shifts are stored in the file
// as seconds.
//
// convert the seconds into decimal degrees.
//
shiftLat /= 3600.0;
shiftLon /= 3600.0;
return ossimGpt(aPt.latd() + shiftLat,
aPt.lond() - shiftLon,
aPt.height(),
this);
}
}
else
{
return ossimThreeParamDatum::shift(aPt);
}
}
return ossimThreeParamDatum::shift(aPt);
}
开发者ID:LucHermitte,项目名称:ossim,代码行数:51,代码来源:ossimNadconNarDatum.cpp
示例18: forward
ossimDpt ossimVanDerGrintenProjection::forward(const ossimGpt &latLon)const
{
double easting = 0.0;
double northing = 0.0;
ossimGpt gpt = latLon;
if (theDatum)
{
if (theDatum->code() != latLon.datum()->code())
{
gpt.changeDatum(theDatum); // Shift to our datum.
}
}
Convert_Geodetic_To_Van_der_Grinten(gpt.latr(),
gpt.lonr(),
&easting,
&northing);
return ossimDpt(easting, northing);
}
开发者ID:LucHermitte,项目名称:ossim,代码行数:20,代码来源:ossimVanDerGrintenProjection.cpp
示例19: imagingRay
void ossimBuckeyeSensor::lineSampleHeightToWorld(const ossimDpt& image_point,
const double& heightEllipsoid,
ossimGpt& worldPoint) const
{
if (traceDebug()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimBuckeyeSensor::lineSampleHeightToWorld: entering..." << std::endl;
if (!insideImage(image_point))
{
worldPoint.makeNan();
}
else
{
//***
// First establish imaging ray from image point:
//***
ossimEcefRay ray;
imagingRay(image_point, ray);
ossimEcefPoint Pecf (ray.intersectAboveEarthEllipsoid(heightEllipsoid));
worldPoint = ossimGpt(Pecf);
}
if (traceDebug()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimBuckeyeSensor::lineSampleHeightToWorld: returning..." << std::endl;
}
开发者ID:Dukeke,项目名称:ossim,代码行数:21,代码来源:ossimBuckeyeSensor.cpp
示例20: forward
ossimDpt ossimTransCylEquAreaProjection::forward(const ossimGpt &latLon)const
{
double easting = 0.0;
double northing = 0.0;
ossimGpt gpt = latLon;
if (theDatum)
{
if (theDatum->code() != latLon.datum()->code())
{
gpt.changeDatum(theDatum); // Shift to our datum.
}
}
Convert_Geodetic_To_Trans_Cyl_Eq_Area(gpt.latr(),
gpt.lonr(),
&easting,
&northing);
return ossimDpt(easting, northing);
}
开发者ID:LucHermitte,项目名称:ossim,代码行数:21,代码来源:ossimTransCylEquAreaProjection.cpp
注:本文中的ossimGpt类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论