28 #include "../../../color/ColorBar.h" 29 #include "../../../common/STLUtils.h" 30 #include "../../../dataaccess/dataset/DataSet.h" 31 #include "../../../dataaccess/dataset/DataSetType.h" 32 #include "../../../dataaccess/utils/Utils.h" 33 #include "../../../datatype.h" 34 #include "../../../maptools/DataSetLayer.h" 35 #include "../../../maptools/GroupingAlgorithms.h" 36 #include "../../../maptools/RasterLayer.h" 37 #include "../../../fe/Literal.h" 38 #include "../../../fe/Utils.h" 39 #include "../../../raster.h" 40 #include "../../../raster/RasterSummary.h" 41 #include "../../../raster/RasterSummaryManager.h" 42 #include "../../../se/ColorMap.h" 43 #include "../../../se/Categorize.h" 44 #include "../../../se/Interpolate.h" 45 #include "../../../se/InterpolationPoint.h" 46 #include "../../../se/MapItem.h" 47 #include "../../../se/ParameterValue.h" 48 #include "../../../se/RasterSymbolizer.h" 49 #include "../../../se/Recode.h" 50 #include "../../../se/Rule.h" 51 #include "../../../se/Utils.h" 52 #include "../../widgets/colorbar/ColorBar.h" 53 #include "../../widgets/colorbar/ColorCatalogWidget.h" 54 #include "../../widgets/utils/ScopedCursor.h" 56 #include "ui_ColorMapWidgetForm.h" 59 #include <QColorDialog> 60 #include <QMessageBox> 63 #include <QFileDialog> 66 #include <boost/algorithm/string.hpp> 67 #include <boost/filesystem.hpp> 68 #include <boost/lexical_cast.hpp> 69 #include <boost/property_tree/json_parser.hpp> 76 te::qt::widgets::ColorMapWidget::ColorMapWidget(
QWidget* parent, Qt::WindowFlags f)
78 m_ui(new
Ui::ColorMapWidgetForm),
85 QGridLayout* l =
new QGridLayout(m_ui->m_colorBarWidget);
86 l->setContentsMargins(0,0,0,0);
88 l->addWidget(m_colorBar);
90 m_ui->m_minValueLineEdit->setValidator(
new QDoubleValidator(
this));
91 m_ui->m_maxValueLineEdit->setValidator(
new QDoubleValidator(
this));
96 connect(m_colorBar, SIGNAL(colorBarChanged()),
this, SLOT(onApplyPushButtonClicked()));
97 connect(m_ui->m_bandComboBox, SIGNAL(activated(QString)),
this, SLOT(onBandSelected(QString)));
98 connect(m_ui->m_applyPushButton, SIGNAL(clicked()),
this, SLOT(onApplyPushButtonClicked()));
99 connect(m_ui->m_tableWidget, SIGNAL(itemDoubleClicked(QTableWidgetItem*)),
this, SLOT(onTableWidgetItemDoubleClicked(QTableWidgetItem*)));
100 connect(m_ui->m_importPushButton, SIGNAL(clicked()),
this, SLOT(onImportPushButtonClicked()));
101 connect(m_ui->m_transformComboBox, SIGNAL(currentIndexChanged(
int)),
this, SLOT(onTransformComboBoxCurrentIndexChanged(
int)));
102 connect(m_ui->m_loadLegendPushButton, SIGNAL(clicked()),
this, SLOT(onLoadPushButtonClicked()));
103 connect(m_ui->m_saveLegendPushButton, SIGNAL(clicked()),
this, SLOT(onSavePushButtonClicked()));
121 m_ui->m_bandComboBox->clear();
123 for(
int i = 0; i < nBands; ++i)
128 m_ui->m_bandComboBox->addItem(strBand);
146 if (
m_ui->m_tableWidget->rowCount() < 1)
149 int index =
m_ui->m_transformComboBox->currentIndex();
151 int type =
m_ui->m_transformComboBox->itemData(index).toInt();
171 if(
m_ui->m_bandComboBox->count() != 0)
173 return m_ui->m_bandComboBox->currentText().toUtf8().data();
189 m_ui->m_transformComboBox->clear();
201 m_ui->m_tableWidget->setRowCount(0);
214 for(
int i = 0; i <
m_ui->m_transformComboBox->count(); ++i)
217 m_ui->m_transformComboBox->setCurrentIndex(i);
223 m_ui->m_slicesSpinBox->setValue(static_cast<int>(tV.size() - 2));
225 m_ui->m_tableWidget->setRowCount(static_cast<int>(tV.size() - 2));
235 for(
size_t i = 1; i < tV.size() - 1; ++i)
238 std::string lowerLimit;
239 std::string upperLimit;
247 else if(i == tV.size() - 1)
262 if(count != 0 && count != static_cast<int>(tV.size()) - 2)
264 double pos = (1. / (tV.size() - 2)) * count;
278 p.fillRect(0,0,24, 24, color);
279 p.setBrush(Qt::transparent);
281 p.drawRect(0, 0, 23, 23);
285 QTableWidgetItem* item =
new QTableWidgetItem(pix,
"");
286 item->setFlags(Qt::ItemIsEnabled);
287 m_ui->m_tableWidget->setItem(static_cast<int>(i - 1), 0, item);
290 std::string rangeLower = lowerLimit;
291 QTableWidgetItem* itemRangeLower =
new QTableWidgetItem();
292 itemRangeLower->setText(rangeLower.c_str());
293 itemRangeLower->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled|Qt::ItemIsEditable);
294 m_ui->m_tableWidget->setItem(static_cast<int>(i - 1), 1, itemRangeLower);
297 std::string rangeUpper = upperLimit;
298 QTableWidgetItem* itemRangeUpper =
new QTableWidgetItem();
299 itemRangeUpper->setText(rangeUpper.c_str());
300 itemRangeUpper->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled|Qt::ItemIsEditable);
302 m_ui->m_tableWidget->setItem(static_cast<int>(i - 1), 2, itemRangeUpper);
309 for(
int i = 0; i <
m_ui->m_transformComboBox->count(); ++i)
312 m_ui->m_transformComboBox->setCurrentIndex(i);
317 m_ui->m_slicesSpinBox->setValue(static_cast<int>(ip.size() - 1));
319 m_ui->m_tableWidget->setRowCount(static_cast<int>(ip.size() - 1));
330 for(
size_t i = 0; i < ip.size() - 1; ++i)
343 valStrBegin.setNum(ipItem->
getData());
344 valStrEnd.setNum(ipItem2->
getData());
347 valStr.append(valStrBegin);
348 valStr.append(
" - ");
349 valStr.append(valStrEnd);
353 if(count != 0 && count != static_cast<int>(ip.size()) - 1)
355 double pos = (1. / (ip.size() - 1)) * count;
369 p.fillRect(0,0,12, 24, color1);
370 p.fillRect(12,0,12, 24, color2);
371 p.setBrush(Qt::transparent);
373 p.drawRect(0, 0, 23, 23);
377 QTableWidgetItem* item =
new QTableWidgetItem(icon,
"");
379 item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
380 m_ui->m_tableWidget->setItem(static_cast<int>(i), 0, item);
383 QTableWidgetItem* itemRangeLower =
new QTableWidgetItem();
384 itemRangeLower->setText(valStrBegin);
385 itemRangeLower->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled|Qt::ItemIsEditable);
386 m_ui->m_tableWidget->setItem(static_cast<int>(i), 1, itemRangeLower);
389 QTableWidgetItem* itemRangeUpper =
new QTableWidgetItem();
390 itemRangeUpper->setText(valStrEnd);
391 itemRangeUpper->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled|Qt::ItemIsEditable);
392 m_ui->m_tableWidget->setItem(static_cast<int>(i), 2, itemRangeUpper);
399 for (
int i = 0; i <
m_ui->m_transformComboBox->count(); ++i)
402 m_ui->m_transformComboBox->setCurrentIndex(i);
410 std::vector<te::se::MapItem*> items = rec->
getMapItems();
412 m_ui->m_tableWidget->setRowCount(static_cast<int>(items.size()));
416 for (std::size_t i = 0; i < items.size(); ++i)
418 std::string title = items[i]->getTitle();
419 double data = items[i]->getData();
428 else if (count == static_cast<int>(items.size())-1)
432 double pos = (1. / (items.size() - 2)) * count;
447 p.fillRect(0, 0, 24, 24, color);
448 p.setBrush(Qt::transparent);
450 p.drawRect(0, 0, 23, 23);
454 QTableWidgetItem* item =
new QTableWidgetItem(pix,
"");
455 item->setFlags(Qt::ItemIsEnabled);
456 m_ui->m_tableWidget->setItem(static_cast<int>(i), 0, item);
459 QTableWidgetItem* itemData =
new QTableWidgetItem();
460 itemData->setText(QString::number(data));
461 itemData->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
462 m_ui->m_tableWidget->setItem(static_cast<int>(i), 1, itemData);
465 QTableWidgetItem* itemTitle =
new QTableWidgetItem();
466 itemTitle->setText(title.c_str());
467 itemTitle->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
468 m_ui->m_tableWidget->setItem(static_cast<int>(i), 2, itemTitle);
482 m_ui->m_tableWidget->resizeColumnsToContents();
483 #if (QT_VERSION >= 0x050000) 484 m_ui->m_tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
486 m_ui->m_tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
497 QColor cWhite(Qt::white);
498 std::string colorWhiteStr = cWhite.name().toUtf8().data();
503 for(
int i = 0; i <
m_ui->m_tableWidget->rowCount(); ++i)
505 QColor color = QColor::fromRgb(
m_ui->m_tableWidget->item(i, 0)->icon().pixmap(24, 24).toImage().pixel(1,1));
507 std::string rangeStr =
m_ui->m_tableWidget->item(i, 1)->text().toUtf8().data();
508 std::string colorStr = color.name().toUtf8().data();
513 if(i ==
m_ui->m_tableWidget->rowCount() - 1)
515 rangeStr =
m_ui->m_tableWidget->item(i, 2)->text().toUtf8().data();
541 for(
int i = 0; i <
m_ui->m_tableWidget->rowCount(); ++i)
543 QColor color = QColor::fromRgb(
m_ui->m_tableWidget->item(i, 0)->icon().pixmap(24, 24).toImage().pixel(1,1));
545 if(i ==
m_ui->m_tableWidget->rowCount() - 1)
548 QString rangeStr =
m_ui->m_tableWidget->item(i, 1)->text();
549 std::string colorStr = color.name().toUtf8().data();
553 ip->
setData(rangeStr.toDouble());
556 interpolate->
add(ip);
560 color = QColor::fromRgb(
m_ui->m_tableWidget->item(i, 0)->icon().pixmap(24, 24).toImage().pixel(22,1));
562 QString rangeStr =
m_ui->m_tableWidget->item(i, 2)->text();
563 std::string colorStr = color.name().toUtf8().data();
567 ip->
setData(rangeStr.toDouble());
570 interpolate->
add(ip);
576 QString rangeStr =
m_ui->m_tableWidget->item(i, 1)->text();
577 std::string colorStr = color.name().toUtf8().data();
581 ip->
setData(rangeStr.toDouble());
584 interpolate->
add(ip);
603 for (
int i = 0; i <
m_ui->m_tableWidget->rowCount(); ++i)
605 QColor color = QColor::fromRgb(
m_ui->m_tableWidget->item(i, 0)->icon().pixmap(24, 24).toImage().pixel(1, 1));
607 double data =
m_ui->m_tableWidget->item(i, 1)->text().toDouble();
608 std::string colorStr = color.name().toUtf8().data();
609 std::string title =
m_ui->m_tableWidget->item(i, 2)->text().toUtf8().data();
633 int sliceValue =
m_ui->m_slicesSpinBox->value();
635 std::vector<te::color::RGBAColor> colorVec;
637 int index =
m_ui->m_transformComboBox->currentIndex();
639 int transType =
m_ui->m_transformComboBox->itemData(index).toInt();
656 std::vector<te::se::Rule*> legVec;
658 std::vector<double> vec;
659 vec.push_back(
m_ui->m_minValueLineEdit->text().toDouble());
660 vec.push_back(
m_ui->m_maxValueLineEdit->text().toDouble());
664 int sliceType =
m_ui->m_typeComboBox->itemData(index).toInt();
672 std::vector<std::string> values =
getValues();
673 std::vector<std::string> valuesAux;
675 for (std::size_t i = 0; i < values.size(); ++i)
677 double val = boost::lexical_cast<
double>(values[i]);
679 if (val >=
m_ui->m_minValueLineEdit->text().toDouble() && val <=
m_ui->m_maxValueLineEdit->text().toDouble())
681 valuesAux.push_back(values[i]);
688 m_ui->m_tableWidget->setRowCount(static_cast<int>(legVec.size()));
690 for(std::size_t t = 0; t < legVec.size(); ++t)
695 QColor color(colorVec[t].getRed(), colorVec[t].getGreen(), colorVec[t].getBlue(), colorVec[t].getAlpha());
700 p.fillRect(0,0,24, 24, color);
701 p.setBrush(Qt::transparent);
703 p.drawRect(0, 0, 23, 23);
707 QTableWidgetItem* item =
new QTableWidgetItem(icon,
"");
708 item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
709 m_ui->m_tableWidget->setItem(static_cast<int>(t), 0, item);
713 QColor color(colorVec[t].getRed(), colorVec[t].getGreen(), colorVec[t].getBlue(), colorVec[t].getAlpha());
718 p.fillRect(0, 0, 24, 24, color);
719 p.setBrush(Qt::transparent);
721 p.drawRect(0, 0, 23, 23);
725 QTableWidgetItem* item =
new QTableWidgetItem(icon,
"");
726 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
727 m_ui->m_tableWidget->setItem(static_cast<int>(t), 0, item);
731 QColor color1(colorVec[t].getRed(), colorVec[t].getGreen(), colorVec[t].getBlue(), colorVec[t].getAlpha());
732 QColor color2(colorVec[t + 1].getRed(), colorVec[t + 1].getGreen(), colorVec[t + 1].getBlue(), colorVec[t + 1].getAlpha());
737 p.fillRect(0,0,12, 24, color1);
738 p.fillRect(12,0,12, 24, color2);
740 p.setBrush(Qt::transparent);
742 p.drawRect(0, 0, 23, 23);
746 QTableWidgetItem* item =
new QTableWidgetItem(icon,
"");
747 item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
748 m_ui->m_tableWidget->setItem(static_cast<int>(t), 0, item);
755 std::string title = *legVec[t]->getName();
759 QTableWidgetItem* itemValue =
new QTableWidgetItem();
760 itemValue->setText(value.c_str());
761 itemValue->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
762 m_ui->m_tableWidget->setItem(static_cast<int>(t), 1, itemValue);
764 QTableWidgetItem* itemTitle =
new QTableWidgetItem();
765 itemTitle->setText(title.c_str());
766 itemTitle->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
767 m_ui->m_tableWidget->setItem(static_cast<int>(t), 2, itemTitle);
771 std::string rangeStrLower;
772 std::string rangeStrUpper;
777 QTableWidgetItem* itemRangeLower =
new QTableWidgetItem();
778 itemRangeLower->setText(rangeStrLower.c_str());
779 itemRangeLower->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
780 m_ui->m_tableWidget->setItem(static_cast<int>(t), 1, itemRangeLower);
783 QTableWidgetItem* itemRangeUpper =
new QTableWidgetItem();
784 itemRangeUpper->setText(rangeStrUpper.c_str());
785 itemRangeUpper->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
786 m_ui->m_tableWidget->setItem(static_cast<int>(t), 2, itemRangeUpper);
790 m_ui->m_tableWidget->resizeColumnsToContents();
791 #if (QT_VERSION >= 0x050000) 792 m_ui->m_tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
794 m_ui->m_tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
809 const std::complex<double>* cmin = rsMin->at(value.toInt()).m_minVal;
810 const std::complex<double>* cmax = rsMax->at(value.toInt()).m_maxVal;
811 double min = cmin->real();
812 double max = cmax->real();
816 m_ui->m_minValueLineEdit->setText(strMin);
820 m_ui->m_maxValueLineEdit->setText(strMax);
825 int pos =
m_ui->m_transformComboBox->findText(
"Recode");
831 m_ui->m_transformComboBox->removeItem(pos);
847 int curCol =
m_ui->m_tableWidget->currentColumn();
849 int index =
m_ui->m_transformComboBox->currentIndex();
851 int type =
m_ui->m_transformComboBox->itemData(index).toInt();
857 QColor bgColor = QColor::fromRgb(item->icon().pixmap(24, 24).toImage().pixel(1,1));
859 QColor newBgColor = QColorDialog::getColor(bgColor,
m_ui->m_tableWidget);
861 if(newBgColor.isValid())
862 bgColor = newBgColor;
872 QMessageBox::information(
this, tr(
"Classification"),
873 tr(
"Set the colors for the min and max values of this range. Also necessary to change the colors equivalents at another level to maintain consistency."));
875 QColor color1 = QColor::fromRgb(item->icon().pixmap(24, 24).toImage().pixel(1,1));
877 QColor newBgColor = QColorDialog::getColor(color1,
m_ui->m_tableWidget);
879 if(newBgColor.isValid())
882 QColor color2 = QColor::fromRgb(item->icon().pixmap(24, 24).toImage().pixel(22,1));
884 newBgColor = QColorDialog::getColor(color2,
m_ui->m_tableWidget);
886 if(newBgColor.isValid())
892 p.fillRect(0,0,12, 24, color1);
893 p.fillRect(12,0,12, 24, color2);
908 if(layer->getType() ==
"DATASETLAYER")
917 else if(layer->getType() ==
"RASTERLAYER")
940 if(layer->getType() ==
"DATASETLAYER")
946 std::unique_ptr<te::da::DataSet>
ds = layer->getData();
951 return ds->getRaster(rpos).release();
955 else if(layer->getType() ==
"RASTERLAYER")
970 for(std::size_t i = 0; i < allLayers.size(); ++i)
972 std::unique_ptr<te::da::DataSetType>
dt(allLayers[i]->getSchema());
974 if(dt->hasRaster() &&
getLayerColorMap(allLayers[i]) && allLayers[i]->getId() != selectedLayer->getId())
976 m_ui->m_layersComboBox->addItem(allLayers[i]->getTitle().c_str(), QVariant::fromValue(allLayers[i]));
983 if(
m_ui->m_layersComboBox->currentText() ==
"")
985 QMessageBox::warning(
this, tr(
"Grouping"), tr(
"There are no other layers with Grouping!"));
989 QVariant varLayer =
m_ui->m_layersComboBox->itemData(
m_ui->m_layersComboBox->currentIndex(), Qt::UserRole);
1003 QString fileName = QFileDialog::getOpenFileName(
this, tr(
"Open..."),
1004 QString(), tr(
"LEG (*.leg *.LEG);;"),
nullptr, QFileDialog::DontConfirmOverwrite);
1006 if (fileName.isEmpty())
1009 m_ui->m_tableWidget->setRowCount(0);
1011 boost::property_tree::ptree pt;
1015 boost::property_tree::json_parser::read_json(fileName.toUtf8().data(), pt);
1019 boost::property_tree::ptree legend = pt.get_child(
"Legend");
1021 std::string tranformation = legend.get<std::string>(
"Transformation");
1022 std::string type = legend.get<std::string>(
"Type");
1023 std::string slices = legend.get<std::string>(
"Slices");
1024 std::string precision = legend.get<std::string>(
"Precision");
1026 std::string catalog = legend.get<std::string>(
"Catalog");
1027 std::string group = legend.get<std::string>(
"Group");
1028 std::string schema = legend.get<std::string>(
"Schema");
1030 m_ui->m_transformComboBox->setCurrentIndex(
m_ui->m_transformComboBox->findText(tranformation.c_str()));
1031 m_ui->m_typeComboBox->setCurrentIndex(
m_ui->m_typeComboBox->findText(type.c_str()));
1032 m_ui->m_slicesSpinBox->setValue(boost::lexical_cast<double>(slices));
1033 m_ui->m_precisionSpinBox->setValue(boost::lexical_cast<double>(precision));
1041 std::vector<std::vector<std::string> > items;
1043 for(boost::property_tree::ptree::value_type &v: legend.get_child(
"Items"))
1045 std::vector<std::string> item;
1046 item.push_back(v.second.get<std::string>(
"From"));
1047 item.push_back(v.second.get<std::string>(
"To"));
1048 item.push_back(v.second.get<std::string>(
"R"));
1049 item.push_back(v.second.get<std::string>(
"G"));
1050 item.push_back(v.second.get<std::string>(
"B"));
1052 items.push_back(item);
1055 m_ui->m_tableWidget->setRowCount(items.size());
1057 for (std::size_t i = 0; i < items.size(); ++i)
1059 m_ui->m_tableWidget->setItem(i, 1,
new QTableWidgetItem(items[i][0].c_str()));
1060 m_ui->m_tableWidget->setItem(i, 2,
new QTableWidgetItem(items[i][1].c_str()));
1063 color.setRgb(boost::lexical_cast<int>(items[i][3]), boost::lexical_cast<int>(items[i][4]), boost::lexical_cast<int>(items[i][5]));
1065 QPixmap pix(24, 24);
1068 p.fillRect(0, 0, 12, 24, color);
1069 p.fillRect(12, 0, 12, 24, color);
1070 p.setBrush(Qt::transparent);
1071 p.setPen(Qt::black);
1072 p.drawRect(0, 0, 23, 23);
1076 QTableWidgetItem* item =
new QTableWidgetItem(icon,
"");
1077 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
1078 m_ui->m_tableWidget->setItem(i, 0, item);
1082 catch(boost::property_tree::ptree_error& e)
1084 QMessageBox::warning(
this, tr(
"Grouping"), tr(
"Attribute not found."));
1088 catch(boost::property_tree::json_parser::json_parser_error& e)
1090 QMessageBox::warning(
this, tr(
"Grouping"), tr(
"Invalid file"));
1097 QString fileName = QFileDialog::getSaveFileName(
this, tr(
"Save as..."),
1098 QString(), tr(
"LEG (*.leg *.LEG);;"),
nullptr, QFileDialog::DontConfirmOverwrite);
1105 int rowCount =
m_ui->m_tableWidget->rowCount();
1113 boost::property_tree::ptree pt;
1114 boost::property_tree::ptree legend;
1116 std::string tranformation =
m_ui->m_transformComboBox->currentText().toUtf8().data();
1117 std::string type =
m_ui->m_typeComboBox->currentText().toUtf8().data();
1118 std::string slices =
m_ui->m_slicesSpinBox->text().toUtf8().data();
1119 std::string precision =
m_ui->m_precisionSpinBox->text().toUtf8().data();
1125 legend.add(
"Transformation", tranformation);
1126 legend.add(
"Type", type);
1127 legend.add(
"Slices", slices);
1128 legend.add(
"Precision", precision);
1129 legend.add(
"Catalog", catalog);
1130 legend.add(
"Group", group);
1131 legend.add(
"Schema", schema);
1133 boost::property_tree::ptree items;
1135 std::vector<te::color::RGBAColor> colorVec;
1137 int sliceValue =
m_ui->m_slicesSpinBox->value();
1139 int index =
m_ui->m_transformComboBox->currentIndex();
1141 int transType =
m_ui->m_transformComboBox->itemData(index).toInt();
1156 for (
int i = 0; i <
m_ui->m_tableWidget->rowCount(); ++i)
1158 std::string from =
m_ui->m_tableWidget->item(i, 1)->text().toUtf8().data();
1159 std::string to =
m_ui->m_tableWidget->item(i, 2)->text().toUtf8().data();
1161 boost::property_tree::ptree item;
1162 item.add(
"From", from);
1164 item.add(
"Red", colorVec.at(i).getRed());
1165 item.add(
"Green", colorVec.at(i).getGreen());
1166 item.add(
"Blue", colorVec.at(i).getBlue());
1168 items.add_child(
"Item", item);
1171 legend.add_child(
"Items", items);
1173 pt.add_child(
"Legend", legend);
1175 boost::property_tree::write_json(path, pt);
1180 int band =
m_ui->m_bandComboBox->currentText().toInt();
1185 std::vector<std::string> values;
1187 for (
unsigned int r = 0; r < rows; ++r)
1189 for (
unsigned int c = 0; c < cols; ++c)
1193 std::string strValue = boost::lexical_cast<std::string>(value);
1195 if (std::find(values.begin(), values.end(), strValue) == values.end())
1196 values.push_back(strValue);
1205 std::vector<std::string> values;
1207 int min =
m_ui->m_minValueLineEdit->text().toInt();
1208 int max =
m_ui->m_maxValueLineEdit->text().toInt();
1210 for (
int i = min; i <= max; ++i)
1212 values.push_back(boost::lexical_cast<std::string>(i));
1224 m_ui->m_minValueLineEdit->setEnabled(
true);
1225 m_ui->m_maxValueLineEdit->setEnabled(
true);
1226 m_ui->m_slicesSpinBox->setEnabled(
false);
1227 m_ui->m_precisionSpinBox->setEnabled(
false);
1229 m_ui->m_typeComboBox->setCurrentIndex(1);
1230 m_ui->m_typeComboBox->setEnabled(
false);
1235 m_ui->m_minValueLineEdit->setEnabled(
true);
1236 m_ui->m_maxValueLineEdit->setEnabled(
true);
1237 m_ui->m_slicesSpinBox->setEnabled(
true);
1238 m_ui->m_precisionSpinBox->setEnabled(
true);
1240 m_ui->m_typeComboBox->setCurrentIndex(0);
1241 m_ui->m_typeComboBox->setEnabled(
false);
1249 m_ui->m_tableWidget->setHorizontalHeaderItem(0,
new QTableWidgetItem(tr(
"Color")));
1250 m_ui->m_tableWidget->setHorizontalHeaderItem(1,
new QTableWidgetItem(tr(
"Value")));
1251 m_ui->m_tableWidget->setHorizontalHeaderItem(2,
new QTableWidgetItem(tr(
"Title")));
1255 m_ui->m_tableWidget->setHorizontalHeaderItem(0,
new QTableWidgetItem(tr(
"Color")));
1256 m_ui->m_tableWidget->setHorizontalHeaderItem(1,
new QTableWidgetItem(tr(
"From")));
1257 m_ui->m_tableWidget->setHorizontalHeaderItem(2,
new QTableWidgetItem(tr(
"To")));
ParameterValue * getValue() const
Palette indexes color interpretation.
The transformation of continuous values to distinct values (Categorize function). ...
Interpolate * getInterpolate() const
ColorInterp
Color model component use.
void setData(const double &d)
unsigned int getNumberOfColumns() const
Returns the raster number of columns.
void setMethodType(MethodType t)
TESEEXPORT RasterSymbolizer * GetRasterSymbolizer(Style *s)
Try to get raster symbolizer from a style.
TEMAPEXPORT void GroupingByUniqueValues(std::string attrName, std::vector< std::string > &inputValues, int dataType, std::vector< te::se::Rule * > &rules, int precision)
It groups the values using the unique value algorithm.
te::rst::Raster * getRaster() const
void setLookupValue(ParameterValue *v)
const std::vector< InterpolationPoint * > & getInterpolationPoints() const
void setCategorize(Categorize *c)
static te::dt::Date ds(2010, 01, 01)
void GroupingByEqualSteps(std::string attrName, iterator begin, iterator end, int nSteps, std::vector< te::se::Rule * > &rules, int precision=0)
It groups the values defined by a range of iterators using the equal steps algorithm.
The transformation of continuous values to a number of values (Interpolate function).
The "ParameterValueType" uses WFS-Filter expressions to give values for SE graphic parameters...
void setValue(ParameterValue *v)
const std::vector< ParameterValue * > & getThresholds() const
void setLookupValue(ParameterValue *v)
TEFEEXPORT void GetFilterStepValues(const te::fe::Filter *filter, std::string &valueMin, std::string &valueMax)
A layer with reference to a raster.
void setData(const double &d)
static RasterSummaryManager & getInstance()
It returns a reference to the singleton instance.
void add(InterpolationPoint *i)
An abstract class for raster data strucutures.
unsigned int getNumberOfRows() const
Returns the raster number of rows.
virtual std::size_t getNumberOfBands() const =0
Returns the number of bands (dimension of cells attribute values) in the raster.
virtual te::se::Style * getStyle() const
It returns the Style associated to the layer.
BandProperty * getProperty()
Returns the band property.
void setTitle(const std::string &title)
static te::dt::TimeDuration dt(20, 30, 50, 11)
void setLookupValue(ParameterValue *v)
boost::ptr_vector< BandSummary > RasterSummary
RasterSummary is just a typedef of a boost::ptr_vector.
Recode * getRecode() const
The RasterSymbolizer describes how to render raster/matrix-coverage data (e.g., satellite photos...
A raster band description.
virtual const Band * getBand(std::size_t i) const =0
Returns the raster i-th band.
ColorMapTransformationType
Allowed color transformations type.
Transformation of discrete values to other values.
void setRecode(Recode *i)
const std::vector< te::color::RGBAColor > & getSlices(const int &n)
It generates color bar.
virtual void getValue(unsigned int c, unsigned int r, double &value, std::size_t b=0) const
Returns the attribute value of a band of a cell.
std::vector< MapItem * > getMapItems() const
void addColor(const RGBAColor &color, const double &pos)
It adds a color in the color bar.
They are used to define a graph of points.
void setValue(ParameterValue *v)
A helper class for 32-bit RGBA (Red-Green-Blue-Alpha channel) color.
Categorize * getCategorize() const
It models the concept of color bar.
te::se::ColorMap * getColorMap() const
A layer with reference to a dataset.
TEDATAACCESSEXPORT std::size_t GetFirstPropertyPos(const te::da::DataSet *dataset, int datatype)
ColorInterp m_colorInterp
The color interpretation.
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr
void setThresholdsBelongTo(ThresholdsBelongToType t)
void setInterpolate(Interpolate *i)
void addThreshold(ParameterValue *v)
TESEEXPORT std::string GetString(const te::se::ParameterValue *param)
It gets the parameter value as a string.
A ColorMap defines either the colors of a pallette-type raster source or the mapping of numeric pixel...
void addValue(ParameterValue *v)
const std::vector< ParameterValue * > & getThresholdValues() const
void setFallbackValue(const std::string &v)
TEFEEXPORT void GetFilterUniqueValue(const te::fe::Filter *filter, std::string &value)