remove qtosgviewwidget
This commit is contained in:
parent
63fd5665f8
commit
7d8e072bfe
@ -1270,18 +1270,18 @@
|
|||||||
<context>
|
<context>
|
||||||
<name>QtOsgViewWidget</name>
|
<name>QtOsgViewWidget</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../viewer/QtOsgViewWidget.cpp" line="369"/>
|
<location filename="../viewer/QtOsgViewWidget.cpp" line="131"/>
|
||||||
<location filename="../viewer/QtOsgViewWidget.cpp" line="377"/>
|
<location filename="../viewer/QtOsgViewWidget.cpp" line="139"/>
|
||||||
<source>warning</source>
|
<source>warning</source>
|
||||||
<translation type="unfinished">警告</translation>
|
<translation type="unfinished">警告</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../viewer/QtOsgViewWidget.cpp" line="369"/>
|
<location filename="../viewer/QtOsgViewWidget.cpp" line="131"/>
|
||||||
<source>default workspace failed</source>
|
<source>default workspace failed</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../viewer/QtOsgViewWidget.cpp" line="377"/>
|
<location filename="../viewer/QtOsgViewWidget.cpp" line="139"/>
|
||||||
<source>open dyt file failed</source>
|
<source>open dyt file failed</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -33,142 +33,6 @@
|
|||||||
#include "ui/MainFrame.h"
|
#include "ui/MainFrame.h"
|
||||||
|
|
||||||
|
|
||||||
double normalizeScaleMeters(double meters) {
|
|
||||||
if (meters <= 3) {
|
|
||||||
meters = 1;
|
|
||||||
} else if (meters <= 7.5) {
|
|
||||||
meters = 5;
|
|
||||||
} else if (meters <= 15) {
|
|
||||||
meters = 10;
|
|
||||||
} else if (meters <= 35) {
|
|
||||||
meters = 20;
|
|
||||||
} else if (meters <= 75) {
|
|
||||||
meters = 50;
|
|
||||||
} else if (meters <= 150) {
|
|
||||||
meters = 100;
|
|
||||||
} else if (meters <= 350) {
|
|
||||||
meters = 200;
|
|
||||||
} else if (meters <= 750) {
|
|
||||||
meters = 500;
|
|
||||||
} else if (meters <= 1500) {
|
|
||||||
meters = 1000;
|
|
||||||
} else if (meters <= 3500) {
|
|
||||||
meters = 2000;
|
|
||||||
} else if (meters <= 7500) {
|
|
||||||
meters = 5000;
|
|
||||||
} else if (meters <= 15000) {
|
|
||||||
meters = 10000;
|
|
||||||
} else if (meters <= 35000) {
|
|
||||||
meters = 20000;
|
|
||||||
} else if (meters <= 55000) {
|
|
||||||
meters = 50000;
|
|
||||||
} else if (meters <= 150000) {
|
|
||||||
meters = 100000;
|
|
||||||
} else if (meters <= 350000) {
|
|
||||||
meters = 200000;
|
|
||||||
} else if (meters <= 750000) {
|
|
||||||
meters = 500000;
|
|
||||||
} else if (meters <= 1500000) {
|
|
||||||
meters = 1000000;
|
|
||||||
} else {
|
|
||||||
meters = 2000000;
|
|
||||||
}
|
|
||||||
return meters;
|
|
||||||
}
|
|
||||||
|
|
||||||
double normalizeScaleFeet(double feet) {
|
|
||||||
double feetPerMile = 5280.0;
|
|
||||||
if (feet <= 7.5) {
|
|
||||||
feet = 5;
|
|
||||||
} else if (feet <= 15) {
|
|
||||||
feet = 10;
|
|
||||||
} else if (feet <= 35) {
|
|
||||||
feet = 20;
|
|
||||||
} else if (feet <= 75) {
|
|
||||||
feet = 50;
|
|
||||||
} else if (feet <= 150) {
|
|
||||||
feet = 100;
|
|
||||||
} else if (feet <= 350) {
|
|
||||||
feet = 200;
|
|
||||||
} else if (feet <= 750) {
|
|
||||||
feet = 500;
|
|
||||||
} else if (feet <= 1500) {
|
|
||||||
feet = 1000;
|
|
||||||
} else if (feet <= 3640) {
|
|
||||||
feet = 2000;
|
|
||||||
} else if (feet <= 1.5 * feetPerMile) {
|
|
||||||
feet = 1 * feetPerMile;
|
|
||||||
} else if (feet <= 3.5 * feetPerMile) {
|
|
||||||
feet = 2 * feetPerMile;
|
|
||||||
} else if (feet <= 7.5 * feetPerMile) {
|
|
||||||
feet = 5 * feetPerMile;
|
|
||||||
} else if (feet <= 15 * feetPerMile) {
|
|
||||||
feet = 10 * feetPerMile;
|
|
||||||
} else if (feet <= 35 * feetPerMile) {
|
|
||||||
feet = 20 * feetPerMile;
|
|
||||||
} else if (feet <= 75 * feetPerMile) {
|
|
||||||
feet = 50 * feetPerMile;
|
|
||||||
} else if (feet <= 150 * feetPerMile) {
|
|
||||||
feet = 100 * feetPerMile;
|
|
||||||
} else if (feet <= 350 * feetPerMile) {
|
|
||||||
feet = 200 * feetPerMile;
|
|
||||||
} else if (feet <= 750 * feetPerMile) {
|
|
||||||
feet = 500 * feetPerMile;
|
|
||||||
} else if (feet <= 1500 * feetPerMile) {
|
|
||||||
feet = 1000 * feetPerMile;
|
|
||||||
} else {
|
|
||||||
feet = 2000 * feetPerMile;
|
|
||||||
}
|
|
||||||
return feet;
|
|
||||||
}
|
|
||||||
|
|
||||||
double normalizeScaleNauticalMiles(double nmi) {
|
|
||||||
//double feetPerMile = 6076.12;
|
|
||||||
if (nmi <= 0.0015) {
|
|
||||||
nmi = 0.001;
|
|
||||||
} else if (nmi <= 0.0035) {
|
|
||||||
nmi = 0.002;
|
|
||||||
} else if (nmi <= 0.0075) {
|
|
||||||
nmi = 0.005;
|
|
||||||
} else if (nmi <= 0.015) {
|
|
||||||
nmi = 0.01;
|
|
||||||
} else if (nmi <= 0.035) {
|
|
||||||
nmi = 0.02;
|
|
||||||
} else if (nmi <= 0.075) {
|
|
||||||
nmi = 0.05;
|
|
||||||
} else if (nmi <= 0.15) {
|
|
||||||
nmi = 0.1;
|
|
||||||
} else if (nmi <= 0.35) {
|
|
||||||
nmi = 0.2;
|
|
||||||
} else if (nmi <= 0.75) {
|
|
||||||
nmi = 0.5;
|
|
||||||
} else if (nmi <= 1.5) {
|
|
||||||
nmi = 1;
|
|
||||||
} else if (nmi <= 3.5) {
|
|
||||||
nmi = 2;
|
|
||||||
} else if (nmi <= 7.5) {
|
|
||||||
nmi = 5;
|
|
||||||
} else if (nmi <= 15) {
|
|
||||||
nmi = 10;
|
|
||||||
} else if (nmi <= 35) {
|
|
||||||
nmi = 20;
|
|
||||||
} else if (nmi <= 75) {
|
|
||||||
nmi = 50;
|
|
||||||
} else if (nmi <= 150) {
|
|
||||||
nmi = 100;
|
|
||||||
} else if (nmi <= 350) {
|
|
||||||
nmi = 200;
|
|
||||||
} else if (nmi <= 750) {
|
|
||||||
nmi = 500;
|
|
||||||
} else if (nmi <= 1500) {
|
|
||||||
nmi = 1000;
|
|
||||||
} else {
|
|
||||||
nmi = 2000;
|
|
||||||
}
|
|
||||||
return nmi;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
QtOsgViewWidget::QtOsgViewWidget(QWidget* parent)
|
QtOsgViewWidget::QtOsgViewWidget(QWidget* parent)
|
||||||
: QWidget(parent) {
|
: QWidget(parent) {
|
||||||
LOG_INFO("actor, self={}", fmt::ptr(this));
|
LOG_INFO("actor, self={}", fmt::ptr(this));
|
||||||
@ -196,108 +60,6 @@ void QtOsgViewWidget::keyReleaseEvent(QKeyEvent* event) {
|
|||||||
view_->KeyRelease(event);
|
view_->KeyRelease(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QtOsgViewWidget::OnComputeScale() {
|
|
||||||
osgEarth::MapNode* mapNode = activeScene_->GetMapNode();
|
|
||||||
if (nullptr == mapNode || nullptr == mapNode->getTerrain()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
dyt_check(nullptr != view_);
|
|
||||||
|
|
||||||
float x = 0.0f, y = 0.0f;
|
|
||||||
osg::Vec3d world1, world2;
|
|
||||||
if (!mapNode->getTerrain()->getWorldCoordsUnderMouse(view_->GetView(), x, y, world1)) {
|
|
||||||
emit signalScaleInfo("");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
x += devicePixelRatio_;
|
|
||||||
if (!mapNode->getTerrain()->getWorldCoordsUnderMouse(view_->GetView(), x, y, world2)) {
|
|
||||||
emit signalScaleInfo("");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
TRACE("w1: %g %g %g w2: %g %g %g",
|
|
||||||
world1.x(), world1.y(), world1.z(),
|
|
||||||
world2.x(), world2.y(), world2.z());
|
|
||||||
#endif
|
|
||||||
|
|
||||||
double meters;
|
|
||||||
double radius = 6378137.0;
|
|
||||||
dyt_check(nullptr != g_srs_);
|
|
||||||
radius = g_srs_->getEllipsoid().getRadiusEquator();
|
|
||||||
|
|
||||||
if (!g_srs_->isGeocentric() ) {
|
|
||||||
// TRACE("Map is geographic");
|
|
||||||
// World cords are already lat/long
|
|
||||||
// Compute great circle distance
|
|
||||||
meters = osgEarth::GeoMath::distance(world1, world2, g_srs_);
|
|
||||||
} else {
|
|
||||||
osgEarth::GeoPoint mapPoint1, mapPoint2;
|
|
||||||
mapPoint1.fromWorld(g_srs_, world1);
|
|
||||||
mapPoint1.makeGeographic();
|
|
||||||
mapPoint2.fromWorld(g_srs_, world2);
|
|
||||||
mapPoint2.makeGeographic();
|
|
||||||
// Compute great circle distance
|
|
||||||
meters = osgEarth::GeoMath::distance(osg::DegreesToRadians(mapPoint1.y()),
|
|
||||||
osg::DegreesToRadians(mapPoint1.x()),
|
|
||||||
osg::DegreesToRadians(mapPoint2.y()),
|
|
||||||
osg::DegreesToRadians(mapPoint2.x()),
|
|
||||||
radius);
|
|
||||||
}
|
|
||||||
|
|
||||||
double scale = meters / devicePixelRatio_;
|
|
||||||
double pixelWidth = devicePixelRatio_ * 2.0;
|
|
||||||
// 1mi = 5280 feet
|
|
||||||
//double scaleMiles = scale / 1609.344; // International mile = 1609.344m
|
|
||||||
//double scaleNauticalMiles = scale / 1852.0; // nautical mile = 1852m
|
|
||||||
//double scaleUSSurveyMiles = scale / 1609.347218694; // US survey mile = 5280 US survey feet
|
|
||||||
//double scaleUSSurveyFeet = scale * 3937.0/1200.0; // US survey foot = 1200/3937 m
|
|
||||||
#if 0
|
|
||||||
TRACE("m: %g px: %g m/px: %g", meters, pixelWidth, scale);
|
|
||||||
#endif
|
|
||||||
switch (scaleUnits_) {
|
|
||||||
case ScaleBarHandler::Delegate::Units::UNITS_NAUTICAL_MILES: {
|
|
||||||
double nmi = meters / 1852.0;
|
|
||||||
scale = nmi / devicePixelRatio_;
|
|
||||||
nmi = normalizeScaleNauticalMiles(nmi);
|
|
||||||
pixelWidth = nmi / scale;
|
|
||||||
emit signalScaleInfo(QString("%1 nmi").arg(nmi));
|
|
||||||
} break;
|
|
||||||
case ScaleBarHandler::Delegate::Units::UNITS_US_SURVEY_FEET: {
|
|
||||||
double feet = meters * 3937.0 / 1200.0;
|
|
||||||
scale = feet / pixelWidth;
|
|
||||||
feet = normalizeScaleFeet(feet);
|
|
||||||
pixelWidth = feet / scale;
|
|
||||||
if (feet >= 5280) {
|
|
||||||
emit signalScaleInfo(QString("%1 miUS").arg(feet / 5280.0));
|
|
||||||
} else {
|
|
||||||
emit signalScaleInfo(QString("%1 ftUS").arg(feet));
|
|
||||||
}
|
|
||||||
} break;
|
|
||||||
case ScaleBarHandler::Delegate::Units::UNITS_INTL_FEET: {
|
|
||||||
double feet = 5280.0 * meters / 1609.344;
|
|
||||||
scale = feet / pixelWidth;
|
|
||||||
feet = normalizeScaleFeet(feet);
|
|
||||||
pixelWidth = feet / scale;
|
|
||||||
if (feet >= 5280) {
|
|
||||||
emit signalScaleInfo(QString("%1 mi").arg(feet / 5280.0));
|
|
||||||
} else {
|
|
||||||
emit signalScaleInfo(QString("%1 ft").arg(feet));
|
|
||||||
}
|
|
||||||
} break;
|
|
||||||
case ScaleBarHandler::Delegate::Units::UNITS_METERS:
|
|
||||||
default: {
|
|
||||||
meters = normalizeScaleMeters(meters);
|
|
||||||
pixelWidth = meters / scale;
|
|
||||||
if (meters >= 1000) {
|
|
||||||
emit signalScaleInfo(QString("%1 km").arg(meters * 0.001));
|
|
||||||
} else {
|
|
||||||
emit signalScaleInfo(QString("%1 m").arg(meters));
|
|
||||||
}
|
|
||||||
} break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void QtOsgViewWidget::Initialize(void) {
|
void QtOsgViewWidget::Initialize(void) {
|
||||||
if (view_) {
|
if (view_) {
|
||||||
LOG_INFO("view is created");
|
LOG_INFO("view is created");
|
||||||
|
@ -13,7 +13,7 @@ class QKeyEvent;
|
|||||||
class QInputEvent;
|
class QInputEvent;
|
||||||
class QResizeEvent;
|
class QResizeEvent;
|
||||||
|
|
||||||
class QtOsgViewWidget : public QWidget, public ScaleBarHandler::Delegate {
|
class QtOsgViewWidget : public QWidget {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit QtOsgViewWidget(QWidget* parent = nullptr);
|
explicit QtOsgViewWidget(QWidget* parent = nullptr);
|
||||||
@ -24,8 +24,6 @@ public:
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnComputeScale() override;
|
|
||||||
|
|
||||||
void Initialize(void);
|
void Initialize(void);
|
||||||
void Uninitialize(void);
|
void Uninitialize(void);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user