📄 mapinfo.cpp
字号:
{
QString fn = mapSelector->mapPathStr();
fn.append("/"+mapSelect->currentText());
image = new QPixmap(fn);
MapParDialog mapPar(0,this,"properties",TRUE,0);
mapPar.setCaption(tr("Properties - %1").arg(mapSelect->currentText()));
// set existing parameters:
MapBase *aMap;
int idx=0;
aMap = mapSelector->first ();
while((aMap != 0)&&(aMap->name() != mapSelect->currentText()))
{
if(aMap->name() != mapSelect->currentText())
{
aMap = mapSelector->next();
idx++;
}
}
int proIdx;
if(aMap->projection == "LINEAR")
proIdx = 0;
else if(aMap->projection == "CEA")
proIdx = 1;
else if(aMap->projection == "UTM")
proIdx = 2;
else if(aMap->projection == "TM")
proIdx = 3;
else if(aMap->projection == "MERCATOR")
proIdx = 4;
else if(aMap->projection == "LAMBERT")
proIdx = 5;
else if(aMap->projection == "FRITZ")
proIdx = 6;
else {
proIdx = 0; qWarning(tr("fetchmap: unknown projection type"));
};
mapPar.projectionCB->setCurrentItem(proIdx);
mapPar.scaleLE->setText(QString::number(aMap->scale));
Position pos;
switch(proIdx)
{
case 0: // LINEAR
mapPar.lg1LE->setText(Position::string(
((MapLin *)aMap)->pos1.lon, Position::Lon));
mapPar.lt1LE->setText(Position::string(
((MapLin *)aMap)->pos1.lat, Position::Lat));
mapPar.x1LE->setText(QString::number(((MapLin *)aMap)->x1));
mapPar.y1LE->setText(QString::number(((MapLin *)aMap)->y1));
mapPar.lg2LE->setText(Position::string(
((MapLin *)aMap)->pos2.lon, Position::Lon));
mapPar.lt2LE->setText(Position::string(
((MapLin *)aMap)->pos2.lat, Position::Lat));
mapPar.x2LE->setText(QString::number(((MapLin *)aMap)->x2));
mapPar.y2LE->setText(QString::number(((MapLin *)aMap)->y2));
break;
case 1: // CEA
aMap->calcPos(pos, ((MapCEA *)aMap)->x1, ((MapCEA *)aMap)->y1);
mapPar.lg1LE->setText(Position::string(pos.lon, Position::Lon));
mapPar.lt1LE->setText(Position::string(pos.lat, Position::Lat));
mapPar.x1LE->setText(QString::number(((MapCEA *)aMap)->x1));
mapPar.y1LE->setText(QString::number(((MapCEA *)aMap)->y1));
aMap->calcPos(pos, ((MapCEA *)aMap)->x2, ((MapCEA *)aMap)->y2);
mapPar.lg2LE->setText(Position::string(pos.lon, Position::Lon));
mapPar.lt2LE->setText(Position::string(pos.lat, Position::Lat));
mapPar.x2LE->setText(QString::number(((MapCEA *)aMap)->x2));
mapPar.y2LE->setText(QString::number(((MapCEA *)aMap)->y2));
break;
case 2: // UTM
mapPar.zoneLE->setText(((MapUTM*)aMap)->utmZone);
mapPar.lt1LE->setText(QString::number(((MapUTM*)aMap)->utmNorthing1));
mapPar.lg1LE->setText(QString::number(((MapUTM*)aMap)->utmEasting1));
mapPar.x1LE->setText(QString::number(((MapUTM*)aMap)->x1));
mapPar.y1LE->setText(QString::number(((MapUTM*)aMap)->y1));
mapPar.lt2LE->setText(QString::number(((MapUTM*)aMap)->utmNorthing2));
mapPar.lg2LE->setText(QString::number(((MapUTM*)aMap)->utmEasting2));
mapPar.x2LE->setText(QString::number(((MapUTM*)aMap)->x2));
mapPar.y2LE->setText(QString::number(((MapUTM*)aMap)->y2));
break;
case 3: // TM
aMap->calcPos(pos, ((MapUTM *)aMap)->x1, ((MapUTM *)aMap)->y1);
mapPar.lg1LE->setText(Position::string(pos.lon, Position::Lon));
mapPar.lt1LE->setText(Position::string(pos.lat, Position::Lat));
mapPar.x1LE->setText(QString::number(((MapUTM *)aMap)->x1));
mapPar.y1LE->setText(QString::number(((MapUTM *)aMap)->y1));
aMap->calcPos(pos, ((MapUTM *)aMap)->x2, ((MapUTM *)aMap)->y2);
mapPar.lg2LE->setText(Position::string(pos.lon, Position::Lon));
mapPar.lt2LE->setText(Position::string(pos.lat, Position::Lat));
mapPar.x2LE->setText(QString::number(((MapUTM *)aMap)->x2));
mapPar.y2LE->setText(QString::number(((MapUTM *)aMap)->y2));
mapPar.stdLongLE->setText(Position::string(
rad2deg(((MapUTM *)aMap)->stdLon), Position::Lon));
break;
case 4: // MERCATOR
aMap->calcPos(pos, ((MapMercator *)aMap)->x1, ((MapMercator *)aMap)->y1);
mapPar.lg1LE->setText(Position::string(pos.lon, Position::Lon));
mapPar.lt1LE->setText(Position::string(pos.lat, Position::Lat));
mapPar.x1LE->setText(QString::number(((MapMercator *)aMap)->x1));
mapPar.y1LE->setText(QString::number(((MapMercator *)aMap)->y1));
aMap->calcPos(pos, ((MapMercator *)aMap)->x2, ((MapMercator *)aMap)->y2);
mapPar.lg2LE->setText(Position::string(pos.lon, Position::Lon));
mapPar.lt2LE->setText(Position::string(pos.lat, Position::Lat));
mapPar.x2LE->setText(QString::number(((MapMercator *)aMap)->x2));
mapPar.y2LE->setText(QString::number(((MapMercator *)aMap)->y2));
break;
case 5: // LAMBERT
aMap->calcPos(pos, ((MapLambert *)aMap)->x1, ((MapLambert *)aMap)->y1);
mapPar.lg1LE->setText(Position::string(pos.lon, Position::Lon));
mapPar.lt1LE->setText(Position::string(pos.lat, Position::Lat));
mapPar.x1LE->setText(QString::number(((MapLambert *)aMap)->x1));
mapPar.y1LE->setText(QString::number(((MapLambert *)aMap)->y1));
aMap->calcPos(pos, ((MapLambert *)aMap)->x2, ((MapLambert *)aMap)->y2);
mapPar.lg2LE->setText(Position::string(pos.lon, Position::Lon));
mapPar.lt2LE->setText(Position::string(pos.lat, Position::Lat));
mapPar.x2LE->setText(QString::number(((MapLambert *)aMap)->x2));
mapPar.y2LE->setText(QString::number(((MapLambert *)aMap)->y2));
mapPar.stdLat1LE->setText(Position::string(
rad2deg(((MapLambert*)aMap)->std1Lat), Position::Lat));
mapPar.stdLat2LE->setText(Position::string(
rad2deg(((MapLambert*)aMap)->std2Lat), Position::Lat));
mapPar.refLongLE->setText(Position::string(
rad2deg(((MapLambert*)aMap)->refLon), Position::Lon));
break;
case 6: // FRITZ
mapPar.centerLongLE->setText(Position::string(
((MapFritz*)aMap)->center.lon, Position::Lon));
mapPar.centerLatLE->setText(Position::string(
((MapFritz*)aMap)->center.lat, Position::Lat));
break;
}
mapPar.exec();
if(mapPar.result()==QDialog::Accepted)
{
// remove orig map entry
mapSelector->delMap(idx);
/* transfer map parameters to map entry */
switch(mapPar.projectionCB->currentItem() )
{
case 0: // LINEAR
{
QString str = mapSelect->currentText() +" "+ mapPar.scaleLE->text() +" "+
str.setNum(image->width()) +" "+ str.setNum(image->height())
+" "+
QString::number(Position::number(mapPar.lg1LE->text(), Position::Lon)) +" "+
QString::number(Position::number(mapPar.lt1LE->text(), Position::Lat)) +" "+
mapPar.x1LE->text() +" "+ mapPar.y1LE->text() + " "+
QString::number(Position::number(mapPar.lg2LE->text(), Position::Lon)) +" "+
QString::number(Position::number(mapPar.lt2LE->text(), Position::Lat)) +" "+
mapPar.x2LE->text() +" "+ mapPar.y2LE->text();
MapLin * mapLin = new MapLin(str);
mapSelector->addMap(mapLin);
}
break;
case 1: // CEA
{
QString str = mapSelect->currentText() +" "+ mapPar.scaleLE->text() +" "+
str.setNum(image->width()) +" "+ str.setNum(image->height())
+" "+
QString::number(Position::number(mapPar.lg1LE->text(), Position::Lon)) +" "+
QString::number(Position::number(mapPar.lt1LE->text(), Position::Lat)) +" "+
mapPar.x1LE->text() +" "+ mapPar.y1LE->text() + " "+
QString::number(Position::number(mapPar.lg2LE->text(), Position::Lon)) +" "+
QString::number(Position::number(mapPar.lt2LE->text(), Position::Lat)) +" "+
mapPar.x2LE->text() +" "+ mapPar.y2LE->text();
MapCEA * mapCea = new MapCEA(str);
mapSelector->addMap(mapCea);
}
break;
case 2: // UTM
{
QString str = mapSelect->currentText() +" "+ mapPar.scaleLE->text() +" "+
str.setNum(image->width()) +" "+
str.setNum(image->height()) +" "+
mapPar.zoneLE->text() +" "+
mapPar.lt1LE->text() +" "+ mapPar.lg1LE->text() +" "+
mapPar.x1LE->text() +" "+ mapPar.y1LE->text() + " "+
mapPar.lt2LE->text() +" "+ mapPar.lg2LE->text() + " "+
mapPar.x2LE->text() +" "+ mapPar.y2LE->text();
MapUTM * mapUtm2 = new MapUTM(str, TRUE);
mapSelector->addMap(mapUtm2);
}
break;
case 3: // TM
{
QString str = mapSelect->currentText() +" "+ mapPar.scaleLE->text() +" "+
str.setNum(image->width()) +" "+
str.setNum(image->height())
+" "+
QString::number(Position::number(mapPar.lg1LE->text(), Position::Lon)) +" "+
QString::number(Position::number(mapPar.lt1LE->text(), Position::Lat)) +" "+
mapPar.x1LE->text() +" "+ mapPar.y1LE->text() + " "+
QString::number(Position::number(mapPar.lg2LE->text(), Position::Lon)) +" "+
QString::number(Position::number(mapPar.lt2LE->text(), Position::Lat)) +" "+
mapPar.x2LE->text() +" "+ mapPar.y2LE->text() +
" "+ QString::number(Position::number(mapPar.stdLongLE->text(), Position::Lon));
MapUTM * mapUtm3 = new MapUTM(str, FALSE);
mapSelector->addMap(mapUtm3);
}
break;
case 4: // MERCATOR
{
QString str = mapSelect->currentText() +" "+ mapPar.scaleLE->text() +" "+
str.setNum(image->width()) +" "+ str.setNum(image->height())
+" "+
QString::number(Position::number(mapPar.lg1LE->text(), Position::Lon)) +" "+
QString::number(Position::number(mapPar.lt1LE->text(), Position::Lon)) +" "+
mapPar.x1LE->text() +" "+ mapPar.y1LE->text() + " "+
QString::number(Position::number(mapPar.lg2LE->text(), Position::Lon)) +" "+
QString::number(Position::number(mapPar.lt2LE->text(), Position::Lon)) +" "+
mapPar.x2LE->text() +" "+ mapPar.y2LE->text();
MapMercator * mapMercator = new MapMercator(str);
mapSelector->addMap(mapMercator);
}
break;
case 5: // LAMBERT
{
QString str = mapSelect->currentText() +" "+ mapPar.scaleLE->text() +" "+
str.setNum(image->width()) +" "+ str.setNum(image->height())
+" "+
QString::number(Position::number(mapPar.lg1LE->text(), Position::Lon)) +" "+
QString::number(Position::number(mapPar.lt1LE->text(), Position::Lat)) +" "+
mapPar.x1LE->text() +" "+ mapPar.y1LE->text() + " "+
QString::number(Position::number(mapPar.lg2LE->text(), Position::Lon)) +" "+
QString::number(Position::number(mapPar.lt2LE->text(), Position::Lat)) +" "+
mapPar.x2LE->text() +" "+ mapPar.y2LE->text() +
" "+ QString::number(Position::number(mapPar.stdLat1LE->text(), Position::Lat)) +" "+
QString::number(Position::number(mapPar.stdLat2LE->text(), Position::Lat)) +" "+
QString::number(Position::number(mapPar.refLongLE->text(), Position::Lon));
MapLambert * mapLambert = new MapLambert(str);
mapSelector->addMap(mapLambert);
}
break;
case 6: // FRITZ
{
QString str = mapSelect->currentText() +" "+ mapPar.scaleLE->text() +" "+
str.setNum(image->width()) +" "+ str.setNum(image->height())
+" "+ QString::number(Position::number(mapPar.centerLatLE->text(), Position::Lat)) +" "+
QString::number(Position::number(mapPar.centerLongLE->text(), Position::Lon));
MapFritz * mapFritz = new MapFritz(str);
mapSelector->addMap(mapFritz);
}
break;
}
mapSelector->writeMapFile();
mapListChanged();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -