27 #include "../../../common/STLUtils.h"
28 #include "../../../dataaccess/dataset/DataSet.h"
29 #include "../../../dataaccess/utils/Utils.h"
30 #include "../../../geometry/Coord2D.h"
31 #include "../../../geometry/GTFactory.h"
32 #include "../../../maptools/MarkRendererManager.h"
33 #include "../../../geometry/Point.h"
34 #include "../../../raster/Grid.h"
35 #include "../../../raster/Raster.h"
36 #include "../../../se/Fill.h"
37 #include "../../../se/Mark.h"
38 #include "../../../se/Stroke.h"
39 #include "../../../se/Utils.h"
40 #include "../../../srs/Converter.h"
41 #include "../../widgets/canvas/Canvas.h"
42 #include "../../widgets/canvas/MapDisplay.h"
43 #include "../../widgets/srs/SRSManagerDialog.h"
44 #include "../../widgets/Utils.h"
47 #include "ui_RasterNavigatorWidgetForm.h"
48 #include "ui_TiePointLocatorWidgetForm.h"
51 #include <QGridLayout>
52 #include <QMessageBox>
58 #define PATTERN_SIZE 18
63 m_acqType(InvalidAcquisitionT),
91 m_ui(new Ui::TiePointLocatorWidgetForm),
92 m_tiePointHasFirstCoord(false),
93 m_tiePointIdCounter(0)
97 m_ui->m_x1LineEdit->setValidator(
new QDoubleValidator(
this));
98 m_ui->m_y1LineEdit->setValidator(
new QDoubleValidator(
this));
99 m_ui->m_x2LineEdit->setValidator(
new QDoubleValidator(
this));
100 m_ui->m_y2LineEdit->setValidator(
new QDoubleValidator(
this));
102 m_ui->m_resXLineEdit->setValidator(
new QDoubleValidator(
this));
103 m_ui->m_resYLineEdit->setValidator(
new QDoubleValidator(
this));
105 m_ui->m_selectAllToolButton->setIcon(QIcon::fromTheme(
"table-select"));
106 m_ui->m_unselectAllToolButton->setIcon(QIcon::fromTheme(
"table-unselect"));
107 m_ui->m_deleteSelectedToolButton->setIcon(QIcon::fromTheme(
"table-delete-select"));
108 m_ui->m_autoAcquireTiePointsToolButton->setIcon(QIcon::fromTheme(
"wand"));
109 m_ui->m_addToolButton->setIcon(QIcon::fromTheme(
"list-add"));
110 m_ui->m_refreshToolButton->setIcon(QIcon::fromTheme(
"view-refresh"));
111 m_ui->m_doneToolButton->setIcon(QIcon::fromTheme(
"check"));
166 delete m_markSelected;
169 delete m_markUnselected;
184 std::auto_ptr<te::da::DataSet> ds(m_refLayer->getData());
186 std::auto_ptr<te::rst::Raster> inputRst = ds->getRaster(rpos);
188 te::qt::widgets::TiePointData::TPContainerT::const_iterator itB = m_tiePoints.begin();
190 const te::qt::widgets::TiePointData::TPContainerT::const_iterator itE = m_tiePoints.end();
192 tiePoints.reserve( m_tiePoints.size() );
196 converter->setSourceSRID(m_refLayer->getSRID());
197 converter->setTargetSRID(m_ui->m_sridLineEdit->text().toInt());
203 tp.first = itB->second.m_tiePoint.second;
205 te::gm::Coord2D c = inputRst->getGrid()->gridToGeo(itB->second.m_tiePoint.first.x, itB->second.m_tiePoint.first.y);
207 converter->convert(c.
x, c.
y, c.
x, c.
y);
211 tiePoints.push_back(tp);
220 std::auto_ptr<te::da::DataSet> ds(m_refLayer->getData());
222 std::auto_ptr<te::rst::Raster> inputRst = ds->getRaster(rpos);
224 te::qt::widgets::TiePointData::TPContainerT::const_iterator itB = m_tiePoints.begin();
226 const te::qt::widgets::TiePointData::TPContainerT::const_iterator itE = m_tiePoints.end();
228 tiePoints.reserve( m_tiePoints.size() );
234 tiePoints.push_back(tp);
247 if(m_tiePointHasFirstCoord)
248 coordRef = m_currentTiePoint.first;
250 return m_tiePointHasFirstCoord;
257 m_refNavigator->set(layer);
260 std::auto_ptr<te::da::DataSet> ds = m_refLayer->getData();
265 std::auto_ptr<te::rst::Raster> inputRst = ds->getRaster(rpos);
269 m_ui->m_referenceBand1ComboBox->clear();
271 for(
unsigned band1Idx = 0; band1Idx < inputRst->getNumberOfBands(); ++band1Idx)
272 m_ui->m_referenceBand1ComboBox->addItem(QString::number(band1Idx));
276 strSRID.setNum(m_refLayer->getSRID());
277 m_ui->m_inputSRIDLineEdit->setText(strSRID);
280 strResX.setNum(inputRst->getGrid()->getResolutionX());
281 m_ui->m_inputResXLineEdit->setText(strResX);
284 strResY.setNum(inputRst->getGrid()->getResolutionY());
285 m_ui->m_inputResYLineEdit->setText(strResY);
294 m_adjNavigator->set(layer);
297 std::auto_ptr<te::da::DataSet> ds = m_adjLayer->getData();
302 std::auto_ptr<te::rst::Raster> inputRst = ds->getRaster(rpos);
306 m_ui->m_referenceBand2ComboBox->clear();
308 for(
unsigned band2Idx = 0; band2Idx < inputRst->getNumberOfBands(); ++band2Idx)
309 m_ui->m_referenceBand2ComboBox->addItem(QString::number(band2Idx));
312 strSRID.setNum(m_adjLayer->getSRID());
313 m_ui->m_sridLineEdit->setText(strSRID);
316 strResX.setNum(inputRst->getGrid()->getResolutionX());
317 m_ui->m_resXLineEdit->setText(strResX);
320 strResY.setNum(inputRst->getGrid()->getResolutionY());
321 m_ui->m_resYLineEdit->setText(strResY);
328 srid = m_ui->m_sridLineEdit->text().toInt();
333 resX = m_ui->m_resXLineEdit->text().toDouble();
334 resY = m_ui->m_resYLineEdit->text().toDouble();
339 assert(m_refLayer.get());
342 std::auto_ptr<te::da::DataSet> ds = m_refLayer->getData();
347 std::auto_ptr<te::rst::Raster> inputRst = ds->getRaster(rpos);
351 m_currentTiePoint.first = inputRst->getGrid()->geoToGrid(x, y);
353 m_tiePointHasFirstCoord =
true;
360 assert(m_adjLayer.get());
363 std::auto_ptr<te::da::DataSet> ds = m_adjLayer->getData();
368 std::auto_ptr<te::rst::Raster> inputRst = ds->getRaster(rpos);
372 if(m_tiePointHasFirstCoord)
374 m_currentTiePoint.second = inputRst->getGrid()->geoToGrid(x, y);
376 m_tiePointHasFirstCoord =
false;
383 ++m_tiePointIdCounter;
384 m_tiePoints[ m_tiePointIdCounter ] = tpD;
386 tiePointsTableUpdate();
394 m_ui->m_tiePointLabel->setPixmap(p);
399 m_ui->m_selectedTiePointLabel->setPixmap(p);
404 m_ui->m_refTiePointLabel->setPixmap(p);
409 m_ui->m_tiePointsTableWidget->clearSelection();
411 for(
int i = 0; i < m_ui->m_tiePointsTableWidget->rowCount(); ++i)
413 QTableWidgetItem* item = m_ui->m_tiePointsTableWidget->item(i, 0);
415 int curId = item->text().toInt();
418 if(curId >= initialId)
419 m_ui->m_tiePointsTableWidget->selectRow(i);
426 std::auto_ptr<te::da::DataSet> dsRef(m_refLayer->getData());
428 std::auto_ptr<te::rst::Raster> inputRstRef = dsRef->getRaster(rpos);
430 std::auto_ptr<te::da::DataSet> dsAdj(m_adjLayer->getData());
432 std::auto_ptr<te::rst::Raster> inputRstAdj = dsAdj->getRaster(rpos);
464 inputParams.
m_inRaster1Bands.push_back(m_ui->m_referenceBand1ComboBox->currentText().toUInt());
465 inputParams.
m_inRaster2Bands.push_back(m_ui->m_referenceBand2ComboBox->currentText().toUInt());
467 inputParams.
m_pixelSizeXRelation = inputRstRef->getGrid()->getResolutionX() / m_ui->m_resXLineEdit->text().toDouble();
468 inputParams.
m_pixelSizeYRelation = inputRstRef->getGrid()->getResolutionY() / m_ui->m_resYLineEdit->text().toDouble();
473 unsigned int manualTPNumber = 0;
474 te::qt::widgets::TiePointData::TPContainerT::const_iterator itB = m_tiePoints.begin();
475 const te::qt::widgets::TiePointData::TPContainerT::const_iterator itE = m_tiePoints.end();
476 double coordDiffX = 0;
477 double coordDiffY = 0;
483 coordDiffX = itB->second.m_tiePoint.first.x - itB->second.m_tiePoint.second.x;
484 coordDiffY = itB->second.m_tiePoint.first.y - itB->second.m_tiePoint.second.y;
501 QApplication::setOverrideCursor(Qt::WaitCursor);
509 if(algorithmInstance.
execute(outputParams))
511 const unsigned int tpsNmb = (
unsigned int)outputParams.
m_tiePoints.size();
518 int initialId = m_tiePointIdCounter + 1;
520 for(
unsigned int tpIdx = 0; tpIdx < tpsNmb; ++tpIdx)
522 ++m_tiePointIdCounter;
524 m_tiePoints[ m_tiePointIdCounter ] = auxTpData;
527 tiePointsTableUpdate();
529 createSelection(initialId);
533 QMessageBox::warning(
this, tr(
"Warning"), tr(
"None tie points was located."));
540 QApplication::restoreOverrideCursor();
542 QMessageBox::warning(
this, tr(
"Warning"), tr(
"Error locating tie points."));
545 QApplication::restoreOverrideCursor();
550 m_ui->m_tiePointsTableWidget->selectAll();
555 m_ui->m_tiePointsTableWidget->clearSelection();
560 const int rowCount = m_ui->m_tiePointsTableWidget->rowCount();
562 for(
int row = 0 ; row < rowCount ; ++row )
564 QTableWidgetItem* itemPtr = m_ui->m_tiePointsTableWidget->item(row, 0);
566 if(itemPtr->isSelected())
568 unsigned int tpID = itemPtr->text().toUInt();
570 te::qt::widgets::TiePointData::TPContainerT::iterator deletionIt = m_tiePoints.find(tpID);
572 assert(deletionIt != m_tiePoints.end());
574 m_tiePoints.erase(deletionIt);
578 if(m_tiePoints.empty())
580 m_tiePointIdCounter = 0;
583 m_tiePointsSelected.clear();
585 tiePointsTableUpdate();
590 if((!m_ui->m_x1LineEdit->text().isEmpty()) && (!m_ui->m_y1LineEdit->text().isEmpty()) &&
591 (!m_ui->m_x2LineEdit->text().isEmpty()) && (!m_ui->m_y2LineEdit->text().isEmpty()))
595 tpD.
m_tiePoint.first.x = m_ui->m_x1LineEdit->text().toDouble();
596 tpD.
m_tiePoint.first.y = m_ui->m_y1LineEdit->text().toDouble();
597 tpD.
m_tiePoint.second.x = m_ui->m_x2LineEdit->text().toDouble();
598 tpD.
m_tiePoint.second.y = m_ui->m_y2LineEdit->text().toDouble();
600 ++m_tiePointIdCounter;
601 m_tiePoints[m_tiePointIdCounter] = tpD;
603 tiePointsTableUpdate();
609 transformationInfoUpdate();
614 updateAdvancedOptions();
616 tiePointsTableUpdate();
621 emit doneAcquiredTiePoints();
636 refCoordPicked(x, y);
643 adjCoordPicked(x, y);
656 srsDialog.setWindowTitle(tr(
"Choose the SRS"));
658 if(srsDialog.exec() == QDialog::Accepted)
663 strSRID.setNum(srid.first);
664 m_ui->m_sridLineEdit->setText(strSRID);
673 te::qt::widgets::TiePointData::TPContainerT::const_iterator tPIt = m_tiePoints.begin();
674 const te::qt::widgets::TiePointData::TPContainerT::const_iterator tPItEnd = m_tiePoints.end();
676 while( tPIt != tPItEnd )
678 transParams.
m_tiePoints.push_back(tPIt->second.m_tiePoint);
682 std::string geoTransfName = m_ui->m_geomTransfNameComboBox->currentText().toStdString();
688 if(!transfPtr->initialize(transParams))
693 m_ui->m_tiePointsTableWidget->blockSignals(
true );
694 m_ui->m_tiePointsTableWidget->setSortingEnabled(
false );
696 m_ui->m_tiePointsTableWidget->setRowCount(0);
698 double currTPError = 0;
700 tPIt = m_tiePoints.begin();
702 while( tPIt != tPItEnd )
704 int newrow = m_ui->m_tiePointsTableWidget->rowCount();
705 m_ui->m_tiePointsTableWidget->insertRow(newrow);
708 currTPError = transfPtr.get() ? transfPtr->getDirectMappingError(currTP) : 0.0;
711 QTableWidgetItem* itemId =
new QTableWidgetItem(QString::number(tPIt->first));
712 itemId->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
713 m_ui->m_tiePointsTableWidget->setItem(newrow, 0, itemId);
716 QTableWidgetItem* itemError =
new QTableWidgetItem(QString::number(currTPError));
717 itemError->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
718 m_ui->m_tiePointsTableWidget->setItem(newrow, 1, itemError);
728 type = tr(
"Automatic");
731 QTableWidgetItem* itemType =
new QTableWidgetItem(type);
732 itemType->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
733 m_ui->m_tiePointsTableWidget->setItem(newrow, 2, itemType);
736 QTableWidgetItem* itemRefX =
new QTableWidgetItem(QString::number(currTP.first.x));
737 itemRefX->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
738 m_ui->m_tiePointsTableWidget->setItem(newrow, 3, itemRefX);
741 QTableWidgetItem* itemRefY =
new QTableWidgetItem(QString::number(currTP.first.y));
742 itemRefY->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
743 m_ui->m_tiePointsTableWidget->setItem(newrow, 4, itemRefY);
746 QTableWidgetItem* itemAdjX =
new QTableWidgetItem(QString::number(currTP.second.x));
747 itemAdjX->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
748 m_ui->m_tiePointsTableWidget->setItem(newrow, 5, itemAdjX);
751 QTableWidgetItem* itemAdjY =
new QTableWidgetItem(QString::number(currTP.second.y));
752 itemAdjY->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
753 m_ui->m_tiePointsTableWidget->setItem(newrow, 6, itemAdjY);
756 std::set<int>::iterator it = m_tiePointsSelected.find(tPIt->first);
758 if(it != m_tiePointsSelected.end())
760 m_ui->m_tiePointsTableWidget->selectRow(newrow);
766 m_ui->m_tiePointsTableWidget->setSortingEnabled(
true);
767 m_ui->m_tiePointsTableWidget->blockSignals(
false );
768 m_ui->m_tiePointsTableWidget->resizeColumnsToContents();
770 transformationInfoUpdate();
780 m_tiePointsSelected.clear();
782 const int rowCount = m_ui->m_tiePointsTableWidget->rowCount();
784 for(
int row = 0; row < rowCount; ++row)
786 QTableWidgetItem* itemPtr = m_ui->m_tiePointsTableWidget->item(row, 0);
788 int id = itemPtr->text().toUInt();
790 te::qt::widgets::TiePointData::TPContainerT::iterator it = m_tiePoints.find(
id);
792 assert(it != m_tiePoints.end());
796 if( itemPtr->isSelected() )
798 it->second.m_selected =
true;
800 transParamsSelectedTP.
m_tiePoints.push_back(tiePoint);
802 m_tiePointsSelected.insert(
id);
806 it->second.m_selected =
false;
808 transParamsUnselectedTP.
m_tiePoints.push_back(tiePoint);
815 std::string geoTransfName = m_ui->m_geomTransfNameComboBox->currentText().toStdString();
818 if(transfAllTPPtr.get())
819 if(!transfAllTPPtr->initialize(transParamsAllTP))
820 transfAllTPPtr.reset();
823 if(transfSelectedTPPtr.get())
824 if(!transfSelectedTPPtr->initialize(transParamsSelectedTP))
825 transfSelectedTPPtr.reset();
828 if(transfUnselectedTPPtr.get())
829 if(!transfUnselectedTPPtr->initialize(transParamsUnselectedTP))
830 transfUnselectedTPPtr.reset();
833 m_ui->m_tiePointsNumberLineEdit->setText(QString::number(m_tiePoints.size()));
835 if(transfAllTPPtr.get())
836 m_ui->m_transformationRMSEAllLineEdit->setText(QString::number(transfAllTPPtr->getDirectMapRMSE()));
838 m_ui->m_transformationRMSEAllLineEdit->setText(
"N/A");
840 if(transfSelectedTPPtr.get())
841 m_ui->m_transformationRMSESelectedLineEdit->setText(QString::number(transfSelectedTPPtr->getDirectMapRMSE()));
843 m_ui->m_transformationRMSESelectedLineEdit->setText(
"N/A");
845 if(transfUnselectedTPPtr.get())
846 m_ui->m_transformationRMSEunselectedLineEdit->setText(QString::number(transfUnselectedTPPtr->getDirectMapRMSE()));
848 m_ui->m_transformationRMSEunselectedLineEdit->setText(
"N/A");
851 emit tiePointsUpdated();
856 m_ui->m_enableGeometryFilterCheckBox->setChecked(m_inputParameters.m_enableGeometryFilter);
857 m_ui->m_enableMultiThreadCheckBox->setChecked(m_inputParameters.m_enableMultiThread);
859 switch( m_inputParameters.m_interesPointsLocationStrategy )
863 int idx = m_ui->m_interesPointsLocationStrategyComboBox->findText(
"Surf");
864 m_ui->m_interesPointsLocationStrategyComboBox->setCurrentIndex(idx);
869 int idx = m_ui->m_interesPointsLocationStrategyComboBox->findText(
"Moravec");
870 m_ui->m_interesPointsLocationStrategyComboBox->setCurrentIndex(idx);
877 while( gtItB != gtItE )
879 m_ui->m_geomTransfNameComboBox->addItem(QString(gtItB->first.c_str()));
883 int idx = m_ui->m_geomTransfNameComboBox->findText(m_inputParameters.m_geomTransfName.c_str());
884 m_ui->m_geomTransfNameComboBox->setCurrentIndex(idx);
886 m_ui->m_geometryFilterAssuranceLineEdit->setText(QString::number(m_inputParameters.m_geometryFilterAssurance));
888 m_ui->m_geomTransfMaxErrorLineEdit->setText(QString::number(m_inputParameters.m_geomTransfMaxError));
890 switch(m_inputParameters.m_interpMethod)
894 int idx = m_ui->m_interpMethodComboBox->findText(
"Bilinear");
895 m_ui->m_interpMethodComboBox->setCurrentIndex(idx);
900 int idx = m_ui->m_interpMethodComboBox->findText(
"Bicubic");
901 m_ui->m_interpMethodComboBox->setCurrentIndex(idx);
906 int idx = m_ui->m_interpMethodComboBox->findText(
"NearestNeighbor");
907 m_ui->m_interpMethodComboBox->setCurrentIndex(idx);
911 m_ui->m_maxTiePointsLineEdit->setText(QString::number(m_inputParameters.m_maxTiePoints));
913 m_ui->m_correlationWindowWidthLineEdit->setText(QString::number(m_inputParameters.m_moravecCorrelationWindowWidth));
915 m_ui->m_gaussianFilterIterationsLineEdit->setText(QString::number(m_inputParameters.m_moravecGaussianFilterIterations));
917 m_ui->m_minAbsCorrelationLineEdit->setText(QString::number(m_inputParameters.m_moravecMinAbsCorrelation));
919 m_ui->m_moravecWindowWidthLineEdit->setText(QString::number(m_inputParameters.m_moravecWindowWidth));
921 m_ui->m_maxNormEuclideanDistLineEdit->setText(QString::number(m_inputParameters.m_surfMaxNormEuclideanDist));
923 m_ui->m_octavesNumberLineEdit->setText(QString::number(m_inputParameters.m_surfOctavesNumber));
925 m_ui->m_scalesNumberLineEdit->setText(QString::number(m_inputParameters.m_surfScalesNumber));
930 m_inputParameters.m_enableGeometryFilter = m_ui->m_enableGeometryFilterCheckBox->isChecked();
932 m_inputParameters.m_enableMultiThread = m_ui->m_enableMultiThreadCheckBox->isChecked();
934 if(m_ui->m_interesPointsLocationStrategyComboBox->currentText() ==
"Surf")
939 m_inputParameters.m_geomTransfName = m_ui->m_geomTransfNameComboBox->currentText().toStdString();
941 m_inputParameters.m_geometryFilterAssurance = m_ui->m_geometryFilterAssuranceLineEdit->text().toDouble();
943 m_inputParameters.m_geomTransfMaxError = m_ui->m_geomTransfMaxErrorLineEdit->text().toDouble();
945 if(m_ui->m_interpMethodComboBox->currentText() ==
"Bilinear")
947 else if(m_ui->m_interpMethodComboBox->currentText() ==
"Bicubic")
952 m_inputParameters.m_maxTiePoints = m_ui->m_maxTiePointsLineEdit->text().toUInt();
954 m_inputParameters.m_moravecCorrelationWindowWidth = m_ui->m_correlationWindowWidthLineEdit->text().toUInt();
956 m_inputParameters.m_moravecGaussianFilterIterations = m_ui->m_gaussianFilterIterationsLineEdit->text().toUInt();
958 m_inputParameters.m_moravecMinAbsCorrelation = m_ui->m_minAbsCorrelationLineEdit->text().toDouble();
960 m_inputParameters.m_moravecWindowWidth = m_ui->m_moravecWindowWidthLineEdit->text().toUInt();
962 m_inputParameters.m_surfMaxNormEuclideanDist = m_ui->m_maxNormEuclideanDistLineEdit->text().toDouble();
964 m_inputParameters.m_surfOctavesNumber = m_ui->m_octavesNumberLineEdit->text().toUInt();
966 m_inputParameters.m_surfScalesNumber = m_ui->m_scalesNumberLineEdit->text().toUInt();
972 QGridLayout* layoutRef =
new QGridLayout(m_ui->m_refWidget);
975 m_refNavigator->setWindowTitle(tr(
"Reference"));
976 m_refNavigator->setMinimumSize(550, 400);
977 m_refNavigator->hideGeomTool(
true);
978 m_refNavigator->hideInfoTool(
true);
979 m_refNavigator->hideBoxTool(
true);
981 layoutRef->addWidget(m_refNavigator);
982 layoutRef->setContentsMargins(0,0,0,0);
984 connect(m_refNavigator, SIGNAL(mapDisplayExtentChanged()),
this, SLOT(onRefMapDisplayExtentChanged()));
985 connect(m_refNavigator, SIGNAL(pointPicked(
double,
double)),
this, SLOT(onRefPointPicked(
double,
double)));
988 QGridLayout* layoutAdj =
new QGridLayout(m_ui->m_adjWidget);
991 m_adjNavigator->setWindowTitle(tr(
"Adjust"));
992 m_adjNavigator->setMinimumSize(550, 400);
993 m_adjNavigator->hideGeomTool(
true);
994 m_adjNavigator->hideInfoTool(
true);
995 m_adjNavigator->hideBoxTool(
true);
997 layoutAdj->addWidget(m_adjNavigator);
998 layoutAdj->setContentsMargins(0,0,0,0);
1000 connect(m_adjNavigator, SIGNAL(mapDisplayExtentChanged()),
this, SLOT(onAdjMapDisplayExtentChanged()));
1001 connect(m_adjNavigator, SIGNAL(pointPicked(
double,
double)),
this, SLOT(onAdjPointPicked(
double,
double)));
1020 if(!m_refLayer.get())
1022 std::auto_ptr<te::da::DataSet> dsRef = m_refLayer->getData();
1026 std::auto_ptr<te::rst::Raster> rstRef = dsRef->getRaster(rpos);
1030 if(!m_adjLayer.get())
1032 std::auto_ptr<te::da::DataSet> dsAdj = m_adjLayer->getData();
1036 std::auto_ptr<te::rst::Raster> rstAdj = dsAdj->getRaster(rpos);
1043 te::qt::widgets::TiePointData::TPContainerT::const_iterator it = tpc.begin();
1045 while(it != tpc.end())
1069 rstRef->getGrid()->gridToGeo(refCoord.
x, refCoord.
y, refGeoCoord.
x, refGeoCoord.
y );
1072 refCanvasInstance.draw(&refPoint);
1075 QMatrix matrix = refCanvasInstance.getMatrix();
1076 QPointF pointCanvas = matrix.map(QPointF(refGeoCoord.
x, refGeoCoord.
y));
1077 pointCanvas.setX(pointCanvas.x() + 8);
1078 QPointF pointGeo = matrix.inverted().map(pointCanvas);
1079 refPoint.
setX(pointGeo.x());
1080 refPoint.
setY(pointGeo.y());
1081 refCanvasInstance.drawText(&refPoint, QString::number(
id).toStdString());
1086 rstAdj->getGrid()->gridToGeo(adjCoord.
x, adjCoord.
y, adjGeoCoord.
x, adjGeoCoord.
y );
1089 adjCanvasInstance.draw(&adjPoint);
1092 matrix = adjCanvasInstance.getMatrix();
1093 pointCanvas = matrix.map(QPointF(adjGeoCoord.
x, adjGeoCoord.
y));
1094 pointCanvas.setX(pointCanvas.x() + 8);
1095 pointGeo = matrix.inverted().map(pointCanvas);
1096 adjPoint.
setX(pointGeo.x());
1097 adjPoint.
setY(pointGeo.y());
1098 adjCanvasInstance.drawText(&adjPoint, QString::number(
id).toStdString());
1105 if(getReferenceTiePointCoord(refCoord))
1111 rstRef->getGrid()->gridToGeo(refCoord.
x, refCoord.
y, refGeoCoord.
x, refGeoCoord.
y );
1114 refCanvasInstance.draw(&refPoint);
1117 refDisplay->repaint();
1118 adjDisplay->repaint();
1125 QPixmap p = QPixmap::fromImage(*img);
std::vector< te::gm::GTParameters::TiePoint > m_tiePoints
The generated tie-pionts (te::gm::GTParameters::TiePoint::first are raster 1 line/column indexes...
std::vector< TiePoint > m_tiePoints
Tie points.
unsigned int getNumberOfColumns() const
Returns the raster number of columns.
double m_urx
Upper right corner x-coordinate.
static dictionary_type & getDictionary()
It returns a reference to the internal dictionary of concrete factories.
An utility struct for representing 2D coordinates.
bool execute(AlgorithmOutputParameters &outputParams)
Executes the algorithm using the supplied parameters.
std::pair< Coord2D, Coord2D > TiePoint
Tie point type definition.
void geoToGrid(const double &x, const double &y, double &col, double &row) const
Get the grid point associated to a spatial location.
Bicubic interpolation method.
std::map< TFACTORYKEY, TFACTORY *, TKEYCOMPARE >::const_iterator const_iterator
void Free(std::vector< T * > *v)
This function can be applied to a pointer to a vector of pointers.
double m_llx
Lower left corner x-coordinate.
static MarkRendererManager & getInstance()
It returns a reference to the singleton instance.
A point with x and y coordinate values.
An Envelope defines a 2D rectangular region.
unsigned int getNumberOfRows() const
Returns the raster number of rows.
virtual const te::gm::Envelope & getExtent() const
It returns the world extent showned by the MapDisplay.
A Fill specifies the pattern for filling an area geometry.
Grid * getGrid()
It returns the raster grid.
std::map< TFACTORYKEY, TFACTORY *, TKEYCOMPARE >::const_iterator end() const
It returns an iterator to the end of the container.
TESEEXPORT Mark * CreateMark(const std::string &wellKnownName, Stroke *stroke, Fill *fill)
Creates a mark.
static GeometricTransformation * make(const std::string &factoryKey)
It creates an object with the appropriated factory.
TiePointsLocator output parameters.
double m_lly
Lower left corner y-coordinate.
A Converter is responsible for the conversion of coordinates between different Coordinate Systems (CS...
TESEEXPORT Stroke * CreateStroke(const std::string &color, const std::string &width)
Creates a stroke.
void setX(const double &x)
It sets the Point x-coordinate value.
std::map< TFACTORYKEY, TFACTORY *, TKEYCOMPARE >::const_iterator begin() const
It returns an iterator to the first stored factory.
double m_ury
Upper right corner y-coordinate.
#define TE_TRANSPARENT
For an RGBA color this is the value of the alpha-channel for totally transparent. ...
A Stroke specifies the appearance of a linear geometry.
A helper class for 32-bit RGBA (Red-Green-Blue-Alpha channel) color.
Bilinear interpolation method.
2D Geometric transformation parameters.
TEDATAACCESSEXPORT std::size_t GetFirstPropertyPos(const te::da::DataSet *dataset, int datatype)
void setY(const double &y)
It sets the Point y-coordinate value.
Near neighborhood interpolation method.
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr
bool initialize(const AlgorithmInputParameters &inputParams)
Initialize the algorithm instance making it ready for execution.
TESEEXPORT Fill * CreateFill(const std::string &color, const std::string &opacity)
Creates a fill.