28 #include "../canvas/MapDisplay.h"
34 #include "ui_TimeSliderWidgetForm.h"
44 #include <QGraphicsEffect>
46 #include <QGraphicsView>
48 #include <QParallelAnimationGroup>
49 #include <QPropertyAnimation>
52 #include <QTextStream>
53 #include <QContextMenuEvent>
54 #include <QMessageBox>
55 #include <QInputDialog>
56 #include <QDateTimeEdit>
57 #include <QColorDialog>
63 m_erasePerfectly(false),
64 m_maxSliderValue(1000000000),
65 m_ui(new Ui::TimeSliderWidgetForm),
70 setFocusPolicy(Qt::StrongFocus);
71 setMouseTracking(
true);
80 m_ui->m_TemporalHorizontalSlider->setMinimum(0);
83 m_ui->m_durationSpinBox->setMinimum(100);
84 m_ui->m_durationSpinBox->setMaximum(100000000);
85 m_ui->m_durationSpinBox->setValue(10000);
86 m_ui->m_durationSpinBox->setSingleStep(10000);
88 m_ui->m_opacitySpinBox->setMinimum(0);
89 m_ui->m_opacitySpinBox->setMaximum(255);
90 m_ui->m_opacitySpinBox->setValue(255);
91 m_ui->m_opacitySpinBox->setSingleStep(5);
104 m_ui->m_settingsToolButton->setIcon(QIcon::fromTheme(
"preferences-system"));
105 m_ui->m_playToolButton->setIcon(QIcon::fromTheme(
"media-playback-start"));
106 m_ui->m_stopToolButton->setIcon(QIcon::fromTheme(
"media-playback-stop"));
121 connect(
m_ui->m_dateTimeEdit, SIGNAL(dateTimeChanged(
const QDateTime&) ),
this, SLOT(
onDateTimeEditChanged(
const QDateTime&)));
127 connect(
m_ui->m_TemporalHorizontalSlider, SIGNAL(sliderMoved (
int)),
this, SLOT(
onSliderMoved(
int)));
136 setAttribute(Qt::WA_DeleteOnClose,
true);
144 m_ui->m_forwardRadioButton->setCheckable(
true);
159 installEventFilter(
this);
160 m_ui->m_forwardColorPushButton->installEventFilter(
this);
161 m_ui->m_backwardColorPushButton->installEventFilter(
this);
162 m_ui->m_dateTimeEdit->installEventFilter(
this);
163 m_ui->m_initialAnimationDateTimeEdit->installEventFilter(
this);
164 m_ui->m_finalAnimationDateTimeEdit->installEventFilter(
this);
166 m_ui->m_dateTimeEdit->setDisplayFormat(
"dd/MMM/yyyy hh:mm:ss");
167 m_ui->m_initialAnimationDateTimeEdit->setDisplayFormat(
"dd/MMM/yyyy hh:mm:ss");
168 m_ui->m_finalAnimationDateTimeEdit->setDisplayFormat(
"dd/MMM/yyyy hh:mm:ss");
182 m_ui->m_durationSpinBox->setEnabled(
false);
183 m_ui->m_settingsToolButton->setEnabled(
false);
184 m_ui->m_playToolButton->setEnabled(
false);
185 m_ui->m_stopToolButton->setEnabled(
false);
186 m_ui->m_dateTimeEdit->setEnabled(
false);
191 m_ui->m_durationSpinBox->setEnabled(
true);
192 m_ui->m_settingsToolButton->setEnabled(
true);
193 m_ui->m_playToolButton->setEnabled(
true);
194 m_ui->m_stopToolButton->setEnabled(
true);
196 m_ui->m_dateTimeEdit->setEnabled(
true);
198 m_ui->m_dateTimeEdit->setEnabled(
false);
210 QList<QGraphicsItem*>::iterator it = list.begin();
222 m_parallelAnimation->stop();
223 m_parallelAnimation->clear();
224 delete m_parallelAnimation;
225 delete m_animationScene;
227 bool b = m_animationView->testAttribute(Qt::WA_DeleteOnClose);
228 m_animationView->close();
230 delete m_animationView;
235 const QMimeData* mdata = e->mimeData();
236 QList<QUrl> urls = mdata->urls();
239 QByteArray ba = mdata->data(
"application/x-terralib;value=\"DraggedItems\"");
243 std::vector<te::qt::widgets::AbstractTreeItem*>* ditems = (std::vector<AbstractTreeItem*>*)s.toULongLong();
244 std::vector<te::qt::widgets::AbstractTreeItem*>::iterator it;
245 for(it = ditems->begin(); it != ditems->end(); ++it)
248 std::string ltype = ati->
getLayer()->getType();
249 if(ltype ==
"DATASETLAYER")
255 std::map<std::string, std::string> ci = ds->getConnectionInfo();
256 std::map<std::string, std::string>::iterator it = ci.find(
"URI");
259 std::string uri(it->second);
260 if(uri.find(
"kml") != std::string::npos)
264 e->setDropAction(Qt::LinkAction);
266 e->setAccepted(
true);
274 e->setAccepted(
false);
278 QString path = urls.begin()->path();
279 size_t pos = path.indexOf(
"/");
283 QStringList nameFilter;
284 nameFilter.append(
"*.ctl");
285 QStringList files = dir.entryList(nameFilter, QDir::Files, QDir::Name);
286 if(files.empty() ==
false)
288 QString file(path +
"/" + files.first());
289 FILE* fp = fopen(file.toStdString().c_str(),
"r");
291 int c = fread(buf,
sizeof(
char), 2000, fp);
295 if(s.contains(
"undef", Qt::CaseInsensitive))
296 e->setAccepted(
true);
298 e->setAccepted(
false);
303 nameFilter.append(
"S1123*.jpg");
304 QStringList files = dir.entryList(nameFilter, QDir::Files, QDir::Name);
305 if(files.empty() ==
false && files.first().length() == 26)
306 e->setAccepted(
true);
310 nameFilter.append(
"S1118*.jpg");
311 QStringList files = dir.entryList(nameFilter, QDir::Files, QDir::Name);
312 if(files.empty() ==
false && files.first().length() == 26)
313 e->setAccepted(
true);
315 e->setAccepted(
false);
323 m_dropModifiers = e->keyboardModifiers();
324 const QMimeData* mdata = e->mimeData();
325 m_dropUrls = mdata->urls();
326 m_dropBA = mdata->data(
"application/x-terralib;value=\"DraggedItems\"");
327 QTimer::singleShot(10,
this, SLOT(dropAction()));
333 int state = m_parallelAnimation->state();
334 if(state == QAbstractAnimation::Running)
335 onPlayToolButtonnClicked();
337 if(m_dropModifiers == Qt::NoModifier)
339 onStopToolButtonnClicked();
341 m_ui->m_opacityComboBox->clear();
342 m_ui->m_trajectoryColorComboBox->clear();
343 m_ui->m_TemporalHorizontalSlider->setValue(0);
344 m_parallelAnimation->setCurrentTime(0);
345 m_ui->m_settingsToolButton->setEnabled(
false);
346 m_ui->m_playToolButton->setEnabled(
false);
347 m_ui->m_stopToolButton->setEnabled(
false);
348 m_ui->m_durationSpinBox->setEnabled(
false);
349 m_ui->m_dateTimeEdit->setEnabled(
false);
350 showPropertySection(
false);
352 QList<QGraphicsItem*> list = m_animationScene->items();
353 QList<QGraphicsItem*>::iterator it;
354 for(it = list.begin(); it != list.end(); ++it)
357 m_animationScene->removeItem(ai);
358 m_parallelAnimation->removeAnimation(ai->
m_animation);
365 if(m_dropUrls.empty())
367 if(m_dropBA.count() != 0)
370 std::vector<te::qt::widgets::AbstractTreeItem*>* ditems = (std::vector<AbstractTreeItem*>*)s.toULongLong();
371 std::vector<te::qt::widgets::AbstractTreeItem*>::iterator it;
372 for(it = ditems->begin(); it != ditems->end(); ++it)
375 std::string ltype = ati->
getLayer()->getType();
376 if(ltype ==
"DATASETLAYER")
382 std::map<std::string, std::string> ci = ds->getConnectionInfo();
383 std::map<std::string, std::string>::iterator it = ci.find(
"URI");
387 QString uri(it->second.c_str());
388 if(dsetname ==
"40: locations" || dsetname ==
"41: locations")
390 QPair<QString, QString> p(uri, dsetname);
393 QMessageBox::information(
this, dsetname +
" alredy exists",
"This item is already being animated!");
395 openTrajectory(uri, dsetname);
404 QString path = m_dropUrls.first().path();
407 QPair<QString, QString> p(path,
"");
410 QMessageBox::information(
this,
"animation alredy exists",
"This item is already being animated!");
412 addTemporalImages(path);
415 if(state == QAbstractAnimation::Running || m_dropModifiers == Qt::NoModifier)
416 onPlayToolButtonnClicked();
421 QList<QPair<QString, QString> >::iterator it;
422 for(it = m_itemList.begin(); it != m_itemList.end(); ++it)
427 m_itemList.append(item);
434 std::map<std::string, std::string> connInfo;
435 connInfo[
"URI"] = file.toStdString();
438 dsinfo.
setId(file.toStdString());
455 if(leao ==
"40: locations")
459 addTrajectory(leao,
"c:/lixo/helicopteroT2.png", tjDS40);
462 else if(leao ==
"41: locations")
466 addTrajectory(leao,
"c:/lixo/cachorro_correndo_31.gif", tjDS41);
475 m_animationScene->addItem(ti);
477 animation->setEasingCurve(QEasingCurve::Linear);
483 if(title ==
"40: locations")
495 size_t size = dset->
size();
507 std::auto_ptr<te::dt::DateTime> time = dset->
getTime();
510 if(tiraRepetido == *tinstant)
512 tiraRepetido = *tinstant;
516 std::auto_ptr<te::gm::Geometry> geom = dset->
getGeometry();
523 m_parallelAnimation->addAnimation(animation);
524 calculateSpatialExtent();
525 calculateTemporalExtent();
527 setDuration(m_duration);
528 setDirection(m_direction);
530 int state = m_parallelAnimation->state();
531 if(state == QAbstractAnimation::Running)
533 onPlayToolButtonnClicked();
534 m_parallelAnimation->setCurrentTime(m_currentTime);
536 if(m_animationScene->items().isEmpty() ==
false)
538 m_ui->m_durationSpinBox->setEnabled(
true);
539 m_ui->m_settingsToolButton->setEnabled(
true);
540 m_ui->m_playToolButton->setEnabled(
true);
541 m_ui->m_stopToolButton->setEnabled(
true);
542 if(m_parallelAnimation->state() == QAbstractAnimation::Paused)
543 m_ui->m_dateTimeEdit->setEnabled(
true);
545 m_ui->m_dateTimeEdit->setEnabled(
false);
549 m_ui->m_trajectoryColorComboBox->addItem(title);
550 int count = m_ui->m_trajectoryColorComboBox->count();
551 m_ui->m_trajectoryColorComboBox->setCurrentIndex(count-1);
552 onTrajectoryColorComboBoxActivated(count-1);
554 m_ui->m_opacityComboBox->addItem(title);
555 count = m_ui->m_opacityComboBox->count();
556 m_ui->m_opacityComboBox->setCurrentIndex(count-1);
557 onOpacityComboBoxActivated(count-1);
562 if(m_animationScene->items().isEmpty())
563 m_ui->m_durationSpinBox->setValue(m_duration);
565 int state = m_parallelAnimation->state();
566 m_currentTime = m_parallelAnimation->currentTime();
567 if(state == QAbstractAnimation::Running)
568 onPlayToolButtonnClicked();
573 QMessageBox::information(
this,
"Error",
"Load error");
574 m_itemList.pop_back();
578 calculateSpatialExtent();
579 calculateTemporalExtent();
581 setDuration(m_duration);
582 setDirection(m_direction);
583 if(state == QAbstractAnimation::Running)
585 onPlayToolButtonnClicked();
586 m_parallelAnimation->setCurrentTime(m_currentTime);
588 if(m_animationScene->items().isEmpty() ==
false)
590 m_ui->m_durationSpinBox->setEnabled(
true);
591 m_ui->m_settingsToolButton->setEnabled(
true);
592 m_ui->m_playToolButton->setEnabled(
true);
593 m_ui->m_stopToolButton->setEnabled(
true);
594 if(m_parallelAnimation->state() == QAbstractAnimation::Paused)
595 m_ui->m_dateTimeEdit->setEnabled(
true);
597 m_ui->m_dateTimeEdit->setEnabled(
false);
602 m_ui->m_opacityComboBox->addItem(dir.dirName());
603 int count = m_ui->m_opacityComboBox->count();
604 m_ui->m_opacityComboBox->setCurrentIndex(count-1);
605 onOpacityComboBoxActivated(count-1);
610 PixmapItem* pi = getTemporalImageCtlParameters(path);
614 m_animationScene->addItem(pi);
617 animation->setEasingCurve(QEasingCurve::Linear);
618 m_parallelAnimation->addAnimation(animation);
620 QString suffix =
"." + pi->
m_suffix;
621 QStringList nameFilter;
622 nameFilter.append(
"*" + suffix);
624 QStringList files = dir.entryList(nameFilter, QDir::Files, QDir::Name);
625 size_t count = files.count();
634 for(
size_t i = 0; i < count; ++i)
636 QString f = files[i];
648 for(
size_t i = 0; i < count; ++i)
651 pos -= QPointF(w, h);
653 pos += QPointF(w, h);
666 QList<QGraphicsItem*> list = m_animationScene->items();
667 QList<QGraphicsItem*>::iterator it;
669 for(it = list.begin(); it != list.end(); ++it)
677 m_spatialExtent.Union(e);
682 QRect rect(m_spatialExtent.m_llx, m_spatialExtent.m_lly, m_spatialExtent.getWidth(), m_spatialExtent.getHeight());
683 m_animationScene->setSceneRect(rect);
684 m_animationView->setSceneRect(rect);
691 QList<QGraphicsItem*> list = m_animationScene->items();
692 QList<QGraphicsItem*>::iterator it = list.begin();
701 while(it != list.end())
705 if(initial < t_initial)
716 m_temporalAnimationExtent = tp;
718 for(it = list.begin(); it != list.end(); ++it)
729 m_ui->m_dateTimeEdit->setMinimumDateTime(minimum);
730 m_ui->m_dateTimeEdit->setMaximumDateTime(maximum);
736 QVector<te::dt::TimePeriod>
times;
737 QVector<te::gm::Envelope> envelopes;
738 QList<QGraphicsItem*> list = m_animationScene->items();
739 QList<QGraphicsItem*>::iterator it;
740 for(it = list.begin(); it != list.end(); ++it)
747 if(m_parallelAnimation->state() == QAbstractAnimation::Stopped)
748 m_parallelAnimation->clear();
751 int cur = m_parallelAnimation->currentTime();
752 m_parallelAnimation->stop();
753 m_parallelAnimation->clear();
754 m_parallelAnimation->setCurrentTime(cur);
757 for(it = list.begin(), i = 0 ; it != list.end(); ++it, ++i)
765 m_parallelAnimation->addAnimation(a);
774 boost::posix_time::ptime iTime = m_temporalAnimationExtent.getInitialTimeInstant().getTimeInstant();
775 boost::posix_time::ptime fTime = m_temporalAnimationExtent.getFinalTimeInstant().getTimeInstant();
776 boost::posix_time::time_duration diff = fTime - iTime;
777 double totalSeconds = diff.total_seconds();
779 diff = pTime - iTime;
780 double seconds = diff.total_seconds();
782 double t = seconds / totalSeconds;
790 double t = m_parallelAnimation->currentTime();
791 double trel = t / (double)m_duration;
794 boost::posix_time::ptime iTime = m_temporalAnimationExtent.getInitialTimeInstant().
getTimeInstant();
795 boost::posix_time::ptime fTime = m_temporalAnimationExtent.getFinalTimeInstant().getTimeInstant();
796 boost::posix_time::time_duration diff = fTime - iTime;
797 double totalSeconds = diff.total_seconds();
799 int secs = qRound(totalSeconds * trel);
800 boost::posix_time::time_duration td = boost::posix_time::seconds(secs);
801 boost::posix_time::ptime time = iTime + td;
812 if(m_ui->m_dateTimeEdit->isEnabled() ==
false)
813 t = getTimeInstant();
816 QDateTime d = m_ui->m_dateTimeEdit->dateTime();
821 QList<QGraphicsItem*> list = m_animationScene->items();
822 QList<QGraphicsItem*>::iterator it;
824 if(m_animationScene->m_numberOfPixmaps)
827 for(it = list.begin(); it != list.end(); ++it)
830 if(ai->pixmap().isNull())
835 if(t < tini || t > tfim)
840 drawPixmapItem(pi, drect, painter);
845 if(m_animationScene->m_numberOfTrajectories)
848 QPixmap* pixt = ((
AnimationScene*)(m_animationScene))->m_trajectoryPixmap;
849 painter->drawPixmap(0, 0, *pixt);
852 for(it = list.begin(); it != list.end(); ++it)
855 if(ai->pixmap().isNull() ==
false)
860 if(t < tini || t > tfim)
865 QRect r = ai->pixmap().rect();
867 QRect dr = m_display->rect();
885 m_direction = direction;
886 m_parallelAnimation->setDirection(m_direction);
888 unsigned int count = m_parallelAnimation->animationCount();
889 for(
unsigned int i = 0; i < count; ++i)
891 QPropertyAnimation* a = (QPropertyAnimation*)m_parallelAnimation->animationAt(i);
900 m_animationScene->setDuration(duration);
905 m_animationScene->createNewPixmap();
910 m_animationScene->createNewPixmap();
911 m_animationScene->setMatrix();
912 m_animationScene->draw(m_currentTime);
917 m_animationScene->setAutomaticPan(title);
922 if(obj == m_ui->m_forwardColorPushButton)
924 if(e->type() == QEvent::Paint)
926 QPainter painter(m_ui->m_forwardColorPushButton);
927 QBrush brush(m_ui->m_forwardColorPushButton->palette().color(QPalette::Window));
928 painter.fillRect(m_ui->m_forwardColorPushButton->rect(), brush);
931 else if(e->type() == QEvent::MouseButtonPress)
933 QColor cor = QColorDialog::getColor(m_ui->m_forwardColorPushButton->palette().color(QPalette::Window),
this,
"Forward Color", QColorDialog::ShowAlphaChannel);
934 if(cor.isValid() ==
false)
936 else if(cor == m_ui->m_forwardColorPushButton->palette().color(QPalette::Window))
939 m_ui->m_forwardColorPushButton->setPalette(QPalette(cor));
941 QString titlecb = m_ui->m_trajectoryColorComboBox->currentText();
943 QList<QGraphicsItem*> list = m_animationScene->items();
944 QList<QGraphicsItem*>::iterator it;
947 for(it = list.begin(); it != list.end(); ++it)
960 else if(obj == m_ui->m_backwardColorPushButton)
962 if(e->type() == QEvent::Paint)
964 QPainter painter(m_ui->m_backwardColorPushButton);
965 QBrush brush(m_ui->m_backwardColorPushButton->palette().color(QPalette::Window));
966 painter.fillRect(m_ui->m_backwardColorPushButton->rect(), brush);
969 else if(e->type() == QEvent::MouseButtonPress)
971 QColor cor = QColorDialog::getColor(m_ui->m_backwardColorPushButton->palette().color(QPalette::Window),
this,
"Forward Color", QColorDialog::ShowAlphaChannel);
972 if(cor.isValid() ==
false)
974 else if(cor == m_ui->m_backwardColorPushButton->palette().color(QPalette::Window))
977 m_ui->m_backwardColorPushButton->setPalette(QPalette(cor));
979 QString titlecb = m_ui->m_trajectoryColorComboBox->currentText();
981 QList<QGraphicsItem*> list = m_animationScene->items();
982 QList<QGraphicsItem*>::iterator it;
985 for(it = list.begin(); it != list.end(); ++it)
999 if(e->type() == QEvent::Close)
1004 onStopToolButtonnClicked();
1005 m_display->update();
1011 else if(obj == m_animationView)
1017 else if(e->type() == QEvent::Show)
1022 else if(e->type() == QEvent::Enter)
1026 if(graphicsEffect())
1027 graphicsEffect()->setEnabled(
false);
1031 else if(e->type() == QEvent::Leave)
1035 if(graphicsEffect())
1036 graphicsEffect()->setEnabled(
true);
1040 else if(e->type() == QEvent::MouseButtonRelease)
1042 if(obj == m_ui->m_dateTimeEdit)
1044 QDateTime d = m_ui->m_dateTimeEdit->dateTime();
1045 if(d == m_oldQDateTime)
1047 d = fixDateTimeEdit(m_ui->m_dateTimeEdit, d);
1048 m_ui->m_dateTimeEdit->setDateTime(d);
1053 else if(obj == m_ui->m_initialAnimationDateTimeEdit)
1055 QDateTime d = m_ui->m_initialAnimationDateTimeEdit->dateTime();
1056 if(d == m_oldIQDateTime)
1058 d = fixDateTimeEdit(m_ui->m_initialAnimationDateTimeEdit, d);
1059 m_ui->m_initialAnimationDateTimeEdit->setDateTime(d);
1061 m_oldIQDateTime = d;
1064 else if(obj == m_ui->m_finalAnimationDateTimeEdit)
1066 QDateTime d = m_ui->m_finalAnimationDateTimeEdit->dateTime();
1067 if(d == m_oldFQDateTime)
1069 d = fixDateTimeEdit(m_ui->m_finalAnimationDateTimeEdit, d);
1070 m_ui->m_finalAnimationDateTimeEdit->setDateTime(d);
1072 m_oldFQDateTime = d;
1077 return QWidget::eventFilter(obj, e);
1082 if(m_ui->m_propertyWidget->isHidden())
1084 showPropertySection(
true);
1088 showPropertySection(
false);
1093 int state = m_parallelAnimation->state();
1094 if(state == QAbstractAnimation::Running)
1096 m_ui->m_playToolButton->setIcon(QIcon::fromTheme(
"media-playback-start"));
1097 m_parallelAnimation->pause();
1098 m_ui->m_dateTimeEdit->setEnabled(
true);
1102 m_ui->m_playToolButton->setIcon(QIcon::fromTheme(
"media-playback-pause"));
1103 if(m_parallelAnimation->direction() == QAbstractAnimation::Forward)
1105 if(m_ui->m_TemporalHorizontalSlider->value() == m_maxSliderValue)
1107 m_parallelAnimation->setCurrentTime(0);
1108 m_ui->m_TemporalHorizontalSlider->setValue(0);
1113 if(m_ui->m_TemporalHorizontalSlider->value() == 0)
1115 m_parallelAnimation->setCurrentTime(m_duration);
1116 m_ui->m_TemporalHorizontalSlider->setValue(m_maxSliderValue);
1119 m_ui->m_dateTimeEdit->setEnabled(
false);
1126 int state = m_parallelAnimation->state();
1127 m_parallelAnimation->stop();
1128 m_ui->m_dateTimeEdit->setEnabled(
false);
1129 m_ui->m_playToolButton->setIcon(QIcon::fromTheme(
"media-playback-start"));
1136 m_comingBack =
false;
1140 if(m_finished ==
false)
1142 if(m_parallelAnimation->direction() == QAbstractAnimation::Forward)
1144 m_ui->m_TemporalHorizontalSlider->setValue(0);
1145 m_parallelAnimation->setCurrentTime(0);
1149 m_ui->m_TemporalHorizontalSlider->setValue(m_maxSliderValue);
1150 m_parallelAnimation->setCurrentTime(m_parallelAnimation->duration());
1153 m_display->update();
1160 int state = m_parallelAnimation->state();
1161 if(state == QAbstractAnimation::Running)
1163 m_parallelAnimation->pause();
1166 m_display->update();
1167 m_parallelAnimation->resume();
1173 m_display->update();
1179 int state = m_parallelAnimation->state();
1180 if(state == QAbstractAnimation::Running)
1183 calculateSpatialExtent();
1186 m_display->update();
1187 m_parallelAnimation->start();
1192 calculateSpatialExtent();
1195 m_display->update();
1201 int state = m_parallelAnimation->state();
1202 if(state == QAbstractAnimation::Stopped)
1205 m_parallelAnimation->start();
1207 else if(state == QAbstractAnimation::Paused)
1209 m_parallelAnimation->resume();
1215 int oldCurTime = m_parallelAnimation->currentTime();
1217 if(m_parallelAnimation->state() == QAbstractAnimation::Stopped)
1219 onStopToolButtonnClicked();
1223 double v = (double)value / (
double)m_maxSliderValue;
1225 int curTime = qRound(v * (
double)m_parallelAnimation->duration());
1229 else if(curTime == m_parallelAnimation->duration())
1230 curTime = m_parallelAnimation->duration() - 1;
1233 if(m_goAndBack ==
true)
1235 if(m_comingBack ==
false && m_direction == QAbstractAnimation::Forward && curTime < oldCurTime)
1237 else if(m_comingBack ==
false && m_direction == QAbstractAnimation::Backward && curTime > oldCurTime)
1239 else if(m_comingBack ==
true && m_direction == QAbstractAnimation::Forward && curTime < oldCurTime)
1241 else if(m_comingBack ==
true && m_direction == QAbstractAnimation::Backward && curTime > oldCurTime)
1246 if(m_direction == QAbstractAnimation::Forward && curTime < oldCurTime)
1248 else if(m_direction == QAbstractAnimation::Backward && curTime > oldCurTime)
1252 m_parallelAnimation->setCurrentTime(curTime);
1254 this->erase(curTime);
1256 m_currentTime = curTime;
1257 if(m_parallelAnimation->state() == QAbstractAnimation::Paused)
1258 m_display->update();
1263 QDateTime qdatetime(qdate, qtime);
1264 m_ui->m_dateTimeEdit->setDateTime(qdatetime);
1269 QAbstractAnimation::Direction direction = m_parallelAnimation->direction();
1270 if(direction == QAbstractAnimation::Forward)
1271 direction = QAbstractAnimation::Backward;
1273 direction = QAbstractAnimation::Forward;
1274 setDirection(direction);
1283 m_comingBack = !m_comingBack;
1297 if(m_comingBack ==
false)
1298 onStopToolButtonnClicked();
1308 onStopToolButtonnClicked();
1314 m_currentTime = m_parallelAnimation->currentTime();
1315 int v = qRound((
double)m_maxSliderValue * (
double)m_currentTime/(
double)m_duration);
1317 m_ui->m_TemporalHorizontalSlider->setValue(v);
1319 updateTimeTextEdit();
1324 if(m_ui->m_dateTimeEdit->isEnabled() ==
false && m_animationScene->items().isEmpty() ==
false)
1329 QDateTime qdatetime(qdate, qtime);
1330 m_ui->m_dateTimeEdit->setDateTime(qdatetime);
1336 emit deleteTimeSliderWidget();
1341 QString title = QInputDialog::getText(
this,
"Add Item",
"title");
1349 if(title ==
"eta5km"|| title ==
"hidro")
1350 path =
"C:/lixo/FORECAST/" + title;
1352 path =
"C:/lixo/TemporalImages/" + title;
1354 addTemporalImages(path);
1564 QList<QGraphicsItem*> list = m_animationScene->items();
1565 QList<QGraphicsItem*>::iterator it;
1567 for(it = list.begin(); it != list.end(); ++it)
1571 int r = QMessageBox::question(
this,
"Remove Item",
"Remove " + title, QMessageBox::Ok, QMessageBox::No);
1572 if(r == QMessageBox::Ok)
1574 removeComboItem(ai);
1575 if(list.count() == 1)
1577 onStopToolButtonnClicked();
1578 m_animationScene->removeItem(ai);
1579 m_parallelAnimation->removeAnimation(ai->
m_animation);
1582 m_ui->m_TemporalHorizontalSlider->setValue(0);
1583 m_parallelAnimation->setCurrentTime(0);
1584 m_ui->m_settingsToolButton->setEnabled(
false);
1585 m_ui->m_playToolButton->setEnabled(
false);
1586 m_ui->m_stopToolButton->setEnabled(
false);
1587 m_ui->m_durationSpinBox->setEnabled(
false);
1588 m_ui->m_dateTimeEdit->setEnabled(
false);
1589 showPropertySection(
false);
1590 m_display->update();
1595 bool running =
false;
1596 int state = m_parallelAnimation->state();
1597 if(state == QAbstractAnimation::Running)
1600 onPlayToolButtonnClicked();
1603 m_currentTime = m_parallelAnimation->currentTime();
1604 m_animationScene->removeItem(ai);
1605 m_parallelAnimation->removeAnimation(ai->
m_animation);
1606 if(ai->pixmap().isNull() ==
false)
1608 if(m_animationScene->m_numberOfTrajectories)
1610 m_animationScene->m_trajectoryPixmap->fill(Qt::transparent);
1617 calculateSpatialExtent();
1618 calculateTemporalExtent();
1620 setDuration(m_duration);
1621 setDirection(m_direction);
1625 onPlayToolButtonnClicked();
1626 m_parallelAnimation->setCurrentTime(m_currentTime);
1637 int state = m_parallelAnimation->state();
1638 if(state == QAbstractAnimation::Running)
1639 onPlayToolButtonnClicked();
1641 QList<QGraphicsItem*> list = m_animationScene->items();
1642 int i = list.indexOf(item);
1646 QList<QGraphicsItem*>::iterator it = list.begin();
1647 while(it != list.end())
1650 m_animationScene->removeItem(ai);
1653 while(list.isEmpty() ==
false)
1656 m_animationScene->addItem(ai);
1659 onPlayToolButtonnClicked();
1664 int state = m_parallelAnimation->state();
1665 if(state == QAbstractAnimation::Running)
1666 onPlayToolButtonnClicked();
1668 QList<QGraphicsItem*> list = m_animationScene->items();
1669 int i = list.indexOf(item);
1673 QList<QGraphicsItem*>::iterator it = list.begin();
1674 while(it != list.end())
1677 m_animationScene->removeItem(ai);
1680 while(list.isEmpty() ==
false)
1683 m_animationScene->addItem(ai);
1686 onPlayToolButtonnClicked();
1691 QList<QGraphicsItem*> list = m_animationScene->items();
1692 QList<QGraphicsItem*>::iterator it;
1694 for(it = list.begin(); it != list.end(); ++it)
1698 int r = QMessageBox::question(
this,
"Put To Front",
"Animation Item: " + title, QMessageBox::Ok, QMessageBox::No);
1699 if(r == QMessageBox::Ok)
1709 QList<QGraphicsItem*> list = m_animationScene->items();
1710 QList<QGraphicsItem*>::iterator it;
1712 for(it = list.begin(); it != list.end(); ++it)
1716 int r = QMessageBox::question(
this,
"Put To Back",
"Animation Item: " + title, QMessageBox::Ok, QMessageBox::No);
1717 if(r == QMessageBox::Ok)
1727 QList<QGraphicsItem*> list = m_animationScene->items();
1728 QList<QGraphicsItem*>::iterator it;
1729 for(it = list.begin(); it != list.end(); ++it)
1732 if(ai->pixmap().isNull() ==
false)
1736 if(m_erasePerfectly)
1738 m_parallelAnimation->setCurrentTime(curTime);
1742 m_parallelAnimation->setCurrentTime(curTime);
1744 m_currentTime = curTime;
1749 if(val == m_duration)
1752 m_currentTime = m_parallelAnimation->currentTime();
1753 double f = double(m_currentTime) / (double)m_duration;
1755 int step = m_ui->m_durationSpinBox->singleStep();
1760 if(v == 0 || v == m_duration + step || v == m_duration - step)
1766 else if(v > step*10)
1769 v = m_duration + step;
1772 else if(step == 1000)
1777 v = m_duration - step;
1779 else if(v > step*10)
1782 v = m_duration + step;
1785 else if(step == 10000)
1790 v = m_duration - step;
1792 else if(v > step*10)
1795 v = m_duration + step;
1798 else if(step == 100000)
1803 v = m_duration - step;
1805 else if(v > step*10)
1808 v = m_duration + step;
1811 else if(step == 1000000)
1816 v = m_duration - step;
1818 else if(v > step*10)
1821 v = m_duration + step;
1825 m_duration = (v / step) * step;
1826 m_ui->m_durationSpinBox->setValue(m_duration);
1827 m_ui->m_durationSpinBox->setSingleStep(step);
1832 bool running =
false;
1833 if(m_parallelAnimation->state() == QAbstractAnimation::Running)
1836 onPlayToolButtonnClicked();
1839 m_currentTime = qRound(f * (
double)m_duration);
1840 m_animationScene->m_trajectoryPixmap->fill(Qt::transparent);
1841 setDuration(m_duration);
1842 m_parallelAnimation->setCurrentTime(m_currentTime);
1845 onPlayToolButtonnClicked();
1850 if(m_ui->m_dateTimeEdit->isEnabled() ==
false)
1854 int oldCurTime = m_parallelAnimation->currentTime();
1857 unsigned long totalSecs = m_temporalAnimationExtent.getTimePeriod().length().total_seconds();
1859 te::dt::Date date(t.date().year(), t.date().month(), t.date().day());
1864 unsigned long secs = tp.
getTimePeriod().length().total_seconds();
1866 double v = (double)secs / (
double)totalSecs;
1867 int curTime = qRound(v * (
double)m_parallelAnimation->duration());
1871 else if(curTime == m_parallelAnimation->duration())
1872 curTime = m_parallelAnimation->duration() - 1;
1875 if(m_goAndBack ==
true)
1877 if(m_comingBack ==
false && m_direction == QAbstractAnimation::Forward && curTime < oldCurTime)
1879 else if(m_comingBack ==
false && m_direction == QAbstractAnimation::Backward && curTime > oldCurTime)
1881 else if(m_comingBack ==
true && m_direction == QAbstractAnimation::Forward && curTime < oldCurTime)
1883 else if(m_comingBack ==
true && m_direction == QAbstractAnimation::Backward && curTime > oldCurTime)
1888 if(m_direction == QAbstractAnimation::Forward && curTime < oldCurTime)
1890 else if(m_direction == QAbstractAnimation::Backward && curTime > oldCurTime)
1894 m_currentTime = curTime;
1895 m_parallelAnimation->setCurrentTime(curTime);
1897 this->erase(curTime);
1899 if(m_parallelAnimation->state() == QAbstractAnimation::Paused)
1900 m_display->update();
1906 QDateTimeEdit::Section section = dte->currentSection();
1907 if(section == QDateTimeEdit::SecondSection)
1909 int sec = t.time().second();
1915 else if(section == QDateTimeEdit::MinuteSection)
1917 int min = t.time().minute();
1923 else if(section == QDateTimeEdit::HourSection)
1925 int hour = t.time().hour();
1927 t = t.addSecs(-3600);
1929 t = t.addSecs(3600);
1931 else if(section == QDateTimeEdit::DaySection)
1933 int day = t.date().day();
1939 else if(section == QDateTimeEdit::MonthSection)
1941 int month = t.date().month();
1943 t = t.addMonths(-1);
1957 if(dwrect.intersects(rec))
1959 QRect r = pi->
m_matrix.mapRect(rec).toRect();
1963 painter->drawImage(r, *ima);
1966 QSize size = ima->size();
1967 int width = size.width();
1968 int height = size.height();
1970 if(ima->format() == QImage::Format_ARGB32)
1972 for(
int i = 0; i < height; ++i)
1974 unsigned char* u = ima->scanLine(i);
1975 for(
int j = 0; j < width; ++j)
1977 QRgb* v = (QRgb*)(u + (j << 2));
1979 *v = qRgba(qRed(*v), qGreen(*v), qBlue(*v) , pi->
m_opacity);
1982 painter->drawImage(r, *ima);
1986 QImage img(size, QImage::Format_ARGB32);
1987 for(
int i = 0; i < height; ++i)
1989 unsigned char* u = ima->scanLine(i);
1990 unsigned char* uu = img.scanLine(i);
1992 for(
int j = 0; j < width; ++j)
1994 QRgb* v = (QRgb*)(u + (j << 2));
1995 QRgb* uv = (QRgb*)(uu + (j << 2));
1997 *uv = qRgba(qRed(*v), qGreen(*v), qBlue(*v) , pi->
m_opacity);
2000 painter->drawImage(r, img);
2010 painter->drawPixmap(pos, t->pixmap());
2013 QSize size = t->pixmap().size();
2014 int width = size.width();
2015 int height = size.height();
2016 QImage ima = t->pixmap().toImage();
2018 if(ima.format() == QImage::Format_ARGB32)
2020 for(
int i = 0; i < height; ++i)
2022 unsigned char* u = ima.scanLine(i);
2023 for(
int j = 0; j < width; ++j)
2025 QRgb* v = (QRgb*)(u + (j << 2));
2027 *v = qRgba(255, 255, 255 , 0);
2029 *v = qRgba(qRed(*v), qGreen(*v), qBlue(*v) , t->
m_opacity);
2032 painter->drawImage(pos, ima);
2036 QImage img(size, QImage::Format_ARGB32);
2037 for(
int i = 0; i < height; ++i)
2039 unsigned char* u = ima.scanLine(i);
2040 unsigned char* uu = img.scanLine(i);
2042 for(
int j = 0; j < width; ++j)
2044 QRgb* v = (QRgb*)(u + (j << 2));
2045 QRgb* uv = (QRgb*)(uu + (j << 2));
2047 *uv = qRgba(255, 255, 255 , 0);
2049 *uv = qRgba(qRed(*v), qGreen(*v), qBlue(*v) , t->
m_opacity);
2052 painter->drawImage(pos, img);
2059 QString titlecb = m_ui->m_opacityComboBox->currentText();
2061 QList<QGraphicsItem*> list = m_animationScene->items();
2062 QList<QGraphicsItem*>::iterator it;
2064 for(it = list.begin(); it != list.end(); ++it)
2068 if(title.contains(titlecb))
2071 m_display->update();
2082 QDateTime qdatetimei(qdatei, qtimei);
2083 m_ui->m_initialAnimationDateTimeEdit->setDateTime(qdatetimei);
2088 QDateTime qdatetimef(qdatef, qtimef);
2089 m_ui->m_finalAnimationDateTimeEdit->setDateTime(qdatetimef);
2095 m_ui->m_initialAnimationDateTimeEdit->setMinimumDateTime(minimum);
2101 m_ui->m_finalAnimationDateTimeEdit->setMaximumDateTime(maximum);
2103 if(m_direction == QAbstractAnimation::Forward)
2105 if(m_ui->m_forwardRadioButton->isChecked() ==
false)
2106 m_ui->m_forwardRadioButton->toggle();
2110 m_ui->m_loopCheckBox->setChecked(
true);
2112 m_ui->m_goAndBackCheckBox->setChecked(
true);
2188 QDateTime t = m_ui->m_initialAnimationDateTimeEdit->dateTime();
2189 te::dt::Date date(t.date().year(), t.date().month(), t.date().day());
2204 QDateTime t = m_ui->m_finalAnimationDateTimeEdit->dateTime();
2205 te::dt::Date date(t.date().year(), t.date().month(), t.date().day());
2268 QDateTime qdatetime(qdate, qtime);
2269 m_ui->m_initialAnimationDateTimeEdit->setDateTime(qdatetime);
2277 QDateTime qdatetime(qdate, qtime);
2278 m_ui->m_finalAnimationDateTimeEdit->setDateTime(qdatetime);
2283 if(b==
false && m_ui->m_propertyWidget->isHidden())
2285 if(b==
true && m_ui->m_propertyWidget->isHidden()==
false)
2288 int h = m_ui->m_propertyWidget->height();
2292 m_ui->m_propertyWidget->hide();
2293 resize(width(), height()-h);
2297 m_ui->m_propertyWidget->show();
2298 resize(width(), height()+h);
2307 QDateTime qdatetimei(qdatei, qtimei);
2308 QDateTime qdi = m_ui->m_initialAnimationDateTimeEdit->dateTime();
2309 if(qdatetimei != qdi)
2315 QDateTime qdatetimef(qdatef, qtimef);
2316 QDateTime qdf = m_ui->m_finalAnimationDateTimeEdit->dateTime();
2317 if(qdatetimef != qdf)
2320 if(m_ui->m_forwardRadioButton->isChecked() && m_direction != QAbstractAnimation::Forward)
2322 if(m_ui->m_forwardRadioButton->isChecked() ==
false && m_direction != QAbstractAnimation::Backward)
2324 if(m_ui->m_loopCheckBox->isChecked() != m_loop)
2326 if(m_ui->m_goAndBackCheckBox->isChecked() != m_goAndBack)
2334 if(m_direction == QAbstractAnimation::Forward)
2337 m_comingBack =
false;
2345 if(m_direction == QAbstractAnimation::Backward)
2348 m_comingBack =
false;
2402 if(m_goAndBack != b)
2407 m_comingBack =
false;
2418 if(ti > tf || ti == tf)
2420 QMessageBox::warning(
this,
"Time Extent Error",
"Initial time can not be larger than the end time!", QMessageBox::Ok);
2427 QDateTime qdatetimei(qdatei, qtimei);
2428 QDateTime qdi = m_ui->m_initialAnimationDateTimeEdit->dateTime();
2430 t = m_temporalAnimationExtent.getFinalTimeInstant();
2433 QDateTime qdatetimef(qdatef, qtimef);
2434 QDateTime qdf = m_ui->m_finalAnimationDateTimeEdit->dateTime();
2435 if(qdatetimei == qdi && qdatetimef == qdf)
2438 m_currentTime = m_parallelAnimation->currentTime();
2439 int state = m_parallelAnimation->state();
2440 if(state == QAbstractAnimation::Running)
2441 onPlayToolButtonnClicked();
2443 QDateTime dt = m_ui->m_dateTimeEdit->dateTime();
2453 m_ui->m_dateTimeEdit->setMinimumDateTime(minimum);
2454 m_ui->m_dateTimeEdit->setMaximumDateTime(maximum);
2457 calculateSpatialExtent();
2459 setDuration(m_duration);
2460 setDirection(m_direction);
2462 if(state == QAbstractAnimation::Running)
2464 onPlayToolButtonnClicked();
2465 m_parallelAnimation->setCurrentTime(m_currentTime);
2466 m_parallelAnimation->start();
2470 m_parallelAnimation->setCurrentTime(m_currentTime);
2471 m_parallelAnimation->start();
2472 if(state == QAbstractAnimation::Paused)
2473 m_parallelAnimation->pause();
2476 if(tp == m_temporalAnimationExtent)
2477 onDateTimeEditChanged(dt);
2482 QString titlecb = m_ui->m_trajectoryColorComboBox->currentText();
2484 QList<QGraphicsItem*> list = m_animationScene->items();
2485 QList<QGraphicsItem*>::iterator it;
2488 for(it = list.begin(); it != list.end(); ++it)
2492 if(title == titlecb)
2498 m_ui->m_forwardColorPushButton->setPalette(QPalette(ti->
m_forwardColor));
2499 m_ui->m_forwardColorPushButton->update();
2500 m_ui->m_backwardColorPushButton->setPalette(QPalette(ti->
m_backwardColor));
2501 m_ui->m_backwardColorPushButton->update();
2507 QString titlecb = m_ui->m_opacityComboBox->currentText();
2509 QList<QGraphicsItem*> list = m_animationScene->items();
2510 QList<QGraphicsItem*>::iterator it;
2512 for(it = list.begin(); it != list.end(); ++it)
2516 if(title.contains(titlecb))
2519 m_ui->m_opacitySpinBox->setValue(op);
2530 int index = m_ui->m_opacityComboBox->findText(title);
2531 m_ui->m_opacityComboBox->removeItem(index);
2532 onOpacityComboBoxActivated(m_ui->m_opacityComboBox->currentIndex());
2534 index = m_ui->m_trajectoryColorComboBox->findText(title);
2535 m_ui->m_trajectoryColorComboBox->removeItem(index);
2536 onTrajectoryColorComboBoxActivated(m_ui->m_trajectoryColorComboBox->currentIndex());
2541 QString file(fileName);
2542 int ind = file.indexOf(
"_");
2543 if(file.indexOf(
"_", ind+1) != -1)
2544 ind = file.indexOf(
"_", ind+1);
2545 file.remove(0, ind+1);
2546 QString ano(file), mes(file), dia(file), hour(file), min(file);
2547 ano.remove(4, ano.length()-4);
2549 mes.remove(2, mes.length()-2);
2551 dia.remove(2, dia.length()-2);
2553 hour.remove(2, hour.length()-2);
2555 min.remove(2, min.length()-2);
2557 te::dt::Date date(ano.toInt(), mes.toInt(), dia.toInt());
2564 if(m_animationScene->items().isEmpty())
2565 m_ui->m_durationSpinBox->setValue(m_duration);
2567 int state = m_parallelAnimation->state();
2568 m_currentTime = m_parallelAnimation->currentTime();
2569 if(state == QAbstractAnimation::Running)
2570 onPlayToolButtonnClicked();
2573 calculateSpatialExtent();
2574 calculateTemporalExtent();
2576 setDuration(m_duration);
2577 setDirection(m_direction);
2578 if(state == QAbstractAnimation::Running)
2580 onPlayToolButtonnClicked();
2581 m_parallelAnimation->setCurrentTime(m_currentTime);
2583 if(m_animationScene->items().isEmpty() ==
false)
2585 m_ui->m_durationSpinBox->setEnabled(
true);
2586 m_ui->m_settingsToolButton->setEnabled(
true);
2587 m_ui->m_playToolButton->setEnabled(
true);
2588 m_ui->m_stopToolButton->setEnabled(
true);
2589 if(m_parallelAnimation->state() == QAbstractAnimation::Paused)
2590 m_ui->m_dateTimeEdit->setEnabled(
true);
2592 m_ui->m_dateTimeEdit->setEnabled(
false);
2596 m_ui->m_opacityComboBox->addItem(
"eta5km");
2597 int count = m_ui->m_opacityComboBox->count();
2598 m_ui->m_opacityComboBox->setCurrentIndex(count-1);
2599 onOpacityComboBoxActivated(count-1);
2604 if(m_animationScene->items().isEmpty())
2605 m_ui->m_durationSpinBox->setValue(m_duration);
2607 int state = m_parallelAnimation->state();
2608 m_currentTime = m_parallelAnimation->currentTime();
2609 if(state == QAbstractAnimation::Running)
2610 onPlayToolButtonnClicked();
2613 calculateSpatialExtent();
2614 calculateTemporalExtent();
2616 setDuration(m_duration);
2617 setDirection(m_direction);
2618 if(state == QAbstractAnimation::Running)
2620 onPlayToolButtonnClicked();
2621 m_parallelAnimation->setCurrentTime(m_currentTime);
2623 if(m_animationScene->items().isEmpty() ==
false)
2625 m_ui->m_durationSpinBox->setEnabled(
true);
2626 m_ui->m_settingsToolButton->setEnabled(
true);
2627 m_ui->m_playToolButton->setEnabled(
true);
2628 m_ui->m_stopToolButton->setEnabled(
true);
2629 if(m_parallelAnimation->state() == QAbstractAnimation::Paused)
2630 m_ui->m_dateTimeEdit->setEnabled(
true);
2632 m_ui->m_dateTimeEdit->setEnabled(
false);
2636 m_ui->m_opacityComboBox->addItem(
"hidro");
2637 int count = m_ui->m_opacityComboBox->count();
2638 m_ui->m_opacityComboBox->setCurrentIndex(count-1);
2639 onOpacityComboBoxActivated(count-1);
2645 QString title = m_ui->m_trajectoryColorComboBox->currentText();
2646 setAutomaticPan(title);
2652 QString file(path +
"/racc.ctl");
2653 FILE* fp = fopen(file.toStdString().c_str(),
"r");
2657 fread(buf, 2000,
sizeof(
char), fp);
2659 QString ss(QString(buf).simplified());
2662 if(!(ss.contains(
"undef ", Qt::CaseInsensitive) && ss.contains(
"title", Qt::CaseInsensitive) &&
2663 ss.contains(
"xdef", Qt::CaseInsensitive) && ss.contains(
"ydef", Qt::CaseInsensitive) &&
2664 ss.contains(
"linear", Qt::CaseInsensitive) && ss.contains(
"zdef", Qt::CaseInsensitive)))
2675 size_t pos = ss.indexOf(
"UNDEF ", Qt::CaseInsensitive) + strlen(
"UNDEF ");
2677 pos = ss.indexOf(
"TITLE", Qt::CaseInsensitive);
2679 pi->
m_undef = atoi(s.toStdString().c_str());
2683 pos = ss.indexOf(
"XDEF ", Qt::CaseInsensitive) + strlen(
"XDEF ");
2685 pos = ss.indexOf(
" ");
2687 pi->
m_ncols = atoi(s.toStdString().c_str());
2690 pos = ss.indexOf(
"LINEAR ", Qt::CaseInsensitive) + strlen(
"LINEAR ");
2692 pos = ss.indexOf(
" ");
2694 double llx = atof(s.toStdString().c_str()) - 360.;
2696 pos = ss.indexOf(
"YDEF ", Qt::CaseInsensitive);
2698 double resX = atof(s.toStdString().c_str());
2702 pos = ss.indexOf(
"YDEF ", Qt::CaseInsensitive) + strlen(
"YDEF ");
2704 pos = ss.indexOf(
" ");
2706 pi->
m_nlines = atoi(s.toStdString().c_str());
2709 pos = ss.indexOf(
"LINEAR ", Qt::CaseInsensitive) + strlen(
"LINEAR ");
2711 pos = ss.indexOf(
" ");
2713 double lly = atof(s.toStdString().c_str());
2715 pos = ss.indexOf(
"ZDEF ", Qt::CaseInsensitive);
2717 double resY = atof(s.toStdString().c_str());
2720 double w = (double)pi->
m_ncols * resX;
2721 double h = (
double)pi->
m_nlines * resY;
2729 std::vector<std::pair<int, QColor> > tab;
2731 tab.push_back(std::pair<int, QColor>(i+=3, QColor(2, 1, 201, 255)));
2732 tab.push_back(std::pair<int, QColor>(i+=3, QColor(1, 71, 254, 255)));
2733 tab.push_back(std::pair<int, QColor>(i+=3, QColor(3, 148, 250, 255)));
2734 tab.push_back(std::pair<int, QColor>(i+=3, QColor(5, 200, 251, 255)));
2735 tab.push_back(std::pair<int, QColor>(i+=3, QColor(2, 254, 233, 255)));
2736 tab.push_back(std::pair<int, QColor>(i+=3, QColor(1, 254, 151, 255)));
2737 tab.push_back(std::pair<int, QColor>(i+=3, QColor(2, 254, 4, 255)));
2738 tab.push_back(std::pair<int, QColor>(i+=3, QColor(99, 254, 2, 255)));
2739 tab.push_back(std::pair<int, QColor>(i+=3, QColor(200, 255, 1, 255)));
2740 tab.push_back(std::pair<int, QColor>(i+=3, QColor(237, 255, 0, 255)));
2741 tab.push_back(std::pair<int, QColor>(i+=3, QColor(251, 232, 2, 255)));
2742 tab.push_back(std::pair<int, QColor>(i+=3, QColor(254, 199, 2, 255)));
2743 tab.push_back(std::pair<int, QColor>(i+=3, QColor(252, 179, 2, 255)));
2744 tab.push_back(std::pair<int, QColor>(i+=3, QColor(254, 147, 4, 255)));
2745 tab.push_back(std::pair<int, QColor>(i+=3, QColor(253, 99, 2, 255)));
2746 tab.push_back(std::pair<int, QColor>(i+=3, QColor(254, 1, 2, 255)));
2747 tab.push_back(std::pair<int, QColor>(i+=3, QColor(254, 0, 49, 255)));
2748 tab.push_back(std::pair<int, QColor>(i+=3, QColor(255, 5, 1, 255)));
2756 QString file(path +
"/Prec5km.ctl");
2757 FILE* fp = fopen(file.toStdString().c_str(),
"r");
2761 fread(buf, 2000,
sizeof(
char), fp);
2763 QString ss(QString(buf).simplified());
2766 if(!(ss.contains(
"undef ", Qt::CaseInsensitive) && ss.contains(
"xdef", Qt::CaseInsensitive)
2767 && ss.contains(
"ydef", Qt::CaseInsensitive) && ss.contains(
"linear", Qt::CaseInsensitive)
2768 && ss.contains(
"zdef", Qt::CaseInsensitive)))
2779 size_t pos = ss.indexOf(
"undef ", Qt::CaseInsensitive) + strlen(
"undef ");
2781 pos = ss.indexOf(
"xdef", Qt::CaseInsensitive);
2783 pi->
m_undef = atof(s.toStdString().c_str());
2787 pos = ss.indexOf(
"xdef ", Qt::CaseInsensitive) + strlen(
"xdef ");
2789 pos = ss.indexOf(
" ");
2791 pi->
m_ncols = atoi(s.toStdString().c_str());
2794 pos = ss.indexOf(
"linear ", Qt::CaseInsensitive) + strlen(
"linear ");
2796 pos = ss.indexOf(
" ");
2798 double llx = atof(s.toStdString().c_str());
2800 pos = ss.indexOf(
"ydef ", Qt::CaseInsensitive);
2802 double resX = atof(s.toStdString().c_str());
2806 pos = ss.indexOf(
"ydef ", Qt::CaseInsensitive) + strlen(
"ydef ");
2808 pos = ss.indexOf(
" ");
2810 pi->
m_nlines = atoi(s.toStdString().c_str());
2813 pos = ss.indexOf(
"linear ", Qt::CaseInsensitive) + strlen(
"linear ");
2815 pos = ss.indexOf(
" ");
2817 double lly = atof(s.toStdString().c_str());
2819 pos = ss.indexOf(
"zdef ", Qt::CaseInsensitive);
2821 double resY = atof(s.toStdString().c_str());
2824 double w = (double)pi->
m_ncols * resX;
2825 double h = (
double)pi->
m_nlines * resY;
2833 std::vector<std::pair<int, QColor> > tab;
2835 tab.push_back(std::pair<int, QColor>(i+=1, QColor(2, 1, 201, 255)));
2836 tab.push_back(std::pair<int, QColor>(i+=1, QColor(2, 18, 213, 255)));
2837 tab.push_back(std::pair<int, QColor>(i+=1, QColor(1, 24, 220, 255)));
2838 tab.push_back(std::pair<int, QColor>(i+=1, QColor(1, 36, 227, 255)));
2839 tab.push_back(std::pair<int, QColor>(i+=1, QColor(1, 54, 240, 255)));
2840 tab.push_back(std::pair<int, QColor>(i+=1, QColor(1, 71, 254, 255)));
2841 tab.push_back(std::pair<int, QColor>(i+=1, QColor(1, 90, 252, 255)));
2842 tab.push_back(std::pair<int, QColor>(i+=1, QColor(3, 106, 251, 255)));
2843 tab.push_back(std::pair<int, QColor>(i+=1, QColor(3, 130, 253, 255)));
2844 tab.push_back(std::pair<int, QColor>(i+=1, QColor(3, 148, 250, 255)));
2845 tab.push_back(std::pair<int, QColor>(i+=1, QColor(3, 160, 250, 255)));
2846 tab.push_back(std::pair<int, QColor>(i+=1, QColor(4, 174, 250, 255)));
2847 tab.push_back(std::pair<int, QColor>(i+=1, QColor(4, 186, 250, 255)));
2848 tab.push_back(std::pair<int, QColor>(i+=1, QColor(5, 200, 251, 255)));
2849 tab.push_back(std::pair<int, QColor>(i+=1, QColor(5, 214, 246, 255)));
2850 tab.push_back(std::pair<int, QColor>(i+=1, QColor(3, 227, 241, 255)));
2851 tab.push_back(std::pair<int, QColor>(i+=1, QColor(3, 240, 237, 255)));
2852 tab.push_back(std::pair<int, QColor>(i+=1, QColor(2, 254, 233, 255)));
2853 tab.push_back(std::pair<int, QColor>(i+=1, QColor(2, 254, 212, 255)));
2854 tab.push_back(std::pair<int, QColor>(i+=1, QColor(1, 254, 190, 255)));
2855 tab.push_back(std::pair<int, QColor>(i+=1, QColor(1, 254, 170, 255)));
2856 tab.push_back(std::pair<int, QColor>(i+=1, QColor(1, 254, 160, 255)));
2857 tab.push_back(std::pair<int, QColor>(i+=1, QColor(1, 254, 151, 255)));
2858 tab.push_back(std::pair<int, QColor>(i+=1, QColor(1, 254, 105, 255)));
2859 tab.push_back(std::pair<int, QColor>(i+=1, QColor(1, 254, 72, 255)));
2860 tab.push_back(std::pair<int, QColor>(i+=1, QColor(1, 254, 37, 255)));
2861 tab.push_back(std::pair<int, QColor>(i+=1, QColor(2, 254, 4, 255)));
2862 tab.push_back(std::pair<int, QColor>(i+=1, QColor(25, 254, 4, 255)));
2863 tab.push_back(std::pair<int, QColor>(i+=1, QColor(56, 254, 3, 255)));
2864 tab.push_back(std::pair<int, QColor>(i+=1, QColor(71, 254, 3, 255)));
2865 tab.push_back(std::pair<int, QColor>(i+=1, QColor(99, 254, 2, 255)));
2866 tab.push_back(std::pair<int, QColor>(i+=1, QColor(125, 254, 2, 255)));
2867 tab.push_back(std::pair<int, QColor>(i+=1, QColor(150, 254, 2, 255)));
2868 tab.push_back(std::pair<int, QColor>(i+=1, QColor(175, 254, 2, 255)));
2869 tab.push_back(std::pair<int, QColor>(i+=1, QColor(200, 255, 1, 255)));
2870 tab.push_back(std::pair<int, QColor>(i+=1, QColor(209, 255, 1, 255)));
2871 tab.push_back(std::pair<int, QColor>(i+=1, QColor(218, 255, 1, 255)));
2872 tab.push_back(std::pair<int, QColor>(i+=1, QColor(229, 255, 1, 255)));
2873 tab.push_back(std::pair<int, QColor>(i+=1, QColor(237, 255, 0, 255)));
2874 tab.push_back(std::pair<int, QColor>(i+=1, QColor(240, 248, 0, 255)));
2875 tab.push_back(std::pair<int, QColor>(i+=1, QColor(244, 241, 0, 255)));
2876 tab.push_back(std::pair<int, QColor>(i+=1, QColor(250, 237, 0, 255)));
2877 tab.push_back(std::pair<int, QColor>(i+=1, QColor(251, 232, 2, 255)));
2878 tab.push_back(std::pair<int, QColor>(i+=1, QColor(251, 226, 2, 255)));
2879 tab.push_back(std::pair<int, QColor>(i+=1, QColor(252, 215, 2, 255)));
2880 tab.push_back(std::pair<int, QColor>(i+=1, QColor(253, 208, 2, 255)));
2881 tab.push_back(std::pair<int, QColor>(i+=1, QColor(254, 199, 2, 255)));
2882 tab.push_back(std::pair<int, QColor>(i+=1, QColor(254, 194, 2, 255)));
2883 tab.push_back(std::pair<int, QColor>(i+=1, QColor(253, 190, 2, 255)));
2884 tab.push_back(std::pair<int, QColor>(i+=1, QColor(253, 184, 2, 255)));
2885 tab.push_back(std::pair<int, QColor>(i+=1, QColor(252, 179, 2, 255)));
2886 tab.push_back(std::pair<int, QColor>(i+=1, QColor(252, 172, 2, 255)));
2887 tab.push_back(std::pair<int, QColor>(i+=1, QColor(253, 164, 2, 255)));
2888 tab.push_back(std::pair<int, QColor>(i+=1, QColor(253, 155, 2, 255)));
2889 tab.push_back(std::pair<int, QColor>(i+=1, QColor(254, 147, 4, 255)));
2890 tab.push_back(std::pair<int, QColor>(i+=1, QColor(254, 136, 4, 255)));
2891 tab.push_back(std::pair<int, QColor>(i+=1, QColor(254, 125, 3, 255)));
2892 tab.push_back(std::pair<int, QColor>(i+=1, QColor(254, 112, 3, 255)));
2893 tab.push_back(std::pair<int, QColor>(i+=1, QColor(253, 99, 2, 255)));
2894 tab.push_back(std::pair<int, QColor>(i+=1, QColor(253, 75, 2, 255)));
2895 tab.push_back(std::pair<int, QColor>(i+=1, QColor(253, 50, 2, 255)));
2896 tab.push_back(std::pair<int, QColor>(i+=1, QColor(253, 25, 2, 255)));
2897 tab.push_back(std::pair<int, QColor>(i+=1, QColor(254, 1, 2, 255)));
2898 tab.push_back(std::pair<int, QColor>(i+=1, QColor(254, 1, 12, 255)));
2899 tab.push_back(std::pair<int, QColor>(i+=1, QColor(254, 1, 25, 255)));
2900 tab.push_back(std::pair<int, QColor>(i+=1, QColor(254, 1, 37, 255)));
2901 tab.push_back(std::pair<int, QColor>(i+=1, QColor(254, 0, 49, 255)));
2902 tab.push_back(std::pair<int, QColor>(i+=1, QColor(254, 2, 37, 255)));
2903 tab.push_back(std::pair<int, QColor>(i+=1, QColor(254, 3, 25, 255)));
2904 tab.push_back(std::pair<int, QColor>(i+=1, QColor(254, 4, 12, 255)));
2905 tab.push_back(std::pair<int, QColor>(i+=1, QColor(255, 5, 1, 255)));
2912 QString path = pi->
m_dir.absolutePath() +
"/";
2915 QString baseName = fi.baseName();
2918 if(pi->
m_suffix ==
".bin" && baseName ==
"racc")
2920 size_t nchars = pi->
m_ncols * 2;
2921 uchar* buf =
new uchar[nchars];
2922 FILE* fp = fopen(file.toStdString().c_str(),
"rb");
2924 ima->fill(Qt::transparent);
2928 for(
size_t j = 0; j < pi->
m_nlines; ++j)
2930 uchar* u = ima->scanLine(j);
2931 fread(buf, nchars,
sizeof(
char), fp);
2932 for(
size_t i = 0; i < pi->
m_ncols; i++)
2934 uc[0] = *(buf + (i<<1));
2935 uc[1] = *(buf + (1+(i<<1)));
2936 ushort b = *(ushort*)uc;
2940 QRgb* v = (QRgb*)(u + (i << 2));
2941 *v = qRgba(pi->
m_lut[b].red(), pi->
m_lut[b].green(), pi->
m_lut[b].blue(), 255);
2948 else if(pi->
m_suffix ==
".bin" && baseName.contains(
"Prec5km"))
2950 QString auxFile(file);
2951 size_t pos = auxFile.indexOf(baseName);
2952 auxFile.remove(0, pos);
2953 pos = auxFile.indexOf(
"_");
2954 size_t pp = auxFile.indexOf(
".bin");
2955 int offset = atoi(auxFile.mid(pos+1, pp-pos+1).toStdString().c_str());
2958 auxFile.remove(pos, auxFile.length()-pos);
2959 auxFile = path + auxFile + pi->
m_suffix;
2961 size_t nchars = pi->
m_ncols * 4;
2962 uchar* buf =
new uchar[nchars];
2963 FILE* fp = fopen(auxFile.toStdString().c_str(),
"rb");
2964 fseek(fp, offset, SEEK_SET);
2965 fseek(fp, 4, SEEK_CUR);
2967 ima->fill(Qt::transparent);
2971 for(
size_t j = 0; j < pi->
m_nlines; ++j)
2973 uchar* u = ima->scanLine(pi->
m_nlines-1-j);
2974 fread(buf, nchars,
sizeof(
char), fp);
2976 for(
size_t i = 0; i < pi->
m_ncols; i++)
2978 uc[0] = *(buf + (i<<2));
2979 uc[1] = *(buf + (1+(i<<2)));
2980 uc[2] = *(buf + (2+(i<<2)));
2981 uc[3] = *(buf + (3+(i<<2)));
2982 float b = *(
float*)uc;
2985 uchar a = (uchar) (b * 10000. + .5);
2986 QRgb* v = (QRgb*)(u + (i << 2));
2987 *v = qRgba(pi->
m_lut[a].red(), pi->
m_lut[a].green(), pi->
m_lut[a].blue(), 255);
2995 ima =
new QImage(file);
3004 QString d = dir.dirName();
3005 QStringList nameFilter;
3006 nameFilter.append(
"*.ctl");
3007 QStringList files = dir.entryList(nameFilter, QDir::Files, QDir::Name);
3008 QString ctlFile = files.first();
3010 if(ctlFile ==
"racc.ctl")
3011 pi = getHidroMetadata(path);
3012 else if(ctlFile ==
"Prec5km.ctl")
3013 pi = getEtaMetadata(path);
3017 nameFilter.append(
"S11*.jpg");
3018 QStringList files = dir.entryList(nameFilter, QDir::Files, QDir::Name);
3019 if(files.empty() ==
false && files.first().length() == 26)
3020 pi = getGoesMetadata(path);
3022 pi = getTemporalImageMetadata(path);
3030 PixmapItem* pi = getHidroCtlParameters(path);
3034 m_animationScene->addItem(pi);
3037 animation->setEasingCurve(QEasingCurve::Linear);
3038 m_parallelAnimation->addAnimation(animation);
3040 QStringList nameFilter;
3041 nameFilter.append(
"*.bin");
3043 QStringList files = dir.entryList(nameFilter, QDir::Files, QDir::Name);
3044 size_t count = files.count();
3053 for(
size_t i = 0; i < count; ++i)
3055 QString f = files[i];
3056 t = getHidroTime(f);
3069 for(
size_t i = 0; i < count; ++i)
3072 pos -= QPointF(dw, dh);
3074 pos += QPointF(dw, dh);
3089 m_animationScene->addItem(pi);
3092 animation->setEasingCurve(QEasingCurve::Linear);
3093 m_parallelAnimation->addAnimation(animation);
3095 QStringList nameFilter;
3096 nameFilter.append(
"*.bin");
3098 QStringList files = dir.entryList(nameFilter, QDir::Files, QDir::Name);
3099 size_t count = files.count();
3105 tf =
te::dt::TimeInstant(tf.getTimeInstant() + boost::posix_time::seconds(60*60*24*3 - 3600));
3111 for(
size_t i = 0; i < count; ++i)
3113 QString f = files[i];
3114 QFileInfo fi(path +
"/" + f);
3115 QString baseName = fi.baseName();
3119 tnext = getEtaTime(files[i+1]);
3124 while((t < tnext || t == tnext) && n <= 72)
3129 fname = path +
"/" + baseName +
"_" + sn +
"." + fi.suffix();
3134 size_t tsize = pi->
m_files.count();
3143 for(
size_t i = 0; i < tsize; ++i)
3146 pos -= QPointF(dw, dh);
3148 pos += QPointF(dw, dh);
3159 QString file(fileName);
3160 int ind = file.indexOf(
"racc.") + strlen(
"racc.");
3161 file.remove(0, ind);
3162 QString ano =
"20" + file.mid(0, 2);
3163 QString mes = file.mid(2, 2);
3164 QString dia = file.mid(4, 2);
3165 QString hour = file.mid(7, 2);
3166 QString min = file.mid(9, 2);
3168 te::dt::Date date(ano.toInt(), mes.toInt(), dia.toInt());
3175 QString file(fileName);
3176 int ind = file.indexOf(
"Prec5km") + strlen(
"Prec5km");
3177 file.remove(0, ind);
3178 QString ano = file.mid(0, 4);
3179 QString mes = file.mid(4, 2);
3180 QString dia = file.mid(6, 2);
3181 QString hour = file.mid(8, 2);
3183 te::dt::Date date(ano.toInt(), mes.toInt(), dia.toInt());
3190 PixmapItem* pi = getTemporalImageCtlParameters(path);
3194 m_animationScene->addItem(pi);
3197 animation->setEasingCurve(QEasingCurve::Linear);
3198 m_parallelAnimation->addAnimation(animation);
3200 QString suffix =
"." + pi->
m_suffix;
3201 QStringList nameFilter;
3202 nameFilter.append(
"*" + suffix);
3204 QStringList files = dir.entryList(nameFilter, QDir::Files, QDir::Name);
3205 size_t count = files.count();
3214 for(
size_t i = 0; i < count; ++i)
3216 QString f = files[i];
3218 t = getTemporalImageTime(f);
3228 for(
size_t i = 0; i < count; ++i)
3231 pos -= QPointF(w, h);
3233 pos += QPointF(w, h);
3243 QString file(path +
"/image.ctl");
3244 FILE* fp = fopen(file.toStdString().c_str(),
"r");
3248 fread(buf, 2000,
sizeof(
char), fp);
3250 QString ss(QString(buf).simplified());
3253 if(!(ss.contains(
"suffix ", Qt::CaseInsensitive) && ss.contains(
"undef", Qt::CaseInsensitive) &&
3254 ss.contains(
"srid", Qt::CaseInsensitive) && ss.contains(
"llx", Qt::CaseInsensitive) &&
3255 ss.contains(
"lly", Qt::CaseInsensitive) && ss.contains(
"urx", Qt::CaseInsensitive) &&
3256 ss.contains(
"ury", Qt::CaseInsensitive)))
3264 size_t pos = ss.indexOf(
"suffix ", Qt::CaseInsensitive) + strlen(
"suffix ");
3266 pos = ss.indexOf(
" undef", Qt::CaseInsensitive);
3272 pos = ss.indexOf(
"undef ", Qt::CaseInsensitive) + strlen(
"undef ");
3274 pos = ss.indexOf(
" srid", Qt::CaseInsensitive);
3276 pi->
m_undef = atof(s.toStdString().c_str());
3280 pos = ss.indexOf(
"srid ", Qt::CaseInsensitive) + strlen(
"srid ");
3282 pos = ss.indexOf(
" llx", Qt::CaseInsensitive);
3284 pi->
m_SRID = atoi(s.toStdString().c_str());
3288 pos = ss.indexOf(
"llx ", Qt::CaseInsensitive) + strlen(
"llx ");
3290 pos = ss.indexOf(
" lly", Qt::CaseInsensitive);
3292 double llx = atof(s.toStdString().c_str());
3296 pos = ss.indexOf(
"lly ", Qt::CaseInsensitive) + strlen(
"lly ");
3298 pos = ss.indexOf(
" urx", Qt::CaseInsensitive);
3300 double lly = atof(s.toStdString().c_str());
3304 pos = ss.indexOf(
"urx ", Qt::CaseInsensitive) + strlen(
"urx ");
3306 pos = ss.indexOf(
" ury", Qt::CaseInsensitive);
3308 double urx = atof(s.toStdString().c_str());
3312 pos = ss.indexOf(
"ury ", Qt::CaseInsensitive) + strlen(
"ury ");
3314 double ury = atof(ss.toStdString().c_str());
3316 double w = urx - llx;
3317 double h = ury - lly;
3325 QString file(fileName);
3326 int ind = file.indexOf(
"_") + strlen(
"_");
3327 file.remove(0, ind);
3328 QString ano = file.mid(0, 4);
3329 QString mes = file.mid(5, 2);
3330 QString dia = file.mid(8, 2);
3331 QString hour = file.mid(11, 2);
3332 QString min = file.mid(14, 2);
3333 QString sec = file.mid(17, 2);
3335 te::dt::Date date(ano.toInt(), mes.toInt(), dia.toInt());
TEDATAACCESSEXPORT DataSourcePtr GetDataSource(const std::string &datasourceId, const bool opened=true)
Search for a data source with the informed id in the DataSourceManager.
const std::string & getDataSetName() const
boost::shared_ptr< DataSource > DataSourcePtr
void setConnInfo(const std::map< std::string, std::string > &conninfo)
std::complex< double > times(std::complex< double > lhs, std::complex< double > rhs)
long getSeconds() const
It returns the seconds of a minute - from 0 to 59.
boost::gregorian::greg_year getYear() const
It returns the gregorian year.
double getWidth() const
It returns the envelope width.
const std::map< std::string, std::string > & getConnInfo() const
boost::gregorian::greg_day getDay() const
It returns the gregorian day - from 1 to 31.
const boost::posix_time::ptime & getTimeInstant() const
It returns the boost time instant type.
A class to represent time instant.
This file contains include headers for the TerraLib ST memory module.
void setType(const std::string &dsType)
static void initialize()
It returns the spatial extent of the observations of a coverage series.
double m_llx
Lower left corner x-coordinate.
LineString is a curve with linear interpolation between points.
Date getDate() const
It returns the date associated to time instant.
static DataSourceManager & getInstance()
It returns a reference to the singleton instance.
A point with x and y coordinate values.
void setPoint(std::size_t i, const double &x, const double &y)
It sets the value of the specified point.
An Envelope defines a 2D rectangular region.
const std::string & getDataSourceId() const
#define TE_UNKNOWN_SRS
A numeric value to represent a unknown SRS identification in TerraLib.
A base class for date data types.
std::auto_ptr< te::dt::DateTime > getTime() const
It returns the time pointed by the internal cursor.
TimeInstant getFinalTimeInstant() const
It gets the final time instant.
virtual int getSRID() const
It return the Spatial Reference System used by the Map Display.
TimeInstant getInitialTimeInstant() const
It gets the initial time instant.
An object that when created shows a cursor during its scope.
virtual const te::gm::Envelope & getExtent() const
It returns the world extent showned by the MapDisplay.
void setId(const std::string &id)
std::auto_ptr< te::gm::Geometry > getGeometry() const
double m_lly
Lower left corner y-coordinate.
A class that contains infos about a DataSet that contains observations of one or more trajectories...
A class to represent a trajectory data set.
const std::string & getId() const
A class to represent time period.
const boost::posix_time::time_period & getTimePeriod() const
Assignment operator.
A class to represent time duration with nano-second/micro-second resolution.
TimeDuration getTime() const
It returns the time duration associated to time instant.
const std::string & getType() const
A class that represents a data source component.
This file contains include headers for the TerraLib ST module.
DateTimeType
The subtype of date and time type.
A layer with reference to a dataset.
void setPointN(std::size_t i, const Point &p)
It sets the value of the specified point to this new one.
const te::gm::Envelope & getSpatialExtent() const
It returns the spatial extent of the trajectory observations.
static std::auto_ptr< ObservationDataSet > getDataSet(const ObservationDataSetInfo &info, te::common::TraverseType travType=te::common::FORWARDONLY)
It returns a ObservationDataSet, that is, a DataSet that contains observations.
long getMinutes() const
It returns the minutes of a hour - from 0 to 59.
This file contains include headers for the Data Access module of TerraLib.
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr
void transform(int oldsrid, int newsrid)
It will transform the coordinates of the Envelope from the old SRS to the new one.
std::size_t size() const
It returns the size of the trajectory observation set.
double getHeight() const
It returns the envelope height.
boost::gregorian::greg_month getMonth() const
It returns the gregorian month - from 1 to 12.
bool isValid() const
It tells if the rectangle is valid or not.
long getHours() const
It returns the hours of a day - from 0 to 23.
te::dt::DateTimePeriod * getTemporalExtent() const
It returns the temporal extent of the trajectory observations.
static void finalize()
It finalize the STDataLoader.