def calcRadiusArea3(self):
        try:
            pdg = 0.0
            try:
                pdg = float(self.parametersPanel.txtPdg.text())
            except:
                pass

            dist1 = math.fabs((Altitude(
                float(self.parametersPanel.txtTurningAltitude.text()),
                AltitudeUnits.FT).Metres - Altitude(
                    float(self.parametersPanel.txtNextSegmentAltitude.text()),
                    AltitudeUnits.FT).Metres) / (3.3 / 100.0))
            dist2 = math.fabs((
                Altitude(float(self.parametersPanel.txtTurningAltitude.text()),
                         AltitudeUnits.FT).Metres -
                float(self.parametersPanel.pnlDer.txtAltitudeM.text()) - 5.0) /
                              (pdg / 100.0))
            # print dist1, dist2
            self.parametersPanel.txtRadius.setText(str(round(dist1 + dist2,
                                                             4)))
            self.parametersPanel.txtRadiusFt.setText(
                str(round(Unit.ConvertMeterToNM(dist1 + dist2), 4)))
        except:
            pass
예제 #2
0
 def canvasMoveEvent(self, e):
     self.rubberBandPt.reset(QGis.Point)
     snapPoint = QgisHelper.snapPoint(e.pos(), self.mSnapper,
                                      define._canvas, True)
     if snapPoint != None:
         self.rubberBandPt.addPoint(snapPoint)
         self.rubberBandPt.show()
     if self.isDrawing:
         if self.isDrawing:
             if snapPoint == None:
                 self.endPoint = self.toMapCoordinates(e.pos())
             else:
                 self.endPoint = snapPoint
         self.rubberBand.movePoint(self.endPoint)
         dist1 = MathHelper.calcDistance(self.startPoint, self.endPoint)
         dist1 = self.distance + dist1
         if self.type == DistanceUnits.M:
             self.txtBearing.setText("%f" % round(dist1, 4))
         elif self.type == DistanceUnits.NM:
             self.txtBearing.setText("%f" %
                                     round(Unit.ConvertMeterToNM(dist1), 4))
         elif self.type == DistanceUnits.FT:
             self.txtBearing.setText(
                 "%f" % round(Unit.ConvertMeterToFeet(dist1), 4))
         elif self.type == DistanceUnits.KM:
             self.txtBearing.setText("%f" % round((dist1 / 1000), 4))
         elif self.type == DistanceUnits.MM:
             self.txtBearing.setText(str(int(dist1 * 1000)))
