27 #include "../../../common/StringUtils.h" 
   28 #include "../../../dataaccess/dataset/DataSet.h" 
   29 #include "../../../dataaccess/utils/Utils.h" 
   30 #include "../../../raster/Grid.h" 
   31 #include "../../../raster/Raster.h" 
   34 #include "ui_ClippingWizardPageForm.h" 
   37 #include <QGridLayout> 
   39 #include <QDoubleValidator> 
   40 #include <QIntValidator> 
   41 #include <QMessageBox> 
   49   : QWizardPage(parent),
 
   50     m_ui(new Ui::ClippingWizardPageForm),
 
   59   QGridLayout* displayLayout = 
new QGridLayout(
m_ui->m_frame);
 
   67   displayLayout->setContentsMargins(0,0,0,0);
 
   72   this->setTitle(tr(
"Clipping"));
 
   73   this->setSubTitle(tr(
"Select the type of clipping and set their specific parameters."));
 
   75   m_ui->m_llxLineEdit->setValidator(
new QDoubleValidator(
this));
 
   76   m_ui->m_llyLineEdit->setValidator(
new QDoubleValidator(
this));
 
   77   m_ui->m_urxLineEdit->setValidator(
new QDoubleValidator(
this));
 
   78   m_ui->m_uryLineEdit->setValidator(
new QDoubleValidator(
this));
 
   80   m_ui->m_startRowLineEdit->setValidator(
new QIntValidator(
this));
 
   81   m_ui->m_startColumnLineEdit->setValidator(
new QIntValidator(
this));
 
   82   m_ui->m_widthLineEdit->setValidator(
new QIntValidator(
this));
 
   83   m_ui->m_heightLineEdit->setValidator(
new QIntValidator(
this));
 
   89   connect(
m_ui->m_llxLineEdit, SIGNAL(editingFinished()), 
this, SIGNAL(completeChanged()));
 
   90   connect(
m_ui->m_llyLineEdit, SIGNAL(editingFinished()), 
this, SIGNAL(completeChanged()));
 
   91   connect(
m_ui->m_urxLineEdit, SIGNAL(editingFinished()), 
this, SIGNAL(completeChanged()));
 
   92   connect(
m_ui->m_uryLineEdit, SIGNAL(editingFinished()), 
this, SIGNAL(completeChanged()));
 
   94   connect(
m_ui->m_startRowLineEdit, SIGNAL(editingFinished()), 
this, SIGNAL(completeChanged()));
 
   95   connect(
m_ui->m_startColumnLineEdit, SIGNAL(editingFinished()), 
this, SIGNAL(completeChanged()));
 
   96   connect(
m_ui->m_widthLineEdit, SIGNAL(editingFinished()), 
this, SIGNAL(completeChanged()));
 
   97   connect(
m_ui->m_heightLineEdit, SIGNAL(editingFinished()), 
this, SIGNAL(completeChanged()));
 
  106   int index = m_ui->m_strategyTypeComboBox->currentIndex();
 
  107   int type = m_ui->m_strategyTypeComboBox->itemData(index).toInt();
 
  109   if(type == CLIPPING_EXTENT)
 
  111     if(m_ui->m_llxLineEdit->text().isEmpty() ||
 
  112        m_ui->m_llyLineEdit->text().isEmpty() ||
 
  113        m_ui->m_urxLineEdit->text().isEmpty() ||
 
  114        m_ui->m_uryLineEdit->text().isEmpty()
 
  120   else if(type == CLIPPING_DIMENSION)
 
  122     if(m_ui->m_startRowLineEdit->text().isEmpty() ||
 
  123        m_ui->m_startColumnLineEdit->text().isEmpty() ||
 
  124        m_ui->m_widthLineEdit->text().isEmpty() ||
 
  125        m_ui->m_heightLineEdit->text().isEmpty()
 
  131   else if(type == CLIPPING_LAYER)
 
  143   std::list<te::map::AbstractLayerPtr> list;
 
  145   list.push_back(m_layer);
 
  147   m_navigator->set(m_layer);
 
  152   std::list<te::map::AbstractLayerPtr>::iterator it = layerList.begin();
 
  154   while(it != layerList.end())
 
  158     std::auto_ptr<te::da::DataSetType> dsType = l->getSchema();
 
  160     if(dsType->hasGeom())
 
  161       m_ui->m_layerComboBox->addItem(l->getTitle().c_str(), QVariant::fromValue(l));
 
  166   if(m_ui->m_layerComboBox->count() > 0)
 
  167     onLayerComboBoxActivated(0);
 
  177   int index = m_ui->m_strategyTypeComboBox->currentIndex();
 
  178   int type = m_ui->m_strategyTypeComboBox->itemData(index).toInt();
 
  180   return type == CLIPPING_EXTENT;
 
  185   int index = m_ui->m_strategyTypeComboBox->currentIndex();
 
  186   int type = m_ui->m_strategyTypeComboBox->itemData(index).toInt();
 
  188   return type == CLIPPING_DIMENSION;
 
  193   int index = m_ui->m_strategyTypeComboBox->currentIndex();
 
  194   int type = m_ui->m_strategyTypeComboBox->itemData(index).toInt();
 
  196   return type == CLIPPING_LAYER;
 
  201   env.
m_llx = m_ui->m_llxLineEdit->text().toDouble();
 
  202   env.
m_lly = m_ui->m_llyLineEdit->text().toDouble();
 
  203   env.
m_urx = m_ui->m_urxLineEdit->text().toDouble();
 
  204   env.
m_ury = m_ui->m_uryLineEdit->text().toDouble();
 
  209   x = m_ui->m_startColumnLineEdit->text().toInt();
 
  210   y = m_ui->m_startRowLineEdit->text().toInt();
 
  211   width = m_ui->m_widthLineEdit->text().toInt();
 
  212   height = m_ui->m_heightLineEdit->text().toInt();
 
  217   emit completeChanged();
 
  222   m_ui->m_layerAttrComboBox->clear();
 
  224   QVariant varLayer = m_ui->m_layerComboBox->itemData(index, Qt::UserRole);
 
  227   std::auto_ptr<te::da::DataSetType> dsType = l->getSchema();
 
  229   for(std::size_t t = 0; t < dsType->getProperties().size(); ++t)
 
  231     m_ui->m_layerAttrComboBox->addItem(dsType->getProperties()[t]->getName().c_str());
 
  240   int index = m_ui->m_strategyTypeComboBox->currentIndex();
 
  241   int type = m_ui->m_strategyTypeComboBox->itemData(index).toInt();
 
  243   if(type == CLIPPING_EXTENT)
 
  245     m_ui->m_llxLineEdit->setText(QString::number(env.
getLowerLeftX(), 
'f', 5));
 
  246     m_ui->m_llyLineEdit->setText(QString::number(env.
getLowerLeftY(), 
'f', 5));
 
  247     m_ui->m_urxLineEdit->setText(QString::number(env.
getUpperRightX(), 
'f', 5));
 
  248     m_ui->m_uryLineEdit->setText(QString::number(env.
getUpperRightY(), 
'f', 5));
 
  250     m_navigator->setExtent(env);
 
  252   else if(type == CLIPPING_DIMENSION)
 
  254     std::auto_ptr<te::da::DataSet> ds = m_layer->getData();
 
  259       std::auto_ptr<te::rst::Raster> inputRst = ds->getRaster(rpos);
 
  267         m_ui->m_startRowLineEdit->setText(QString::number((
int)ul.
y));
 
  268         m_ui->m_startColumnLineEdit->setText(QString::number((
int)ul.
x));
 
  269         m_ui->m_heightLineEdit->setText(QString::number((
int)(lr.
y - ul.
y)));
 
  270         m_ui->m_widthLineEdit->setText(QString::number((
int)(lr.
x - ul.
x)));
 
  275   emit completeChanged();
 
  280   m_ui->m_strategyTypeComboBox->clear();
 
  282   m_ui->m_strategyTypeComboBox->addItem(tr(
"Extent"), CLIPPING_EXTENT);
 
  283   m_ui->m_strategyTypeComboBox->addItem(tr(
"Dimension"), CLIPPING_DIMENSION);
 
void onEnvelopeAcquired(te::gm::Envelope env)
 
std::auto_ptr< Ui::ClippingWizardPageForm > m_ui
 
void getExtentClipping(te::gm::Envelope &env)
 
const double & getUpperRightX() const 
It returns a constant refernce to the x coordinate of the upper right corner. 
 
ClippingWizardPage(QWidget *parent=0)
 
double m_urx
Upper right corner x-coordinate. 
 
const double & getLowerLeftY() const 
It returns a constant refernce to the y coordinate of the lower left corner. 
 
An utility struct for representing 2D coordinates. 
 
const double & getUpperRightY() const 
It returns a constant refernce to the x coordinate of the upper right corner. 
 
void setList(std::list< te::map::AbstractLayerPtr > &layerList)
 
This file defines a class for a Clipping Wizard page. 
 
te::map::AbstractLayerPtr get()
 
Q_DECLARE_METATYPE(te::map::AbstractLayerPtr)
 
double m_llx
Lower left corner x-coordinate. 
 
An Envelope defines a 2D rectangular region. 
 
double m_lly
Lower left corner y-coordinate. 
 
double m_ury
Upper right corner y-coordinate. 
 
const double & getLowerLeftX() const 
It returns a constant reference to the x coordinate of the lower left corner. 
 
void set(te::map::AbstractLayerPtr layer)
This method is used to set the selected layer for clipping operation. 
 
std::auto_ptr< te::qt::widgets::RasterNavigatorWidget > m_navigator
 
TEDATAACCESSEXPORT std::size_t GetFirstPropertyPos(const te::da::DataSet *dataset, int datatype)
 
bool isDimensionClipping()
 
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr
 
void onStrategyTypeComboBoxActivated(int index)
 
void onLayerComboBoxActivated(int index)
 
void getDimensionClipping(int &x, int &y, int &width, int &height)
 
bool isValid() const 
It tells if the rectangle is valid or not.