def __init__(self, parent):
        FlightPlanBaseSimpleDlg.__init__(self, parent)
        self.setObjectName("DmeToleranceDlg")
        self.surfaceType = SurfaceTypes.DmeTolerance
        
        self.dmeTolerance = Distance.NaN()
        self.slantTolerance = Distance.NaN()
        self.pilotDistance = Distance.NaN()
        self.groundDistance = Distance.NaN()
        
        self.initParametersPan()
        self.setWindowTitle("DME Tolerance and Slant Range")
        
        self.method_29()
        self.method_28()

        self.resize(550, 550)
        QgisHelper.matchingDialogSize(self, 550, 600)

        self.vorDmeFeatureArray = []
        self.currentLayer = define._canvas.currentLayer()
        self.resultLayerList = []
        # self.rwyFeatureArray = []
        # self.thrPoint3d = None
        # self.thrEndPoint3d = None
        self.initBasedOnCmb()
Example #2
0
    def smethod_0(iwin32Window_0):
        num = 0
        str0 = ""
        navigationalAidList = NavigationalAidList()
        NavigationalAidList.NavigationalAidList()
        navigationalAidList.append(OmnidirectionalNavigationalAid("DME N", AngleGradientSlope(1), Distance(3000), Distance(300), True))
        navigationalAidList.append(OmnidirectionalNavigationalAid("VOR", AngleGradientSlope(1), Distance(3000), Distance(600), True))
        navigationalAidList.append(OmnidirectionalNavigationalAid("Directional Finder (DF)", AngleGradientSlope(1), Distance(3000), Distance(500), True))
        navigationalAidList.append(OmnidirectionalNavigationalAid("Markers", AngleGradientSlope(20), Distance(200), Distance(50), True))
        navigationalAidList.append(OmnidirectionalNavigationalAid("NDB", AngleGradientSlope(5), Distance(1000), Distance(200), True))
        navigationalAidList.append(OmnidirectionalNavigationalAid("GBAS ground reference receiver", AngleGradientSlope(3), Distance(3000), Distance(400), True))
        navigationalAidList.append(OmnidirectionalNavigationalAid("GBAS VDB station", AngleGradientSlope(0.9), Distance(3000), Distance(300), True))
        navigationalAidList.append(OmnidirectionalNavigationalAid("SBAS ground monitoring station", AngleGradientSlope(3), Distance(3000), Distance(400), True))
        navigationalAidList.append(OmnidirectionalNavigationalAid("VHF (Communication Tx)", AngleGradientSlope(1), Distance(2000), Distance(300), True))
        navigationalAidList.append(OmnidirectionalNavigationalAid("VHF (Communication Rx)", AngleGradientSlope(1), Distance(2000), Distance(300), True))
        navigationalAidList.append(OmnidirectionalNavigationalAid("PSR", AngleGradientSlope(0.25), Distance(15000), Distance(500), True))
        navigationalAidList.append(OmnidirectionalNavigationalAid("SSR", AngleGradientSlope(0.25), Distance(15000), Distance(500), True))
        navigationalAidList.append(DirectionalNavigationalAid("ILS LOC (single freq.)", Distance.NaN(), Distance(500), Altitude(70), Distance(6000), Distance(500), Altitude(10), Distance(2300), AngleGradientSlope(30), True))
        navigationalAidList.append(DirectionalNavigationalAid("ILS LOC (dual freq.)", Distance.NaN(), Distance(500), Altitude(70), Distance(6000), Distance(500), Altitude(20), Distance(1500), AngleGradientSlope(20), True))
        navigationalAidList.append(DirectionalNavigationalAid("ILS GP M-Type (dual freq.)", Distance(800), Distance(50), Altitude(70), Distance(6000), Distance(250), Altitude(5), Distance(325), AngleGradientSlope(10), True))
        navigationalAidList.append(DirectionalNavigationalAid("MLS AZ", Distance.NaN(), Distance(20), Altitude(70), Distance(6000), Distance(600), Altitude(20), Distance(1500), AngleGradientSlope(40), True))
        navigationalAidList.append(DirectionalNavigationalAid("MLS EL", Distance(300), Distance(20), Altitude(70), Distance(6000), Distance(200), Altitude(20), Distance(1500), AngleGradientSlope(40), True))
        navigationalAidList.append(DirectionalNavigationalAid("DME (directional antennas)", Distance.NaN(), Distance(20), Altitude(70), Distance(6000), Distance(600), Altitude(20), Distance(1500), AngleGradientSlope(40), True))
        try:
            if (QFile.exists(NavigationalAidList.fileName)):
                xmlFile = XmlFile(NavigationalAidList.fileName, "NavigationalAids", False)
                xmlNodeLists = xmlFile.elementsByTagName("NavigationalAid")
                if (xmlNodeLists != None):
                    count =  xmlNodeLists.count()
                    for i in range(count):
                        xmlElement = xmlNodeLists.item(i)
                    # foreach (XmlElement xmlElement in xmlNodeLists)
                        result1, num = xmlFile.method_7(xmlElement, "Type")
                        result2, str0 = xmlFile.method_7(xmlElement, "Name")
                        if (not result1 or not result2):
                            continue
                        for case in switch(num):
                            if case(NavigationalAidType.Omnidirectional):
                                navigationalAidList.Add(OmnidirectionalNavigationalAid(None, xmlFile, xmlElement, str0))
                                continue
                            elif case(NavigationalAidType.Directional):
                                navigationalAidList.Add(DirectionalNavigationalAid(None, xmlFile, xmlElement, str0))
                                continue
                            elif case(NavigationalAidType.LineOfSight):
                                navigationalAidList.Add(LineOfSight(None, xmlFile, xmlElement, str0))
                                continue
                            else:
                                continue
        except:
            # Exception exception = exception1
            QMessageBox.warning(iwin32Window_0, "Error", Messages.ERR_FAILED_TO_LOAD_NAVAID_DATA_FILE)
            # ErrorMessageBox.smethod_0(iwin32Window_0, string.Format(Messages.ERR_FAILED_TO_LOAD_NAVAID_DATA_FILE, exception.Message))

        navigationalAidList.method_1()
        return navigationalAidList
Example #3
0
 def smethod_4(rnavCommonWaypoint_0, aircraftSpeedCategory_0):
     if (aircraftSpeedCategory_0 == AircraftSpeedCategory.Custom):
         raise UserWarning, Messages.CUSTOM_AC_CATEGORY_NOT_SUPPORTED
     if rnavCommonWaypoint_0 == RnavCommonWaypoint.MAHWP:
         return Distance(1, DistanceUnits.NM)
     elif rnavCommonWaypoint_0 == RnavCommonWaypoint.MAWP:
         return Distance.NaN()
     elif rnavCommonWaypoint_0 == RnavCommonWaypoint.FAWP:
         if (aircraftSpeedCategory_0 == AircraftSpeedCategory.H):
             return Distance(1, DistanceUnits.NM)
         return Distance(3, DistanceUnits.NM)
     elif rnavCommonWaypoint_0 == RnavCommonWaypoint.IWP:
         return Distance(2, DistanceUnits.NM)
     else:
         return Distance(1, DistanceUnits.NM)
Example #4
0
 def smethod_6(rnavCommonWaypoint_0, aircraftSpeedCategory_0):
     if (aircraftSpeedCategory_0 == AircraftSpeedCategory.Custom):
         raise Messages.CUSTOM_AC_CATEGORY_NOT_SUPPORTED
     if rnavCommonWaypoint_0 == RnavCommonWaypoint.MAHWP:
         return Distance(10, DistanceUnits.NM)
     elif rnavCommonWaypoint_0 == RnavCommonWaypoint.MAWP:
         return Distance.NaN()
     elif rnavCommonWaypoint_0 == RnavCommonWaypoint.FAWP:
         if (aircraftSpeedCategory_0 == AircraftSpeedCategory.H):
             return Distance(2, DistanceUnits.NM)
         return Distance(5, DistanceUnits.NM)
     elif rnavCommonWaypoint_0 == RnavCommonWaypoint.IWP:
         if (aircraftSpeedCategory_0 == AircraftSpeedCategory.H):
             return Distance(3, DistanceUnits.NM)
         return Distance(5, DistanceUnits.NM)
     else:
         if (aircraftSpeedCategory_0 != AircraftSpeedCategory.H):
             pass
         else:
             return Distance(3, DistanceUnits.NM)
     if (aircraftSpeedCategory_0 != AircraftSpeedCategory.A):
         if (aircraftSpeedCategory_0 != AircraftSpeedCategory.B):
             return Distance(6, DistanceUnits.NM)
     return Distance(5, DistanceUnits.NM)
    def method_29(self):
        speed = None
        speed1 = None
        num = None
        num1 = None
        # Validator validator = new Validator(ValidationFlags.None);
        flag = True
        flag1 = True
        # self.errorProvider.method_1();
        # if (!self.cmbType.method_1(validator))
        # {
        #     flag = false;
        # }
        # if (!self.pnlAltitude.method_1(validator))
        # {
        #     flag = false;
        # }
        # if (!self.pnlISA.method_2(validator))
        # {
        #     flag = false;
        # }
        # validator.Flags = ValidationFlags.Positive;
        # if (!self.pnlIAS.method_1(validator))
        # {
        #     flag = false;
        # }
        # validator.Flags = ValidationFlags.AllowEmpty | ValidationFlags.NonNegative;
        # if (!self.pnlWind.method_1(validator))
        # {
        #     flag1 = false;
        # }
        # if (!self.pnlTime.method_1(validator))
        # {
        #     flag1 = false;
        # }
        if (flag1):
            if self.parametersPanel.pnlWind.Value == None:
                flag1 = False
            else:
                try:
                    time = float(self.parametersPanel.txtTime.text())
                    flag1 = True
                except:
                    flag1 = False
            # flag1 = False if(self.pnlWind.Value.IsNaN) else not double.IsNaN(self.pnlTime.Value));
        # }
        # self.panelEx.SuspendLayout();
        # self.gbResults.SuspendLayout();
        # try:
        tAS = Captions.TAS
        eST = Captions.EST
        pILOTREACTION = Captions.PILOT_REACTION
        str0 = Captions.c
        str1 = ""
        self.est = Distance.NaN()
        self.rea = Distance.NaN()
        self.c = Distance.NaN()
        self.x = Distance.NaN()
        self.d = Distance.NaN()
        self.custom = Distance.NaN()
        if (not flag):
            self.parametersPanel.txtTAS.setText(Captions.NOT_APPLICABLE)
            self.parametersPanel.txtEST.setText(Captions.NOT_APPLICABLE)
            self.parametersPanel.txtREA.setText(Captions.NOT_APPLICABLE)
            self.parametersPanel.txtC.setText(Captions.NOT_APPLICABLE)
            self.parametersPanel.txtX.setText(Captions.NOT_APPLICABLE)
            self.parametersPanel.txtD.setText(Captions.NOT_APPLICABLE)
            self.parametersPanel.txtNonStandardResult.setText(
                Captions.NOT_APPLICABLE)
        else:
            value = Speed(float(self.parametersPanel.txtIAS.text()),
                          SpeedUnits.KTS)
            altitude = Altitude(float(self.parametersPanel.txtAltitude.text()),
                                AltitudeUnits.FT)
            value1 = float(self.parametersPanel.txtISA.text())
            selectedIndex = self.parametersPanel.cmbType.currentText()
            if selectedIndex == IasTasSegmentType.Departure or selectedIndex == IasTasSegmentType.MissedApproach:
                speed = Speed(30)
                num = 3
                speed1 = Speed(30)
                num1 = 3
            elif selectedIndex == IasTasSegmentType.Enroute:
                speed = Speed.smethod_1(altitude)
                num = 5
                speed1 = Speed.smethod_1(altitude)
                num1 = 10
            elif selectedIndex == IasTasSegmentType.Holding or selectedIndex == IasTasSegmentType.InitialRR:
                speed = Speed.smethod_1(altitude)
                num = 5
                speed1 = Speed.smethod_1(altitude)
                num1 = 6
            elif selectedIndex == IasTasSegmentType.InitialDR or selectedIndex == IasTasSegmentType.IafIfFaf:
                speed = Speed(30)
                num = 5
                speed1 = Speed(30)
                num1 = 6
            else:
                pass

    #                 throw new Exception(Messages.ERR_UNSUPPORTED_PROCEDURE_SEGMENT_TYPE);
            if (selectedIndex == IasTasSegmentType.Departure):
                m = value
                n = (value / 10)
                value = m + n
                tAS = tAS + " (" + Captions.IAS + "+ 10%)"
            speed2 = Speed.smethod_0(value, value1, altitude)
            self.est = self.method_27(speed2, speed, num)
            self.rea = self.method_27(speed2, speed1, num1)
            self.c = self.est + self.rea
            self.x = self.method_27(speed2, Speed(10), 15)
            self.d = self.method_27(speed2, Speed(10), 3)
            eST = eST + " (%i kts / %i s)" % (speed.Knots, num)
            pILOTREACTION = pILOTREACTION + " (%i kts / %i s)" % (speed1.Knots,
                                                                  num1)
            str0 = str0 + " (%i kts / %i + %i s)" % (speed.Knots, num, num1)
            self.parametersPanel.label_10.setText(tAS)
            self.parametersPanel.txtTAS.setText(str(speed2.Knots) + "kts")
            self.parametersPanel.label_73.setText(eST)
            self.parametersPanel.txtEST.setText(str(self.est.Metres) + "m")
            self.parametersPanel.label_74.setText(pILOTREACTION)
            self.parametersPanel.txtREA.setText(str(self.rea.Metres) + "m")
            self.parametersPanel.label_75.setText(str0)
            self.parametersPanel.txtC.setText(str(self.c.Metres) + "m")
            self.parametersPanel.txtX.setText(str(self.x.Metres) + "m")
            self.parametersPanel.txtD.setText(str(self.d.Metres) + "m")
            if (not flag1):
                self.parametersPanel.txtNonStandardResult.setText(
                    Captions.NOT_APPLICABLE)
            else:
                self.custom = self.method_27(
                    speed2, self.parametersPanel.pnlWind.Value,
                    float(self.parametersPanel.txtTime.text()))
                str2 = str(self.parametersPanel.pnlWind.Value.Knots) + "kts"
                value2 = float(self.parametersPanel.txtTime.text())
                str1 = "%s / %i s" % (str2, value2)
                self.parametersPanel.txtNonStandardResult.setText(
                    str(self.custom.Metres) + "m")
        self.parametersPanel.label_10.setText(tAS)
        self.parametersPanel.label_73.setText(eST)
        self.parametersPanel.label_74.setText(pILOTREACTION)
        self.parametersPanel.label_75.setText(str0)
        self.parametersPanel.label_11.setText(str1)
        #     self.method_28(self.pnlEST);
        #     self.method_28(self.pnlREA);
        #     self.method_28(self.pnlC);
        #     self.method_28(self.pnlX);
        #     self.method_28(self.pnlD);
        #     self.method_28(self.pnlNonStandardResult);
        self.parametersPanel.frame_X.setVisible(
            self.parametersPanel.cmbType.currentIndex() == 6)
        self.parametersPanel.frame_D.setVisible(
            self.parametersPanel.cmbType.currentIndex() == 6)
        self.parametersPanel.gbNonStandardResult.setVisible(
            self.parametersPanel.txtNonStandardResult.text() !=
            Captions.NOT_APPLICABLE)
 def get_Xtt(self):
     try:
         return Distance(float(self.txtXtt.text()), DistanceUnits.NM)
     except:
         return Distance.NaN()