예제 #3
0
 def canvasReleaseEvent(self, e):
     if ( e.button() == Qt.RightButton ):  
         self.reset()
         self.emit(SIGNAL("captureFinished"))
     else:
         self.rubberBandPt.reset(QGis.Point)
         snapPoint = QgisHelper.snapPoint(e.pos(), self.mSnapper, define._canvas, True)            
         if self.startPoint == None:
             self.rubberBand.reset(QGis.Line)
             if snapPoint == None:
                 self.startPoint = self.toMapCoordinates(e.pos())
             else:
                 self.startPoint = snapPoint
             self.rubberBand.addPoint(self.startPoint)
             self.isDrawing = True
         else:
             if snapPoint == None:
                 self.endPoint = self.toMapCoordinates(e.pos())
             else:
                 self.endPoint = snapPoint
             self.rubberBand.addPoint(self.endPoint)
             dist = MathHelper.calcDistance(self.startPoint, self.endPoint)
                 
             self.distance = self.distance + dist
             if self.type == DistanceUnits.M:
                 self.txtBearing.setText("%f"%round(self.distance, 4))
             elif self.type == DistanceUnits.NM:
                 self.txtBearing.setText("%f"%round(Unit.ConvertMeterToNM(self.distance), 4))
             elif self.type == DistanceUnits.FT:
                 self.txtBearing.setText("%f"%round(Unit.ConvertMeterToFeet(self.distance), 4))
             elif self.type == DistanceUnits.KM:
                 self.txtBearing.setText("%f"%round((self.distance / 1000), 4))
             elif self.type == DistanceUnits.MM:
                 self.txtBearing.setText(str(int(self.distance * 1000)))
             self.startPoint = self.endPoint
 def txtDistanceChanged(self):
     if self.distanceUnit1 != None:
         try:
             test = float(self.txtDistance.text())
             if self.flag == 0:
                 self.flag = 2
             if self.flag == 1:
                 self.flag = 0
             if self.flag == 2:
                 try:
                     self.txtDistance1.setText(
                         str(
                             round(
                                 Unit.ConvertMeterToNM(
                                     float(self.txtDistance.text())), 4)))
                 except:
                     self.txtDistance1.setText("0.0")
                 self.emit(SIGNAL("Event_0"), self)
         except:
             str0 = "You must input the float type in \"%s\"." % (
                 self.Caption)
             QMessageBox.warning(self, "Warning", str0)
             self.txtDistance1.setText("0.0")
     else:
         try:
             test = float(self.txtDistance.text())
             self.emit(SIGNAL("Event_0"), self)
         except:
             str0 = "You must input the float type in \"%s\"." % (
                 self.Caption)
             QMessageBox.warning(self, "Warning", str0)
             self.txtDistance.setText("0.0")
    def changeType(self):

        if self.ui.txtToal != "" and self.ui.cmbMeasureType.currentIndex(
        ) != self.measureType:
            if self.measureType == DistanceUnits.M:
                if self.ui.cmbMeasureType.currentIndex() == DistanceUnits.FT:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(str(Unit.ConvertMeterToFeet(dist)))
                elif self.ui.cmbMeasureType.currentIndex() == DistanceUnits.KM:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(str(dist / 1000.0))
                elif self.ui.cmbMeasureType.currentIndex() == DistanceUnits.NM:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(str(Unit.ConvertMeterToNM(dist)))
            elif self.measureType == DistanceUnits.FT:
                if self.ui.cmbMeasureType.currentIndex() == DistanceUnits.M:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(str(Unit.ConvertFeetToMeter(dist)))
                elif self.ui.cmbMeasureType.currentIndex() == DistanceUnits.KM:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(
                        str(Unit.ConvertFeetToMeter(dist) / 1000.0))
                elif self.ui.cmbMeasureType.currentIndex() == DistanceUnits.NM:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(str(Unit.ConvertFeetToNM(dist)))
            elif self.measureType == DistanceUnits.KM:
                if self.ui.cmbMeasureType.currentIndex() == DistanceUnits.M:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(str(Unit.ConvertKMToMeters(dist)))
                elif self.ui.cmbMeasureType.currentIndex() == DistanceUnits.FT:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(str(Unit.ConvertKMToFeet(dist)))
                elif self.ui.cmbMeasureType.currentIndex() == DistanceUnits.NM:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(str(Unit.ConvertKMToNM(dist)))
            elif self.measureType == DistanceUnits.NM:
                if self.ui.cmbMeasureType.currentIndex() == DistanceUnits.M:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(str(Unit.ConvertNMToMeter(dist)))
                elif self.ui.cmbMeasureType.currentIndex() == DistanceUnits.FT:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(
                        str(
                            Unit.ConvertMeterToFeet(
                                Unit.ConvertNMToMeter(dist))))
                elif self.ui.cmbMeasureType.currentIndex() == DistanceUnits.KM:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(
                        str(Unit.ConvertNMToMeter(dist) / 1000.0))

        self.measureType = self.ui.cmbMeasureType.currentIndex()
    def method_29(self):
        self.dmeTolerance = Distance.NaN
        self.slantTolerance = Distance.NaN
        self.pilotDistance = Distance.NaN
        self.groundDistance = Distance.NaN
        if self.parametersPanel.txtDistance.text() == "" or self.parametersPanel.txtAcAltitude.text() == "" or self.parametersPanel.txtDmeAltitude.text() == "":
            self.parametersPanel.gbResult.setVisible(False)
        else:
            nauticalMiles = float(self.parametersPanel.txtDistance.text())
            metres = Altitude(float(self.parametersPanel.txtAcAltitude.text()), AltitudeUnits.FT).Metres
            value = Altitude(float(self.parametersPanel.txtDmeAltitude.text()))
            num = Unit.ConvertMeterToNM(metres - value.Metres)
            if (nauticalMiles <= 0):
                self.parametersPanel.label_72.setText(Captions.DME_TOLERANCE_OVERHEAD)
                self.dmeTolerance = Distance(460)
            elif (num <= nauticalMiles):
                if (self.parametersPanel.cmbCalculationType.currentIndex() != 0):
                    self.groundDistance = Distance(math.sqrt(nauticalMiles * nauticalMiles - num * num), DistanceUnits.NM)
                    self.pilotDistance = Distance(nauticalMiles, DistanceUnits.NM)
                    self.slantTolerance = Distance(self.pilotDistance.NauticalMiles - self.groundDistance.NauticalMiles, DistanceUnits.NM)
                    self.parametersPanel.lblResultDistance.setText(Captions.GROUND_DISTANCE)
                    self.parametersPanel.label_72.setText(Captions.DME_TOLERANCE)
                    self.parametersPanel.txtResultDistance.setText(str(round(self.groundDistance.NauticalMiles,2)) +" nm" + " / " + str(round(self.groundDistance.Metres,2)) +" m")
                else:
                    self.pilotDistance = Distance(math.sqrt(nauticalMiles * nauticalMiles + num * num), DistanceUnits.NM)
                    self.groundDistance = Distance(nauticalMiles, DistanceUnits.NM)
                    self.slantTolerance = Distance(nauticalMiles - math.sqrt(nauticalMiles * nauticalMiles - num * num), DistanceUnits.NM)
                    self.parametersPanel.lblResultDistance.setText(Captions.PILOT_READOUT)
                    self.parametersPanel.label_72.setText(Captions.DME_TOLERANCE)
                    self.parametersPanel.txtResultDistance.setText(str(round(self.pilotDistance.NauticalMiles, 2)) +" nm" + " / " + str(round(self.pilotDistance.Metres, 2)) +" m")
                
                self.dmeTolerance = Distance(Unit.ConvertNMToMeter(self.pilotDistance.NauticalMiles * 0.0125) + 460)
            else:
                flag = False
            if (self.dmeTolerance.IsValid()):
                self.parametersPanel.txtResultDmeTol.setText(str(round(self.dmeTolerance.NauticalMiles, 2)) +" nm" + " / " + str(round(self.dmeTolerance.Metres, 2)) +" m")
            
            if (self.slantTolerance.IsValid()):
                self.parametersPanel.txtResultSlantTol.setText(str(round(self.slantTolerance.NauticalMiles, 2)) +"nm" + " / " + str(round(self.slantTolerance.Metres, 2)) +" m")
            self.parametersPanel.frame_62.setVisible(False if not self.pilotDistance.IsValid() else self.groundDistance.IsValid())
            self.parametersPanel.frame_TakeOffSurfaceTrack_2.setVisible(self.dmeTolerance.IsValid())
            self.parametersPanel.frame_TakeOffSurfaceTrack_3.setVisible(self.slantTolerance.IsValid())
#                 self.txtResult.Visible = !flag
            self.parametersPanel.gbResult.setVisible(True)
예제 #7
0
 def smethod_2(position_0, position_1):
     return Distance(
         Unit.ConvertMeterToNM(
             MathHelper.calcDistance(position_0, position_1)),
         DistanceUnits.NM)