Esempio n. 1
0
 def smethod_0(binaryReader_0, byte_0):
     if not isinstance(binaryReader_0, QDataStream):
         return
     position = Position()
     fato = Fato()
     if (byte_0 != 1):
         raise Messages.ERR_INVALID_FILE_FORMAT
         # throw new Exception(Messages.ERR_INVALID_FILE_FORMAT)
     fato.name = binaryReader_0.readQString()
     fato.des1 = binaryReader_0.readQString()
     fato.des2 = binaryReader_0.readQString()
     fato.safetyAreaWidth = binaryReader_0.readDouble()
     fato.safetyAreaStart = binaryReader_0.readDouble()
     fato.safetyAreaEnd = binaryReader_0.readDouble()
     num = binaryReader_0.readInt()
     for i in range(num):
         positionType = binaryReader_0.readInt()
         flag = binaryReader_0.readBool()
         if (binaryReader_0.readBool()):
             position = Position(
                 positionType, None, None, None,
                 Altitude(binaryReader_0.readDouble()),
                 Degrees.smethod_1(binaryReader_0.readDouble()),
                 Degrees.smethod_5(binaryReader_0.readDouble())) if (
                     not flag) else Position(
                         positionType, None, binaryReader_0.readDouble(),
                         binaryReader_0.readDouble(),
                         Altitude(binaryReader_0.readDouble()))
             if (i >= 3):
                 fato.Add(position)
             else:
                 fato[i] = position
     return fato
    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
Esempio n. 3
0
 def method_4(self):
     if (self.xy):
         return Position(self.type, self.id, self.xlat, self.ylon,
                         Altitude(self.altitude))
     return Position(self.type, self.id, None, None,
                     Altitude(self.altitude), Degrees.smethod_1(self.xlat),
                     Degrees.smethod_5(self.ylon))
Esempio n. 4
0
 def method_2(self, point3d_0):
     if (not self.Assigned):
         return Altitude(point3d_0.z())
     if self.eqAltitude != None:
         return Altitude(self.eqAltitude)
     position = self.Obstacle.position
     return Altitude(position.z() + self.Obstacle.trees)
    def initObstaclesModel(self):
        ObstacleTable.MocMultiplier = self.parametersPanel.mocSpinBox.value()
        self.obstaclesModel = HoldingRnpObstacles(
            self.surfaceList,
            Altitude(float(self.parametersPanel.txtMoc.text())),
            Altitude(float(self.parametersPanel.txtAltitude.text()),
                     AltitudeUnits.FT))

        return FlightPlanBaseDlg.initObstaclesModel(self)
 def method_3(self, altitude_0):
     altitude = Altitude(0)
     try:
         altitude = Altitude(float(self.txtAltitude.text()), AltitudeUnits.FT)
     except:
         altitude = Altitude(0)
     if (self.cmbType.currentIndex() != 0):
         return altitude
     return Altitude(altitude.Feet - altitude_0.Feet, AltitudeUnits.FT);
