Skip to content
Snippets Groups Projects
Commit 719a622e authored by Cyrille Valladeau's avatar Cyrille Valladeau
Browse files

ENH: change to go throw the hook

parent 167171e0
No related branches found
No related tags found
No related merge requests found
......@@ -22,9 +22,6 @@
#include "itkMetaDataObject.h"
#include "otbMetaDataKey.h"
#include "ossim/base/ossimDpt.h"
#include "ossim/base/ossimGpt.h"
#include "ossim/projection/ossimRpcModel.h"
namespace otb {
......@@ -308,35 +305,12 @@ GCPsToRPCSensorModelImageFilter<TImage>
// Compute errors
this->ComputeErrors();
// Compute corner coordinates
ossimGpt ul, ur, ll, lr;
typename TImage::PointType startId = this->GetInput()->GetOrigin();
typename TImage::SizeType size = this->GetInput()->GetLargestPossibleRegion().GetSize();
// Upper left
ossimDpt imagePoint(startId[0], startId[1]);
m_RpcProjection->LineSampleToWorld(imagePoint, ul);
// Upper right
imagePoint = ossimDpt(startId[0], startId[1]+size[0]-1);
m_RpcProjection->LineSampleToWorld(imagePoint, ur);
// Lower left
imagePoint = ossimDpt(startId[0]+size[1]-1, startId[1]);
m_RpcProjection->LineSampleToWorld(imagePoint, ll);
// Lower right
imagePoint = ossimDpt(startId[0]+size[1]-1, startId[1]+size[0]-1);
m_RpcProjection->LineSampleToWorld(imagePoint, lr);
ossimKeywordlist geom_kwl;
otb_kwl.convertToOSSIMKeywordlist(geom_kwl);
ossimRefPtr<ossimRpcModel> rpcModel = new ossimRpcModel;
rpcModel->loadState( geom_kwl );
rpcModel->setGroundRect(ul, ur, lr, ll);
rpcModel->saveState(geom_kwl);
otb_kwl.SetKeywordlist(geom_kwl);
m_RpcProjection->AddGroundRect( otb_kwl, startId, size );
m_Keywordlist = otb_kwl;
// Encapsulate it
......
......@@ -123,4 +123,36 @@ RPCProjectionAdapter::Solve(const GCPsContainerType& gcpContainer,
otb_kwl.SetKeywordlist(geom_kwl);
}
void
RPCProjectionAdapter
::AddGroundRect( ImageKeywordlist& otb_kwl,
itk::Point<double, 2> orig, itk::Size<2> size)
{
ossimGpt ul, ll, ur, lr;
// Upper left
ossimDpt imagePoint(orig[0], orig[1]);
m_RpcProjection->lineSampleToWorld(imagePoint, ul);
// Upper right
imagePoint = ossimDpt(orig[0], orig[1]+size[0]-1);
m_RpcProjection->lineSampleToWorld(imagePoint, ur);
// Lower left
imagePoint = ossimDpt(orig[0]+size[1]-1, orig[1]);
m_RpcProjection->lineSampleToWorld(imagePoint, ll);
// Lower right
imagePoint = ossimDpt(orig[0]+size[1]-1, orig[1]+size[0]-1);
m_RpcProjection->lineSampleToWorld(imagePoint, lr);
ossimKeywordlist geom_kwl;
otb_kwl.convertToOSSIMKeywordlist(geom_kwl);
ossimRefPtr<ossimRpcModel> rpcModel = new ossimRpcModel;
rpcModel->loadState( geom_kwl );
rpcModel->setGroundRect(ul, ur, lr, ll);
rpcModel->saveState(geom_kwl);
otb_kwl.SetKeywordlist(geom_kwl);
}
} // namespace otb
......@@ -24,11 +24,9 @@
#include "itkObjectFactory.h"
#include "itkPoint.h"
#include "ossim/base/ossimDpt.h"
#include "ossim/base/ossimGpt.h"
#include "itkSize.h"
#include "ossim/projection/ossimRpcProjection.h"
class ossimRpcProjection;
namespace otb {
......@@ -69,10 +67,8 @@ public:
void TransformPoint(double x, double y, double z,
double& lon, double& lat, double& h) const;
void LineSampleToWorld(const ossimDpt & imagePoint, ossimGpt& worldPoint) const
{
m_RpcProjection->lineSampleToWorld(imagePoint, worldPoint);
}
void AddGroundRect( ImageKeywordlist& otb_kwl,
itk::Point<double, 2> orig, itk::Size<2> size);
protected:
RPCProjectionAdapter();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment