|
@@ -12,14 +12,12 @@
|
|
|
#include "commif.h"
|
|
|
|
|
|
MainWindow * gw;
|
|
|
-
|
|
|
#define VIEW_WIDTH 6000
|
|
|
#define VIEW_HEIGHT 6000
|
|
|
|
|
|
std::string strtypevalue[]={"None","Solid","Dash","Solid Solid","Dash Dash","Solid Dash","Dash Solid"};
|
|
|
std::string strcolorvalue[]={"White","Yellow"};
|
|
|
|
|
|
-
|
|
|
void UpdateGPS(const char * strdata,const unsigned int nSize)
|
|
|
{
|
|
|
std::shared_ptr<iv::gps::gpsimu> xgpsimu_ptr = std::shared_ptr<iv::gps::gpsimu>(new iv::gps::gpsimu);
|
|
@@ -33,8 +31,7 @@ void UpdateGPS(const char * strdata,const unsigned int nSize)
|
|
|
gw->UpdateGPSIMU(xgpsimu_ptr);
|
|
|
}
|
|
|
|
|
|
-LineItem * gt;
|
|
|
-QGraphicsEllipseItem * gpe;
|
|
|
+
|
|
|
MainWindow::MainWindow(QWidget *parent)
|
|
|
: QMainWindow(parent)
|
|
|
, ui(new Ui::MainWindow)
|
|
@@ -71,7 +68,7 @@ MainWindow::MainWindow(QWidget *parent)
|
|
|
ui->lineEdit_RoadName->setEnabled(false);
|
|
|
|
|
|
ui->radioButton_Auto->setChecked(true);
|
|
|
- ui->pushButton_ManualCollect->setEnabled(false);
|
|
|
+ ui->pushButton_ManualCollect->setEnabled(true);
|
|
|
|
|
|
myview = new MyView(this);
|
|
|
myview->setObjectName(QStringLiteral("graphicsView"));
|
|
@@ -95,26 +92,14 @@ MainWindow::MainWindow(QWidget *parent)
|
|
|
|
|
|
RegisterRecvGPS((char *)"hcp2_gpsimu",UpdateGPS);
|
|
|
|
|
|
-// LineItem * ptest = new LineItem(QPointF(100,100),QPointF(2000,100),1.0);
|
|
|
-// mpscene->addItem(ptest);
|
|
|
-// ptest->setPos(3000,3000);
|
|
|
-// gt = ptest;
|
|
|
-
|
|
|
-// QGraphicsEllipseItem * pe = new QGraphicsEllipseItem(-10.0,-10.0,20.0,20.0);
|
|
|
-// pe->setPos(3000,3000);
|
|
|
-// QBrush xBrush;
|
|
|
-// xBrush.setColor(Qt::blue);
|
|
|
-// pe->setBrush(Qt::green);
|
|
|
-// pe->setPen(Qt::NoPen);
|
|
|
-// mpscene->addItem(pe);
|
|
|
-// gpe = pe;
|
|
|
-
|
|
|
mpNowPosItem = new QGraphicsEllipseItem(0-mfNowSize/2.0,0-mfNowSize/2.0,mfNowSize,mfNowSize);
|
|
|
mpNowPosItem->setBrush(Qt::green);
|
|
|
mpNowPosItem->setPen(Qt::NoPen);
|
|
|
mpNowPosItem->setPos(3000,3000);
|
|
|
mpscene->addItem(mpNowPosItem);
|
|
|
|
|
|
+ mpEditWin = new EditWin(this);
|
|
|
+
|
|
|
connect(this,SIGNAL(updategps()),this,SLOT(ongpsupdate()));
|
|
|
|
|
|
setWindowTitle("Collect Data From Vehicle");
|
|
@@ -154,8 +139,7 @@ void MainWindow::resizeEvent(QResizeEvent *event)
|
|
|
(void)event;
|
|
|
QSize sizemain = ui->centralwidget->size();
|
|
|
|
|
|
- ui->plainTextEdit->setGeometry(690,30,sizemain.width()-730,300);
|
|
|
- myview->setGeometry(690,360,sizemain.width()-730,sizemain.height()-400);
|
|
|
+ myview->setGeometry(690,50,sizemain.width()-730,sizemain.height()-100);
|
|
|
}
|
|
|
|
|
|
void MainWindow::on_pushButton_NewRoad_clicked()
|
|
@@ -213,13 +197,21 @@ void MainWindow::paintEvent(QPaintEvent * event)
|
|
|
{
|
|
|
mvectorCurRightPointItem[i]->setScale(fscale);
|
|
|
}
|
|
|
- // gt->setratio(ratio);
|
|
|
- // gpe->setScale(1.0/ratio);
|
|
|
-// myview->setScene(mpscene);
|
|
|
+
|
|
|
+ for(i=0;i<mvectorLeftPointItem.size();i++)
|
|
|
+ {
|
|
|
+ mvectorLeftPointItem[i]->setScale(fscale);
|
|
|
+ }
|
|
|
+ for(i=0;i<mvectorMainPointItem.size();i++)
|
|
|
+ {
|
|
|
+ mvectorMainPointItem[i]->setScale(fscale);
|
|
|
+ }
|
|
|
+ for(i=0;i<mvectorRightPointItem.size();i++)
|
|
|
+ {
|
|
|
+ mvectorRightPointItem[i]->setScale(fscale);
|
|
|
+ }
|
|
|
}
|
|
|
-// mpNowPosItem->setScale(1.0/ratio);
|
|
|
-// gt->setratio(ratio);
|
|
|
-// gpe->setScale(1.0/ratio);
|
|
|
+
|
|
|
myview->setScene(mpscene);
|
|
|
|
|
|
}
|
|
@@ -357,7 +349,7 @@ void MainWindow::AddPoint(std::shared_ptr<iv::gps::gpsimu> xgpsimu_ptr)
|
|
|
|
|
|
void MainWindow::ongpsupdate()
|
|
|
{
|
|
|
- const double thresh_headingdiff = 1.0;
|
|
|
+ const double thresh_headingdiff = 3.0;
|
|
|
const double thresh_disdiff = 10.0;
|
|
|
std::shared_ptr<iv::gps::gpsimu> xgpsimu_ptr;
|
|
|
mMutex.lock();
|
|
@@ -387,9 +379,16 @@ void MainWindow::ongpsupdate()
|
|
|
}
|
|
|
if(mbStartCollect == false)return;
|
|
|
|
|
|
+ if(mbMaualCollect &&(mbManualClick == false))
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
if(mpcurroad->mpoints_size() == 0)
|
|
|
{
|
|
|
AddPoint(xgpsimu_ptr);
|
|
|
+ mbManualClick = false;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -405,15 +404,25 @@ void MainWindow::ongpsupdate()
|
|
|
while(fheadingdiff<0)fheadingdiff = fheadingdiff + 360.0;
|
|
|
while(fheadingdiff>=360)fheadingdiff = fheadingdiff -360.0;
|
|
|
|
|
|
- if((fheadingdiff>=thresh_headingdiff)&&(fheadingdiff<=(360.0 - thresh_headingdiff)))
|
|
|
+ if((fheadingdiff>=thresh_headingdiff)&&(fheadingdiff<=(360.0 - thresh_headingdiff))&&(fdis>0.5))
|
|
|
{
|
|
|
AddPoint(xgpsimu_ptr);
|
|
|
+ mbManualClick = false;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if(fdis >= thresh_disdiff)
|
|
|
{
|
|
|
AddPoint(xgpsimu_ptr);
|
|
|
+ mbManualClick = false;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if((fdis>0.5)&&(mbManualClick))
|
|
|
+ {
|
|
|
+ AddPoint(xgpsimu_ptr);
|
|
|
+ mbManualClick = false;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -422,6 +431,11 @@ void MainWindow::ongpsupdate()
|
|
|
|
|
|
void MainWindow::on_actionReset_triggered()
|
|
|
{
|
|
|
+ if(mbStartCollect)
|
|
|
+ {
|
|
|
+ QMessageBox::warning(this,"Warning",QString(tr("请先停止采集")),QMessageBox::YesAll);
|
|
|
+ return;
|
|
|
+ }
|
|
|
QMessageBox::StandardButton button;
|
|
|
button=QMessageBox::question(this,tr("重置采集"),QString(tr("是否重置采集")),QMessageBox::Yes|QMessageBox::No);
|
|
|
if(button==QMessageBox::No)
|
|
@@ -431,6 +445,7 @@ void MainWindow::on_actionReset_triggered()
|
|
|
else if(button==QMessageBox::Yes)
|
|
|
{
|
|
|
mcollectveh.clear_mroads();
|
|
|
+ ResetPointView();
|
|
|
QMessageBox::information(this,"Info",tr("采集重置成功"),QMessageBox::YesAll);
|
|
|
}
|
|
|
|
|
@@ -485,6 +500,11 @@ void MainWindow::on_actionSave_triggered()
|
|
|
|
|
|
void MainWindow::on_actionLoad_triggered()
|
|
|
{
|
|
|
+ if(mbStartCollect)
|
|
|
+ {
|
|
|
+ QMessageBox::warning(this,"Warning",QString(tr("请先停止采集")),QMessageBox::YesAll);
|
|
|
+ return;
|
|
|
+ }
|
|
|
if(mcollectveh.mroads_size() > 0)
|
|
|
{
|
|
|
QMessageBox::StandardButton button;
|
|
@@ -506,6 +526,7 @@ void MainWindow::on_actionLoad_triggered()
|
|
|
QByteArray ba = xFile.readAll();
|
|
|
xFile.close();
|
|
|
mcollectveh.clear_mroads();
|
|
|
+ ResetPointView();
|
|
|
if(!mcollectveh.ParseFromArray(ba.data(),ba.size()))
|
|
|
{
|
|
|
QMessageBox::warning(this,"Warning","Parse File Data Fail.",QMessageBox::YesAll);
|
|
@@ -521,13 +542,156 @@ void MainWindow::on_actionLoad_triggered()
|
|
|
mbSetZero = true;
|
|
|
mlon0 = mcollectveh.mlon0();
|
|
|
mlat0 = mcollectveh.mlat0();
|
|
|
+ UpdateLoadVIew();
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
+void MainWindow::UpdateLoadVIew()
|
|
|
+{
|
|
|
+ int i;
|
|
|
+ int j;
|
|
|
+ for(i=0;i<mcollectveh.mroads_size();i++)
|
|
|
+ {
|
|
|
+ iv::map::collectvehroad * proad = mcollectveh.mutable_mroads(i);
|
|
|
+ for(j=0;j<proad->mpoints_size();j++)
|
|
|
+ {
|
|
|
+ iv::map::collectvehroadpoint * pmappoint = proad->mutable_mpoints(j);
|
|
|
+ double x_left,y_left,x_main,y_main,x_right,y_right;
|
|
|
+ double x0,y0;
|
|
|
+ double fhdg = (90 - pmappoint->mfheading())*M_PI/180.0;
|
|
|
+ GaussProjCal(pmappoint->mflon(),pmappoint->mflat(),&x_main,&y_main);
|
|
|
+ GaussProjCal(mlon0,mlat0,&x0,&y0);
|
|
|
+ x_main = x_main - x0;
|
|
|
+ y_main = y_main - y0;
|
|
|
+ x_left = x_main + pmappoint->mfdis_left()*cos(fhdg + M_PI/2.0);
|
|
|
+ y_left = y_main + pmappoint->mfdis_left()*sin(fhdg + M_PI/2.0);
|
|
|
+ x_right = x_main + (pmappoint->mfdis_left() - pmappoint->mflanewidth())*cos(fhdg + M_PI/2.0);
|
|
|
+ y_right = y_main + (pmappoint->mfdis_left() - pmappoint->mflanewidth())*sin(fhdg + M_PI/2.0);
|
|
|
+
|
|
|
+ double ratio = myview->getbeishu();
|
|
|
+ double fscale = 1.0/ratio;
|
|
|
+ QGraphicsEllipseItem * pmainitem,* pleftitem,*prightitem;
|
|
|
+ pmainitem = new QGraphicsEllipseItem(0-mfMainSize/2.0,0*(-1)-mfMainSize/2.0,mfMainSize,mfMainSize);
|
|
|
+ pmainitem->setBrush(Qt::darkGray);
|
|
|
+ pmainitem->setPen(Qt::NoPen);
|
|
|
+ pmainitem->setPos(VIEW_WIDTH/2 + x_main,VIEW_HEIGHT/2 -y_main);
|
|
|
+ pmainitem->setScale(fscale);
|
|
|
+ mpscene->addItem(pmainitem);
|
|
|
+ pleftitem = new QGraphicsEllipseItem(0-mfLeftRightSize/2.0,0*(-1)-mfLeftRightSize/2.0,mfLeftRightSize,mfLeftRightSize);
|
|
|
+ pleftitem->setBrush(Qt::darkGray);
|
|
|
+ pleftitem->setPen(Qt::NoPen);
|
|
|
+ pleftitem->setPos(VIEW_WIDTH/2 + x_left,VIEW_HEIGHT/2 -y_left);
|
|
|
+ pleftitem->setScale(fscale);
|
|
|
+ mpscene->addItem(pleftitem);
|
|
|
+ prightitem = new QGraphicsEllipseItem(0-mfLeftRightSize/2.0,0*(-1)-mfLeftRightSize/2.0,mfLeftRightSize,mfLeftRightSize);
|
|
|
+ prightitem->setBrush(Qt::darkGray);
|
|
|
+ prightitem->setPen(Qt::NoPen);
|
|
|
+ prightitem->setPos(VIEW_WIDTH/2 + x_right,VIEW_HEIGHT/2 -y_right);
|
|
|
+ prightitem->setScale(fscale);
|
|
|
+ mpscene->addItem(prightitem);
|
|
|
+
|
|
|
+ mvectorLeftPointItem.push_back(pleftitem);
|
|
|
+ mvectorMainPointItem.push_back(pmainitem);
|
|
|
+ mvectorRightPointItem.push_back(prightitem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
void MainWindow::on_pushButton_Complete_clicked()
|
|
|
{
|
|
|
mbStartCollect = false;
|
|
|
ui->pushButton_Complete->setEnabled(false);
|
|
|
ui->pushButton_NewRoad->setEnabled(true);
|
|
|
+
|
|
|
+ unsigned int i;
|
|
|
+ for(i=0;i<mvectorCurMainPointItem.size();i++)
|
|
|
+ {
|
|
|
+ mvectorCurMainPointItem[i]->setBrush(Qt::darkGray);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ for(i=0;i<mvectorCurLeftPointItem.size();i++)
|
|
|
+ {
|
|
|
+ mvectorLeftPointItem.push_back(mvectorCurLeftPointItem[i]);
|
|
|
+ }
|
|
|
+ for(i=0;i<mvectorCurMainPointItem.size();i++)
|
|
|
+ {
|
|
|
+ mvectorMainPointItem.push_back(mvectorCurMainPointItem[i]);
|
|
|
+ }
|
|
|
+ for(i=0;i<mvectorCurRightPointItem.size();i++)
|
|
|
+ {
|
|
|
+ mvectorRightPointItem.push_back(mvectorCurRightPointItem[i]);
|
|
|
+ }
|
|
|
+
|
|
|
+ mvectorCurLeftPointItem.clear();
|
|
|
+ mvectorCurMainPointItem.clear();
|
|
|
+ mvectorCurRightPointItem.clear();
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void MainWindow::on_actionEdit_Collect_triggered()
|
|
|
+{
|
|
|
+ mpEditWin->Setcollect(mcollectveh);
|
|
|
+ mpEditWin->show();
|
|
|
+}
|
|
|
+
|
|
|
+void MainWindow::ResetPointView()
|
|
|
+{
|
|
|
+ unsigned int i;
|
|
|
+ for(i=0;i<mvectorCurMainPointItem.size();i++)
|
|
|
+ {
|
|
|
+ mpscene->removeItem(mvectorCurMainPointItem[i]);
|
|
|
+ delete mvectorCurMainPointItem[i];
|
|
|
+ }
|
|
|
+ for(i=0;i<mvectorCurLeftPointItem.size();i++)
|
|
|
+ {
|
|
|
+ mpscene->removeItem(mvectorCurLeftPointItem[i]);
|
|
|
+ delete mvectorCurLeftPointItem[i];
|
|
|
+ }
|
|
|
+
|
|
|
+ for(i=0;i<mvectorCurRightPointItem.size();i++)
|
|
|
+ {
|
|
|
+ mpscene->removeItem(mvectorCurRightPointItem[i]);
|
|
|
+ delete mvectorCurRightPointItem[i];
|
|
|
+ }
|
|
|
+
|
|
|
+ for(i=0;i<mvectorMainPointItem.size();i++)
|
|
|
+ {
|
|
|
+ mpscene->removeItem(mvectorMainPointItem[i]);
|
|
|
+ delete mvectorMainPointItem[i];
|
|
|
+ }
|
|
|
+ for(i=0;i<mvectorLeftPointItem.size();i++)
|
|
|
+ {
|
|
|
+ mpscene->removeItem(mvectorLeftPointItem[i]);
|
|
|
+ delete mvectorLeftPointItem[i];
|
|
|
+ }
|
|
|
+
|
|
|
+ for(i=0;i<mvectorRightPointItem.size();i++)
|
|
|
+ {
|
|
|
+ mpscene->removeItem(mvectorRightPointItem[i]);
|
|
|
+ delete mvectorRightPointItem[i];
|
|
|
+ }
|
|
|
+
|
|
|
+ mvectorCurLeftPointItem.clear();
|
|
|
+ mvectorCurMainPointItem.clear();
|
|
|
+ mvectorCurRightPointItem.clear();
|
|
|
+ mvectorLeftPointItem.clear();
|
|
|
+ mvectorMainPointItem.clear();
|
|
|
+ mvectorRightPointItem.clear();
|
|
|
+}
|
|
|
+
|
|
|
+void MainWindow::on_radioButton_Auto_clicked()
|
|
|
+{
|
|
|
+ mbMaualCollect = false;
|
|
|
+}
|
|
|
+
|
|
|
+void MainWindow::on_radioButton_Manual_clicked()
|
|
|
+{
|
|
|
+ mbMaualCollect = true;
|
|
|
+}
|
|
|
+
|
|
|
+void MainWindow::on_pushButton_ManualCollect_clicked()
|
|
|
+{
|
|
|
+ mbManualClick = true;
|
|
|
}
|