Esempio n. 7
0
    def method_13(self, rnavSegmentType, altitudeUnits_0):
        self.setFilterFixedString(rnavSegmentType)
        self.sort(self.IndexOcaM, Qt.DescendingOrder)

        if (self.rowCount() == 0):
            return Captions.GROUND_PLANE
        num1 = 5
        num2 = 10
        if (rnavSegmentType == RnavSegmentType.Initial1
                or rnavSegmentType == RnavSegmentType.Initial2
                or rnavSegmentType == RnavSegmentType.Initial3
                or rnavSegmentType == RnavSegmentType.Intermediate):
            num1 = 50
            num2 = 100
        if (rnavSegmentType != RnavSegmentType.MissedApproach):
            num = self.data(self.index(
                0, self.IndexOcaFt), Qt.DisplayRole).toDouble(
                )[0] if altitudeUnits_0 != AltitudeUnits.M else self.data(
                    self.index(0, self.IndexOcaM),
                    Qt.DisplayRole).toDouble()[0]
        else:
            num3 = -10000
            num4 = -10000
            isCritical = self.data(self.index(0, self.IndexCritical),
                                   Qt.DisplayRole).toString()
            if self.rowCount() > 0:
                ocaFt = self.data(self.index(0, self.IndexOcaFt),
                                  Qt.DisplayRole)
                ocaM = self.data(self.index(0, self.IndexOcaM), Qt.DisplayRole)
                num3 = ocaFt.toDouble(
                )[0] if altitudeUnits_0 != AltitudeUnits.M else ocaM.toDouble(
                )[0]

            if self.rowCount(
            ) > 1:  #and self.data(self.index(1, self.IndexCritical), Qt.DisplayRole).toString() == CriticalObstacleType.Yes == CriticalObstacleType.Yes:
                ocaFt = self.data(self.index(1, self.IndexOcaFt),
                                  Qt.DisplayRole)
                ocaM = self.data(self.index(1, self.IndexOcaM), Qt.DisplayRole)
                num4 = ocaFt.toDouble(
                )[0] if altitudeUnits_0 != AltitudeUnits.M else ocaM.toDouble(
                )[0]

            num = max([num3, num4])
        if (altitudeUnits_0 == AltitudeUnits.M):
            num5 = num % num1
            if num5 > 0:
                num = num + (num1 - num5)
            altitude = Altitude(round(num))
            return str(altitude.Metres) + " m"
        if (altitudeUnits_0 != AltitudeUnits.FT):
            raise UserWarning, Messages.ERR_INVALID_ALTITUDE_UNITS
        num6 = num % num2
        if (num6 > 0):
            num = num + (num2 - num6)
        altitude1 = Altitude(round(num), AltitudeUnits.FT)
        return str(altitude1.Feet) + " ft"
Esempio n. 8
0
 def ToString(self, format_0 = None):
     stringBuilder = StringBuilder()
     if format_0 == None:
         format_0 = ""
     if not isinstance(format_0, QString):
         format_0 = String.Str2QString(format_0)
     # if (provider == null)
     # {
     #     provider = CultureInfo.CurrentCulture
     # }
     if (not String.IsNullOrEmpty(format_0)):
         format_0 = format_0.toUpper()
         if (format_0.contains("QA:")):
             format_0 = format_0.replace("QA:", "")
             num = 0
             try:
                 num = int(format_0)
             except:
                 num = 0
             stringBuilder = StringBuilder()
             str0 = ""
             for i in range(num):
                 str0 = QString(String.Concat([str0, " "]))
             if (not String.IsNullOrEmpty(self.id)):
                 stringBuilder.AppendLine("{0}{1}\t{2}".format(str0, Captions.ID, self.id))
             if (not self.xy):
                 lATITUDE = Captions.LATITUDE
                 degree = Degrees.smethod_1(self.xlat)
                 stringBuilder.AppendLine("{0}{1}\t{2}".format(str0, lATITUDE, degree.method_2()))
                 lONGITUDE = Captions.LONGITUDE
                 degree1 = Degrees.smethod_5(self.ylon)
                 stringBuilder.Append("{0}{1}\t{2}".format(str0, lONGITUDE, degree1.method_2()))
             else:
                 stringBuilder.AppendLine("{0}{1}\t{2}".format(str0, Captions.X, str(self.xlat)))#.ToString(Formats.GridXYFormat, provider)))
                 stringBuilder.Append("{0}{1}\t{2}".format(str0, Captions.Y, str(self.ylon)))#.ToString(Formats.GridXYFormat, provider)))
             if (not self.altitude == None):
                 altitude = Altitude(self.altitude)
                 stringBuilder.AppendLine("")
                 aLTITUDE = [str0, Captions.ALTITUDE, altitude.ToString(":m"), altitude.ToString(":ft")]
                 stringBuilder.Append("{0}{1}\t{2} ({3})".format(str0, Captions.ALTITUDE, altitude.ToString(":m"), altitude.ToString(":ft")))
             return stringBuilder.ToString()
     stringBuilder = StringBuilder()
     if (not String.IsNullOrEmpty(self.id)):
         stringBuilder.Append(self.id + ", ")
     if (not self.xy):
         degree2 = Degrees.smethod_1(self.xlat)
         str1 = degree2.method_2()
         degree3 = Degrees.smethod_5(self.ylon)
         stringBuilder.Append(str1 + ", " + degree3.method_2())
     else:
         stringBuilder.Append(str(self.xlat) + ", " + str(self.ylon))
     if (not self.altitude == None):
         altitude1 = Altitude(self.altitude)
         stringBuilder.Append(", {0} ({1})", ", " + altitude1.ToString(":m") + " (" + altitude1.ToString(":ft") + ")")
     return stringBuilder.ToString()
Esempio n. 9
0
    def initParametersPan(self):
        ui = Ui_HoldingRace_P()
        self.parametersPanel = ui
        FlightPlanBaseDlg.initParametersPan(self)

        self.parametersPanel.txtTas.setEnabled(False)
        self.parametersPanel.pnlInsPos = PositionPanel(
            self.parametersPanel.gbVorDmePosition)
        #         self.parametersPanel.pnlInsPos.groupBox.setTitle("FAWP")
        self.parametersPanel.pnlInsPos.btnCalculater.hide()
        self.parametersPanel.pnlInsPos.hideframe_Altitude()
        self.parametersPanel.pnlInsPos.setObjectName("pnlInsPos")
        ui.vl_VorDmePosition.addWidget(self.parametersPanel.pnlInsPos)

        self.parametersPanel.pnlWind = WindPanel(
            self.parametersPanel.gbParameters)
        self.parametersPanel.pnlWind.lblIA.setMinimumSize(250, 0)
        self.parametersPanel.vl_gbParameters.insertWidget(
            6, self.parametersPanel.pnlWind)
        self.parametersPanel.pnlWind.setAltitude(
            Altitude(float(self.parametersPanel.txtAltitude.text()),
                     AltitudeUnits.FT))

        self.parametersPanel.cmbAircraftCategory.addItems(
            ["A", "B", "C", "D", "E", "H", "Custom"])
        #         self.parametersPanel.cmbOutboundLimit.addItems(["Time", "Distance From Waypoint"])
        #         self.parametersPanel.cmbConstruction.addItems(["2D", "3D"])
        self.parametersPanel.cmbOrientation.addItems(["Right", "Left"])

        self.parametersPanel.cmbAircraftCategory.setCurrentIndex(3)
        self.parametersPanel.frameAircraftCategory.hide()
        self.parametersPanel.frameMoc.hide()

        #         self.parametersPanel.cmbHoldingFunctionality.currentIndexChanged.connect(self.cmbHoldingFunctionalityCurrentIndexChanged)
        #         self.parametersPanel.cmbOutboundLimit.currentIndexChanged.connect(self.cmbOutboundLimitCurrentIndexChanged)
        #         self.parametersPanel.btnCaptureTrack.clicked.connect(self.captureBearing)
        #         self.parametersPanel.btnCaptureDistance.clicked.connect(self.measureDistance)
        #         self.parametersPanel.btnCaptureLength.clicked.connect(self.measureLength)
        self.parametersPanel.txtAltitude.textChanged.connect(
            self.altitudeChanged)
        #         self.parametersPanel.cmbAircraftCategory.currentIndexChanged.connect(self.changeCategory)
        #         self.parametersPanel.btnIasHelp.clicked.connect(self.iasHelpShow)
        self.parametersPanel.txtIas.textChanged.connect(self.iasChanged)
        self.parametersPanel.txtIsa.textChanged.connect(self.isaChanged)

        self.parametersPanel.txtTas.setText(
            str(
                Speed.smethod_0(
                    Speed(float(self.parametersPanel.txtIas.text())),
                    float(self.parametersPanel.txtIsa.text()),
                    Altitude(float(self.parametersPanel.txtAltitude.text()),
                             AltitudeUnits.FT)).Knots))
 def method_31(self):
     self.parametersPanel.pnlWind.setAltitude(
         Altitude(float(self.parametersPanel.txtAltitude.text()),
                  AltitudeUnits.FT))
     try:
         speed = Speed.smethod_0(
             Speed(float(self.parametersPanel.txtIas.text())),
             float(self.parametersPanel.txtIsa.text()),
             Altitude(float(self.parametersPanel.txtAltitude.text()),
                      AltitudeUnits.FT))
         self.parametersPanel.txtTas.setText(str(round(speed.Knots, 4)))
     except:
         raise ValueError("Value Invalid")
Esempio n. 11
0
    def txtAltitudeMChanged(self):
        try:
            test = float(self.txtAltitudeM.text())
            if self.flag == 0:
                self.flag = 2
            if self.flag == 1:
                self.flag = 0
            if self.flag == 2:
                try:
                    self.txtAltitude.setText(
                        str(
                            round(
                                Unit.ConvertMeterToFeet(
                                    float(self.txtAltitudeM.text())), 4)))
                except:
                    self.txtAltitude.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.txtAltitude.setText("0.0")
            self.txtAltitudeM.setText("0.0")

        try:
            self.altitude = Altitude(float(self.txtAltitude.text()),
                                     AltitudeUnits.FT)
        except:
            self.altitude = Altitude.NaN()
 def method_4(self):
     aSFA = None
     if (self.leg.Type == RnpArLegType.RF):
         if (self.ui.txtAltitude.text() != "" and self.ui.txtWind.text() != ""):
             if (self.leg.Segment == RnpArSegmentType.Final):
                 aSFA = self.group.IAS_FA;
             elif (self.leg.Segment != RnpArSegmentType.Initial):
                 if self.leg.Segment != RnpArSegmentType.Intermediate:
                     aSFA = self.group.IAS_MA
                 else:
                     aSFA = self.group.IAS_I
             else:
                 aSFA = self.group.IAS_IA
                 
             try:
                 altitude = Altitude(float(self.ui.txtAltitude.text()), AltitudeUnits.FT)
             except ValueError:
                 raise UserWarning, "Altitude Value is invalid!"
             speed = Speed.plus(Speed.smethod_0(aSFA, self.group.ISA, altitude) , Speed(float(self.ui.txtWind.text())))
             num = math.pow(speed.Knots, 2)
             value = Distance(float(self.ui.txtRadius.text()), DistanceUnits.M) 
             num1 = Unit.smethod_1(math.atan(num / (68625 * value.NauticalMiles)))
             num2 = 3431 * math.tan(Unit.ConvertDegToRad(num1)) / (3.14159265358979 * speed.Knots)
             self.ui.txtBank.setText(str(round(num1, 2)))
             self.ui.txtR.setText(str(round(num2, 2)))
             return
         self.ui.txtBank.setText("")
         self.ui.txtR.setText("")
    def btnEvaluate_Click(self):
        point3dCollection = None
        point3dCollection1 = None
        polylineArea = None
        polylineArea1 = None
        polylineArea2 = None
        primaryObstacleArea = None
        #         if (self.parametersPanel.cmbSelectionMode.currentText() == "Manual" and not self.pnlSelectionMode.method_0()):
        #             return;
        result, point3dCollection, point3dCollection1, polylineArea, polylineArea1, polylineArea2 = self.method_34(
        )
        if (not result):
            return
        point3d = self.parametersPanel.pnlDer.Point3d
        num = MathHelper.getBearing(self.parametersPanel.pnlRwyStart.Point3d,
                                    point3d)
        percent = float(self.parametersPanel.txtMoc.text())
        percent1 = float(self.parametersPanel.txtPdg.text())

        ObstacleTable.MocMultiplier = self.parametersPanel.mocSpinBox.value()
        self.obstaclesModel = DepartureOmnidirectionalObstacles(
            point3d, num,
            Altitude(float(self.parametersPanel.txtTurningAltitude.text()),
                     AltitudeUnits.FT), percent, percent1,
            self.parametersPanel.chbCatH.isChecked(), point3dCollection,
            point3dCollection1, polylineArea1, polylineArea2,
            self.manualPolygon)

        #
        return FlightPlanBaseDlg.btnEvaluate_Click(self)
Esempio n. 14
0
    def btnConstruct_Click(self):
        flag = FlightPlanBaseDlg.btnConstruct_Click(self)
        if not flag:
            return
        value = Speed(float(self.parametersPanel.txtIas.text()),SpeedUnits.KTS);
        if (self.parametersPanel.chbDeparture.isChecked()):
            value = value + (value / 10);
        altitude = Altitude(float(self.parametersPanel.txtAltitudeFt.text()), AltitudeUnits.FT);
        value1 = float(self.parametersPanel.txtIsa.text());
        num1 = float (self.parametersPanel.txtBankAngle.text());
        self.speedP = self.parametersPanel.pnlWind.Value;
        self.num2P = Unit.ConvertDegToRad(float(self.parametersPanel.txtTrackRadial.Value));
        self.orientationTypeP = self.parametersPanel.cmbOrientation.currentText();
        speed1 = Speed.smethod_0(value, value1, altitude);
        numList = []
        distance = Distance.smethod_1(speed1, num1, numList);
        self.numP = numList[0]
        self.metresP = distance.Metres;

        self.originP = Point3D.get_Origin();
        self.point3dP = Point3D.get_Origin();
        self.origin1P = Point3D.get_Origin();
        self.polylineP = PolylineArea();
        self.flagP = True;


        define._canvas.setMapTool(self.CaptureCoordTool)
    def autoCalcFinishMagVar(self):
        try:
            if self.parametersPanel.chbAutoFinishMagVar.Checked:
                finishPt = None
                finishLat = None
                finishLon = None
                degree3 = None
                num = None
                result, degree, degree1 = self.parametersPanel.pnlStartPosP.method_3(
                )
                if (result):
                    value = float(self.parametersPanel.txtForwardTP.Value)
                    value1 = float(self.parametersPanel.txtForwardTP.Value)
                    distance = self.parametersPanel.txtDistanceP.Value
                    result1, degree2, degree3, num = Geo.smethod_6(
                        self.parametersPanel.cmbCalculationTypeP.SelectedItem,
                        degree, degree1, value, distance)
                    if (result1):
                        finishPt = Point3D(degree3, degree2)

                        finishLat = degree2
                        finishLon = degree3
                if finishPt != None and self.model != None and self.date != None:
                    # result, degree, degree1 = self.parametersPanel.pnlStartPosP.method_3();
                    result2, degree2 = Geo.smethod_7(finishLat, finishLon,
                                                     Altitude(0), self.model,
                                                     self.date)
                    if (result2):
                        degree2 = round(degree2, 2)
                        self.parametersPanel.pnlVarFinishP.Value = degree2
        except:
            pass
Esempio n. 16
0
 def smethod_2(altitude_0, altitude_1, altitude_2, double_0):
     num = 0.0065
     metres = 15 - num * altitude_2.Metres
     double0 = -(metres - double_0)
     return Altitude(
         -double0 / -num * math.log(1 - num * altitude_0.Metres /
                                    (288.15 - num * altitude_1.Metres)),
         AltitudeUnits.M)
 def OK(self):
     self.leg.Rnp = float(self.ui.txtRnpValue.text())
     self.leg.Altitude = Altitude(float(self.ui.txtAltitude.text()), AltitudeUnits.FT)
     self.leg.Bank = float(self.ui.txtBank.text())
     self.leg.Wind = Speed(float(self.ui.txtWind.text()))
     
     if (self.ui.chbIsFap.isEnabled()):
         self.leg.IsFAP = self.ui.chbIsFap.isChecked()
Esempio n. 18
0
 def txtAltitudeChanged(self):
     try:
         self.method_29()
         self.parametersPanel.pnlWind.setAltitude(
             Altitude(float(self.parametersPanel.txtAltitude.text()),
                      AltitudeUnits.FT))
     except:
         pass
    def btnPDTCheck_Click(self):
        pdtResultStr = MathHelper.pdtCheckResultToString(
            float(self.parametersPanel.txtIsa.text()),
            Altitude(float(self.parametersPanel.txtAltitude.text()),
                     AltitudeUnits.FT),
            float(self.parametersPanel.txtIas.text()),
            float(self.parametersPanel.txtTime.text()))

        QMessageBox.warning(self, "PDT Check", pdtResultStr)
