You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wheeldetect/src/RasterSDG20/Raster.cpp

160 lines
4.6 KiB
C++

#include "Raster.h"
#include "ThicknessVector.h"
#include "QZkJsonParser.h"
#include "QDebug"
#pragma execution_character_set("utf-8")
CRaster::CRaster(QString strPath)
: m_pThickness(NULL), m_pRasSt(NULL), m_strPath(strPath)
{
m_pThickness = new ThicknessVector();
m_pRasSt = new RasterST;
m_pRasCom = new RasterCom;
readRasterJson();
m_pThickness->setRasterST(m_pRasSt);
}
CRaster::~CRaster()
{
delete m_pRasSt;
delete m_pRasCom;
delete m_pThickness;
}
RasterST * CRaster::getRasterSt() const
{
return m_pRasSt;
}
bool CRaster::readRasterJson()
{
//!><3E><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>Ϣ <20>Ƿ񱣴<C7B7>good<6F><64>ͼƬ <20>Ƿ񱣴<C7B7>bad<61><64>ͼƬ <20>Ƿ<EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD>ģʽ
QJsonObject jsRaster = QZkJsonParser::ReadJsonAuto(m_strPath);
QJsonObject Rsaterobj = jsRaster.value("Raster").toObject();
if (!Rsaterobj.isEmpty()) {
m_pRasSt->m_beilv = Rsaterobj.value("beilv").toDouble(5.07);
m_pRasSt->m_baseHight = Rsaterobj.value("basehight").toDouble(87);
m_pRasSt->mid_value = Rsaterobj.value("mid_value").toDouble(0.8);//<2F><>ֵ
m_pRasSt->m_maxsize = Rsaterobj.value("maxsize").toInt(10);
m_pRasSt->m_lowNum = Rsaterobj.value("lowNum").toInt(0);
m_pRasSt->m_bool_beilv = Rsaterobj.value("beilv_bool").toBool(false);
m_pRasSt->m_bool_baseHight = Rsaterobj.value("basehight_bool").toBool(false);
m_pRasSt->m_bool_maxsize = Rsaterobj.value("maxsize_bool").toBool(false);
m_pRasSt->m_bool_lowNum = Rsaterobj.value("lowNum_bool").toBool(false);
m_pRasSt->m_bool_mid_value = Rsaterobj.value("mid_value_bool").toBool(false);
}
else {
saveRasterJson(EMTYPE_RASTER);
}
QJsonObject RasterComObj = jsRaster.value("COM").toObject();
if (!RasterComObj.isEmpty()) {
m_pRasCom->m_ComName = RasterComObj.value("comName").toString();
m_pRasCom->m_Baute = RasterComObj.value("baute").toString();
m_pRasCom->m_UseRaster = RasterComObj.value("useRaster").toBool();
}
else{
saveRasterJson(EMTYPE_COM);
}
return true;
}
bool CRaster::saveRasterJson(emTySaveJsonType emType)
{
QJsonObject mObj = QZkJsonParser::ReadJsonAuto(m_strPath);
switch (emType)
{
case EMTYPE_RASTER:{
QJsonObject Rasterobj;
Rasterobj.insert("beilv", QJsonValue(m_pRasSt->m_beilv));
Rasterobj.insert("basehight", QJsonValue(m_pRasSt->m_baseHight));
Rasterobj.insert("mid_value", QJsonValue(m_pRasSt->mid_value));//<2F><>ֵ
Rasterobj.insert("maxsize", QJsonValue(m_pRasSt->m_maxsize));
Rasterobj.insert("lowNum", QJsonValue(m_pRasSt->m_lowNum));
Rasterobj.insert("beilv_bool", QJsonValue(m_pRasSt->m_bool_beilv));
Rasterobj.insert("basehight_bool", QJsonValue(m_pRasSt->m_bool_baseHight));
Rasterobj.insert("maxsize_bool", QJsonValue(m_pRasSt->m_bool_maxsize));
Rasterobj.insert("lowNum_bool", QJsonValue(m_pRasSt->m_bool_lowNum));
Rasterobj.insert("mid_value_bool", QJsonValue(m_pRasSt->m_bool_mid_value));
mObj.insert("Raster", Rasterobj);
}
break;
case EMTYPE_COM:{
QJsonObject Rasterobj;
Rasterobj.insert("comName", QJsonValue(m_pRasCom->m_ComName));
Rasterobj.insert("baute", QJsonValue(m_pRasCom->m_Baute));
Rasterobj.insert("useRaster", QJsonValue(m_pRasCom->m_UseRaster));
mObj.insert("COM", Rasterobj);
}
break;
default:
break;
}
QZkJsonParser::WriteJsonObject(m_strPath, mObj);
return true;
}
QString CRaster::getThicknessListStr()
{
QList<double> m = getThicknessList();/*<2A><>ʾ<EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
QString str = "thickness list: ";
for (int i = 0; i < m.size(); i++)
{
str += QString::number(m.at(i)) + " ";
}
str += "; value = " + QString::number(m_pThickness->getValue());
qDebug() << str;
return str;
}
double CRaster::getThicknessValue() const
{
//
// QList<double> m = getThicknessList();/*<2A><>ʾ<EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
// QString str = "thickness value list: ";
// for (int i = 0; i < m.size(); i++)
// {
// str += QString::number(m.at(i)) + " ";
// }
// str += "; value = " + QString::number(m_pThickness->getValue());
// qDebug() << str;
return m_pThickness->getValue();
}
void CRaster::addThicknessValue(double dValue)
{
double dThickness = (63 - dValue) * m_pRasSt->m_beilv*1.0;//<2F><>ȡ<EFBFBD><C8A1>դ<EFBFBD><D5A4><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ó<EFBFBD><C3B3>ڵ<EFBFBD><DAB5>ĺ<EFBFBD><C4BA><EFBFBD>
m_pThickness->addValue(dThickness + m_pRasSt->m_baseHight);
}
bool CRaster::showRasterDlg()
{
// QRasterDlg dlg;
// dlg.SetData2UI(m_pRasSt);
// dlg.setWindowTitle("<22><>դ<EFBFBD><EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
// dlg.setWindowIcon(QIcon(":/image/leaper"));
// if (dlg.exec() == QDialog::Accepted)
// {
// dlg.GetDataFromUI(m_pRasSt);
// saveRasterJson();
// }
return true;
}
QList<double> CRaster::getThicknessList() const
{
return m_pThickness->getList();
}
bool CRaster::setRasterSt(RasterST *m_pRaster)
{
if (m_pRasSt){
m_pRasSt = m_pRaster;
}
return true;
}
RasterCom * CRaster::getRasterCom() const
{
return m_pRasCom;
}