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()
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
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)
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()