Esempio n. 20
0
    def initParametersPan(self):
        ui = Ui_IasToTas()
        self.parametersPanel = ui
        FlightPlanBaseSimpleDlg.initParametersPan(self)

        self.parametersPanel.pnlWind = WindPanel(
            self.parametersPanel.gbNonStandard)
        self.parametersPanel.pnlWind.lblIA.setMinimumSize(180, 0)
        self.parametersPanel.pnlWind.speedBox.setEnabled(False)
        self.parametersPanel.vLayoutNonStandard.insertWidget(
            0, self.parametersPanel.pnlWind)
        self.parametersPanel.pnlWind.setAltitude(
            Altitude(float(self.parametersPanel.txtAltitude.text()),
                     AltitudeUnits.FT))

        self.parametersPanel.txtAltitude.textChanged.connect(
            self.txtAltitudeChanged)
        self.parametersPanel.cmbType.addItems([
            IasTasSegmentType.Departure, IasTasSegmentType.Enroute,
            IasTasSegmentType.Holding, IasTasSegmentType.InitialRR,
            IasTasSegmentType.InitialDR, IasTasSegmentType.IafIfFaf,
            IasTasSegmentType.MissedApproach
        ])
        self.parametersPanel.cmbType.currentIndexChanged.connect(
            self.method_29)
        self.parametersPanel.txtIAS.textChanged.connect(self.method_29)
        self.parametersPanel.txtAltitude.textChanged.connect(self.method_29)
        self.parametersPanel.txtTime.textChanged.connect(self.method_29)
        self.parametersPanel.txtISA.textChanged.connect(self.method_29)

        self.parametersPanel.btnEST.clicked.connect(self.btnESTClicked)
        self.parametersPanel.btnREA.clicked.connect(self.btnREAClicked)
        self.parametersPanel.btnC.clicked.connect(self.btnCClicked)
        self.parametersPanel.btnD.clicked.connect(self.btnDClicked)
        self.parametersPanel.btnX.clicked.connect(self.btnXClicked)
        self.parametersPanel.btnNonStd.clicked.connect(self.btnNonStdClicked)

        self.parametersPanel.txtAltitudeM.textChanged.connect(
            self.txtAltitudeMChanged)
        self.parametersPanel.txtAltitude.textChanged.connect(
            self.txtAltitudeFtChanged)

        self.flag = 0
        if self.flag == 0:
            self.flag = 2
        if self.flag == 1:
            self.flag = 0
        if self.flag == 2:
            try:
                self.parametersPanel.txtAltitudeM.setText(
                    str(
                        Unit.ConvertFeetToMeter(
                            float(self.parametersPanel.txtAltitude.text()))))
            except:
                self.parametersPanel.txtAltitudeM.setText("0.0")

        self.method_29()
    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)
Esempio n. 22
0
 def putWithInHeightLoss(self):
     if self.parametersPanel.cmbAircraftCategory.SelectedIndex == AircraftSpeedCategory.H:
         self.parametersPanel.pnlHeightLoss.Value = Altitude(35)
         return
     try:
         num = self.getVPA()
         num1 = self.parametersPanel.pnlThrPosition.Altitude().Metres
         num2 = self.parametersPanel.pnlIas.Value.Knots
         num3 = round(0.125 * num2 + 28.3)
         num4 = round(0.177 * num2 - 3.2)
         num5 = 0
         if (num1 > 900):
             num5 = num5 + num4 * 0.02 * (num1 / 300)
         if (num > 3.2):
             num5 = num5 + num4 * 0.05 * ((num - 3.2) / 0.1)
         num5 = MathHelper.smethod_0(num5, 0)
         self.parametersPanel.pnlHeightLoss.Value = Altitude(num3 + num5)
     except:
          self.parametersPanel.pnlHeightLoss.Value = Altitude(0.0)
    def btnConstruct_Click(self):
        if len(self.resultLayerList) > 0:
            QgisHelper.removeFromCanvas(define._canvas, self.resultLayerList)
            self.resultLayerList = []
        try:
            point3d = self.parametersPanel.pnlTHR.getPoint3D()
            try:
                num = MathHelper.smethod_4(
                    Unit.ConvertDegToRad(
                        float(self.parametersPanel.txtRwyDir.Value) + 180))
            except ValueError:
                raise UserWarning, "Runway Direction is invalide!"
            altitude = self.parametersPanel.pnlOCAH.method_3(
                Altitude(point3d.get_Z()))
            metres = altitude.Metres
            if (metres < 10):
                raise UserWarning, Messages.ERR_INSUFFICIENT_MINIMUM_ALTITUDE
            try:
                res, point3dCollection = self.method_37(
                    point3d, num, metres, metres / math.tan(
                        Unit.ConvertDegToRad(
                            float(self.parametersPanel.txtDescAngle.Value.
                                  Degrees) - 1.12)))
            except ValueError:
                raise UserWarning, "DescAngle is invalide!"
            if (not res):
                return
            self.surfaceArea = PrimaryObstacleArea(
                PolylineArea(point3dCollection))
            layer = AcadHelper.createVectorLayer("Visual Segment Surface")
            if (self.parametersPanel.cmbConstructionType.SelectedIndex !=
                    ConstructionType.Construct2D):
                face = [
                    point3dCollection.get_Item(0),
                    point3dCollection.get_Item(1),
                    point3dCollection.get_Item(2),
                    point3dCollection.get_Item(3),
                    point3dCollection.get_Item(0)
                ]
                AcadHelper.setGeometryAndAttributesInLayer(layer, face)
                # layer = QgisHelper.createPolylineLayer("Visual Segment Surface 3D", [(face, [])], [])
            else:
                face = point3dCollection
                face.append(point3dCollection[0])
                AcadHelper.setGeometryAndAttributesInLayer(layer, face)
                # layer = QgisHelper.createPolylineLayer("Visual Segment Surface 2D", [(face, [])], [])

            QgisHelper.appendToCanvas(define._canvas, [layer],
                                      SurfaceTypes.VisualSegmentSurface)
            QgisHelper.zoomToLayers([layer])
            self.resultLayerList = [layer]
            self.ui.btnEvaluate.setEnabled(True)

        except UserWarning as e:
            QMessageBox.warning(self, "Error", e.message)
 def btnEvaluate_Click(self):
     polylines = self.method_36(False)
     #         polylines[0].Dispose();
     #         polylines.RemoveAt(0);
     count = len(polylines)
     num = 0.1 * count
     altitudeMoc = Altitude(float(self.parametersPanel.txtMoc.text()),
                            AltitudeUnits.M)
     metres = altitudeMoc.Metres
     holdingRnpAreas = []
     for i in range(count):
         if (i > 0):
             metres = num * altitudeMoc.Metres
             num = num - 0.1
         point3dCollection = polylines[i].method_14_closed(6)
         polylineArea0 = PolylineArea(point3dCollection)
         holdingRnpAreas.append(
             HoldingRnpArea(polylineArea0, Altitude(metres)))
     self.surfaceList = holdingRnpAreas
     return FlightPlanBaseDlg.btnEvaluate_Click(self)
Esempio n. 25
0
 def isaChanged(self):
     try:
         self.parametersPanel.txtTas.setText(
             str(
                 Speed.smethod_0(
                     Speed(float(self.parametersPanel.txtIas.text())),
                     float(self.parametersPanel.txtIsa.text()),
                     Altitude(
                         float(self.parametersPanel.txtAltitude.text()),
                         AltitudeUnits.FT)).Knots))
     except:
         raise ValueError("Value Invalid")
    def method_30_BD(self):
        degree = None
        degree1 = None
        degree2 = None
        if (self.parametersPanel.pnlFinishPosBD.IsValid()):

            result, degree, degree1 = self.parametersPanel.pnlFinishPosBD.method_3(
            )
            result, degree2 = Geo.smethod_7(degree, degree1, Altitude(0),
                                            self.modelBD, self.dateBD)
            if (result):
                degree2 = round(degree2, 2)
                self.parametersPanel.pnlVarFinishBD.Value = degree2
    def __init__(self):
        self.RecommendedEnt = None
        self.PointEnt = None
        self.CenterEnt = None
        self.CodePhase = ""
        self.CodeType = CodeTypeProcPathAixm.OTHER
        self.ValCourse = 0
        self.CodeTypeCourse = ""
        self.CodeDirTurn = ""
        self.CodeTurnValid = ""
        self.CodeDescrDistVer = ""
        self.CodeDistVerUpper = ""
        self.ValDistVerUpper = Altitude(0)
        self.CodeDistVerLower = ""
        self.ValDistVerLower = Altitude(0)
        self.ValVerAngle = 0
        self.ValSpeedLimit = Speed(0)
        self.CodeSpeedRef = ""
        self.ValDist = Distance(0)
        self.ValDur = 0
        self.ValTheta = 0
        self.ValRho = Distance(0)
        self.ValBankAngle = 0
        self.CodeRepAtc = ""
        self.CodeRoleFix = ""
        self.TxtRmk = ""

        self.dataList = []
        self.nameList = [
            "Fix Position", "Fix Type", "Recommended Nav. Aid", "Flight Phase",
            "Leg Type", "Course Type", "Course Angle", "Turn Direction",
            "Center", "Fly-By", "Bank Angle", "Altitude Interpretation",
            "Lower Limit Ref.", "Lower Limit", "Upper Limit Ref.",
            "Upper Limit", "Climb / Descent Angle", "Speed Restriction Ref.",
            "Speed Restriction", "Segment Length", "Duration", "ATC Reporting"
        ]
Esempio n. 28
0
    def altitudeMChanged(self):
        if self.flag==0:
            self.flag=1;
        if self.flag==2:
            self.flag=0;
        if self.flag==1:
            try:
                self.parametersPanel.txtAltitudeFt.setText(str(round(Unit.ConvertMeterToFeet(float(self.parametersPanel.txtAltitudeM.text())), 4)))
            except:
                self.parametersPanel.txtAltitudeFt.setText("0.0")

        self.parametersPanel.pnlWind.setAltitude(Altitude(float(self.parametersPanel.txtAltitudeFt.text()), AltitudeUnits.FT))
        try:
            self.parametersPanel.txtTas.setText(str(Speed.smethod_0(Speed(float(self.parametersPanel.txtIas.text())), float(self.parametersPanel.txtIsa.text()), Altitude(float(self.parametersPanel.txtAltitudeFt.text()), AltitudeUnits.FT)).Knots))
        except:
            raise ValueError("Value Invalid")
    def __init__(self, polylineArea_0, altitude_0, altitude_1):
        polylineAreaList = []

        polylineAreaList = HoldingTemplateBase.smethod_1(polylineArea_0, False)
        polylineAreaList.append(polylineArea_0)
        self.areas = []
        count = len(polylineAreaList)
        num = 0.1 * count
        metres = altitude_1.Metres
        for i in range(count):
            if (i > 0):
                metres = num * altitude_1.Metres
                num = num - 0.1
            self.areas.append(
                HoldingOverheadArea(polylineAreaList[i], Altitude(metres)))
        self.selectionArea = self.areas[len(self.areas) - 1].Area
        self.altitude = altitude_0.Metres
    def __init__(self):
        self.PointEnt = None
        self.CenterEnt = None
        self.CodeLegType = ""
        self.CodePathType = ""
        self.ValMinAlt = Altitude(0)
        self.ValDist = Distance(0)
        self.ValCourse = 0
        self.ValLegRadial = 0
        self.VorUidLeg = None
        self.CodePointType = ""
        self.CodeRepAtc = ""
        self.ValPointRadial = 0
        self.VorUidPoint = None
        self.ValLegRadialBack = 0
        self.VorUidLegBack = None
        self.ValPointDist1 = Distance(0)
        self.UidPointDist1 = None
        self.ValPointDist2 = Distance(0)
        self.UidPointDist2 = None
        self.ValDur = ""
        self.TxtRmk = ""
        self.CodeFlyBy = ""

        self.dataList = []
        self.nameList = [
            "Point",
            "Leg Type",
            "Path Type",
            "Center",
            "Min. Alt.",
            "Length",
            "Course",
            "Radial",
            "Fly-By",
            "Pnt. Type",
            "Rep. Pnt. Type",
            "Pnt. Radial",
            "Reverse Radial",
            "Pnt. Dist. 1",
            "Pnt. Dist. 2",
            "Duration",
        ]