def smethod_13(rnavFlightPhase_0, rnavWaypointType_0, speed_0, speed_1, distance_0, distance_1, double_0, angleUnits_0): if (rnavWaypointType_0 != RnavWaypointType.FlyBy): if (rnavWaypointType_0 != RnavWaypointType.FlyOver): raise UserWarning, "RNAV WayPoint type not SUPPORTED" if rnavFlightPhase_0 == RnavFlightPhase.Enroute: num1 = 15 elif rnavFlightPhase_0 == RnavFlightPhase.SID: num1 = 6 elif rnavFlightPhase_0 == RnavFlightPhase.STAR: raise UserWarning, "RNAV_FLIGHT_PHASE_NOT_SUPPORTED" elif rnavFlightPhase_0 == RnavFlightPhase.IafIf or rnavFlightPhase_0 == RnavFlightPhase.Faf: num1 = 11 elif rnavFlightPhase_0 == RnavFlightPhase.MissedApproach: num1 = 6 else: raise UserWarning, "RNAV_FLIGHT_PHASE_NOT_SUPPORTED" num2 = num1 * (speed_0.MetresPerSecond + speed_1.MetresPerSecond) return Distance(-(distance_0.Metres + num2)) if (angleUnits_0 == AngleUnits.Degrees): double_0 = Unit.ConvertDegToRad(double_0) num3 = min( [distance_1.Metres * math.tan(double_0 / 2), distance_1.Metres]) if rnavFlightPhase_0 == RnavFlightPhase.Enroute: num = 10 elif rnavFlightPhase_0 == RnavFlightPhase.SID: num = 3 elif rnavFlightPhase_0 == RnavFlightPhase.STAR: raise UserWarning, "RNAV_FLIGHT_PHASE_NOT_SUPPORTED" elif rnavFlightPhase_0 == RnavFlightPhase.IafIf or rnavFlightPhase_0 == RnavFlightPhase.Faf: num = 6 elif rnavFlightPhase_0 == RnavFlightPhase.MissedApproach: num = 3 else: raise UserWarning, "RNAV_FLIGHT_PHASE_NOT_SUPPORTED" num4 = num * (speed_0.MetresPerSecond + speed_1.MetresPerSecond) return Distance(num3 - distance_0.Metres - num4)
def putDistances(self): try: point3dThr = self.parametersPanel.pnlThrPosition.Point3d point3dFaf = self.parametersPanel.pnlFapPosition.Point3d point3dThr = self.parametersPanel.pnlThrPosition.Point3d # point3dFaf = self.parametersPanel.pnlFapPosition.Point3d inboundTrackRad = MathHelper.smethod_4(self.parametersPanel.pnlInboundTrack.Value)#MathHelper.getBearing(point3dFaf, point3dThr) inboundTrack180Rad = MathHelper.smethod_4(inboundTrackRad + math.pi) estimatedAltitdeMeters = self.parametersPanel.pnlEstimatedAltitude.Value.Metres thrAltitudeMeters = self.parametersPanel.pnlThrPosition.Altitude().Metres heightLossAltitudeMeters = self.parametersPanel.pnlHeightLoss.Value.Metres rdhAltitudeMeters = self.parametersPanel.pnlRDH.Value.Metres vpa = Unit.ConvertDegToRad(self.getVPA()) xz = self.parametersPanel.pnlDistXz.Value.Metres socThrDistMeters = ((estimatedAltitdeMeters - thrAltitudeMeters - heightLossAltitudeMeters) / math.tan(vpa)) + xz daThrDistMeters = (estimatedAltitdeMeters - thrAltitudeMeters - rdhAltitudeMeters) / math.tan(vpa) self.parametersPanel.pnlDistOfDaThr.Value = Distance(daThrDistMeters)#MathHelper.calcDistance(point3dThr, self.daPoint3d)) self.parametersPanel.pnlDistOfSocThr.Value = Distance(socThrDistMeters)#MathHelper.calcDistance(point3dThr, self.socPoint3d)) self.parametersPanel.pnlDistOfFafDA.Value = Distance(MathHelper.calcDistance(point3dFaf, self.daPoint3d)) except: pass
def initObstaclesModel(self): if self.surfaceArea == None: return self.obstaclesModel = VisualSegmentSurfaceObstacles( [self.surfaceArea], self.ui.chbHideDisregardableObst.isChecked()) try: double_0 = float(self.parametersPanel.txtRwyDir.Value) except ValueError: raise UserWarning, "Runway Direction is invalid!" try: double_1 = math.tan( Unit.ConvertDegToRad( float(self.parametersPanel.txtDescAngle.Value.Degrees) - 1.12)) except ValueError: raise UserWarning, "DescAngle is invalid!" point3d_0 = MathHelper.distanceBearingPoint( self.parametersPanel.pnlTHR.getPoint3D(), double_0, 60) self.obstaclesModel.ptStart = point3d_0 self.obstaclesModel.ptStart2 = MathHelper.distanceBearingPoint( point3d_0, double_0 - 1.5707963267949, 100) self.obstaclesModel.outbound = double_0 self.obstaclesModel.tang = double_1 return FlightPlanBaseDlg.initObstaclesModel(self)
def btnCalculate_Click(self): try: bearing = Unit.ConvertDegToRad(float(self.txtBearing.text())) distance0 = Distance(float(self.txtDistance.text()), DistanceUnits.NM).Metres self.calcedPoint = MathHelper.distanceBearingPoint( self.point, bearing, distance0) if self.flagStr == "R": self.parent0.parametersPanel.pnlIAWP1.Point3d = self.calcedPoint self.parent0.parametersPanel.txtRadiusIAWP1.setText( self.txtDistance.text()) elif self.flagStr == "L": self.parent0.parametersPanel.txtRadiusIAWP3.setText( self.txtDistance.text()) self.parent0.parametersPanel.pnlIAWP3.Point3d = self.calcedPoint elif self.flagStr == "C": self.parent0.parametersPanel.txtRadiusIAWP2.setText( self.txtDistance.text()) self.parent0.parametersPanel.pnlIAWP2.Point3d = self.calcedPoint self.accept() except UserWarning as e: QMessageBox.warning(self, "warning", e.message)
def smethod_3(polylineArea_0, altitude_0, altitude_1): # DBObjectCollection dBObjectCollection; polylineAreaList = HoldingTemplateBase.smethod_0( polylineArea_0, Unit.ConvertNMToMeter(1), 5) # DBObjectCollection dBObjectCollection2 = new DBObjectCollection(); num = 0.5 metres = altitude_0.Metres - altitude_1.Metres resultGeometryList = [] for i in range(5): if (i > 0): metres = altitude_0.Metres - num * altitude_1.Metres num = num - 0.1 # (dBObjectCollection1.get_Item(i) as Polyline).set_Elevation(metres); # DBObjectCollection dBObjectCollection3 = new DBObjectCollection(); # dBObjectCollection3.Add(dBObjectCollection1.get_Item(i)); item = polylineAreaList[i].method_14_closed(4) itemGeometry = QgsGeometry.fromPolygon([item]) # item.SetDatabaseDefaults(); if (i > 0): # (dBObjectCollection1.get_Item(i - 1) as Polyline).set_Elevation(metres); # DBObjectCollection dBObjectCollection4 = new DBObjectCollection(); # dBObjectCollection4.Add(dBObjectCollection1.get_Item(i - 1)); regionGeometry = QgsGeometry.fromPolygon( [polylineAreaList[i - 1].method_14_closed(4)]) polygonNew = itemGeometry.difference(regionGeometry) resultGeometryList.append(polygonNew) else: resultGeometryList.append(itemGeometry) # region.SetDatabaseDefaults(); # item.BooleanOperation(2, region); # region.Dispose(); # } # dBObjectCollection2.Add(item); # } # dBObjectCollection = dBObjectCollection2; return resultGeometryList
def method_35(self): point3d = self.parametersPanel.pnlNavAid.Point3d value = self.parametersPanel.txtAltitude.Value metres = value.Metres - point3d.get_Z() if (self.parametersPanel.cmbNavAidType.SelectedIndex != 0): num = 25 num1 = 15 num2 = metres * 0.839099631 else: num = 15 num1 = 5 num2 = metres * 1.191753593 num3 = 1 if (self.parametersPanel.cmbOrientation.SelectedItem == OrientationType.Right) else -1 num4 = MathHelper.smethod_3(float(self.parametersPanel.txtTrack.Value)) point3d1 = MathHelper.distanceBearingPoint( point3d, Unit.ConvertDegToRad(num4 + num3 * num), num2).smethod_167(0) point3d2 = MathHelper.distanceBearingPoint( point3d, Unit.ConvertDegToRad(num4 + 180 - num3 * num1), num2).smethod_167(0) point3d3 = MathHelper.distanceBearingPoint( point3d, Unit.ConvertDegToRad(num4 - num3 * num), num2).smethod_167(0) point3d4 = MathHelper.distanceBearingPoint( point3d, Unit.ConvertDegToRad(num4 + 180 + num3 * num1), num2).smethod_167(0) point3dArray = [point3d1, point3d2, point3d4, point3d3] polylineArea = PolylineArea(point3dArray) polylineArea[3].set_Bulge( MathHelper.smethod_60( point3d3, MathHelper.distanceBearingPoint(point3d, Unit.ConvertDegToRad(num4), num2).smethod_167(0), point3d1)) polylineArea[1].set_Bulge( MathHelper.smethod_60( point3d2, MathHelper.distanceBearingPoint( point3d, Unit.ConvertDegToRad(num4 + 180), num2).smethod_167(0), point3d4)) return polylineArea
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 btnConstruct_Click(self): num = None num1 = None line = None polyline = None point3d = None point3d1 = None point3d2 = None point3d3 = None point3d4 = None point3d5 = None point3d6 = None point3d7 = None point3d8 = None ficorResult = None point = [] value = None resultPolylineAreaList = [] # if (!AcadHelper.Ready) # { # return; # } # if (!self.method_27(true)) # { # return; # } # string constructionLayer = base.ConstructionLayer; point3d9 = self.parametersPanel.pnlTrackingPosition.Point3d point3d10 = self.parametersPanel.pnlIntersectingPosition.Point3d value1 = float(self.parametersPanel.txtTrackingRadialTrack.text()) value2 = float(self.parametersPanel.txtIntersectingRadialTrack.text()) num2 = Unit.ConvertDegToRad(value1) num3 = Unit.ConvertDegToRad(value2) if (self.parametersPanel.cmbTrackingType.currentIndex() != 0): num = Unit.ConvertDegToRad(2.4) if ( self.parametersPanel.cmbTrackingType.currentIndex() != 1 ) else Unit.ConvertDegToRad(6.9) else: num = Unit.ConvertDegToRad(5.2) num1 = Unit.ConvertDegToRad(6.2) if ( self.parametersPanel.cmbIntersectingType.currentIndex() != 0 ) else Unit.ConvertDegToRad(4.5) num4 = num2 + num point3d11 = MathHelper.distanceBearingPoint(point3d9, num4, 100) num5 = num2 - num point3d12 = MathHelper.distanceBearingPoint(point3d9, num5, 100) point3d13 = MathHelper.distanceBearingPoint(point3d9, num2, 100) point3d = MathHelper.getIntersectionPoint( point3d9, point3d13, point3d10, MathHelper.distanceBearingPoint(point3d10, num3, 100)) if (self.parametersPanel.cmbIntersectingType.currentIndex() >= 2): metres = Distance( float(self.parametersPanel.txtIntersectingDistance.text()), DistanceUnits.NM).Metres if (self.parametersPanel.chb0dmeAtThr.isChecked()): value = Distance( float(self.parametersPanel.txtDmeOffset.text())) metres = metres + value.Metres num6 = 460 + metres * 0.0125 num7 = metres + num6 num8 = metres - num6 if (MathHelper.smethod_102(point3d9, point3d10)): point3d14 = MathHelper.distanceBearingPoint( point3d9, num4, num8) point3d15 = MathHelper.distanceBearingPoint( point3d9, num2, num8) point3d16 = MathHelper.distanceBearingPoint( point3d9, num5, num8) point3d17 = MathHelper.distanceBearingPoint( point3d9, num5, num7) point3d18 = MathHelper.distanceBearingPoint( point3d9, num2, num7) point3d19 = MathHelper.distanceBearingPoint( point3d9, num4, num7) point = [point3d14, point3d16, point3d17, point3d19] polyline = AcadHelper.smethod_126(point) polyline.SetBulgeAt( 0, MathHelper.smethod_60(point3d14, point3d15, point3d16)) polyline.SetBulgeAt( 2, MathHelper.smethod_60(point3d17, point3d18, point3d19)) polyline.set_Closed(True) resultPolylineAreaList.append(polyline) # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer); point3d14 = MathHelper.distanceBearingPoint( point3d9, num2, num8) point3d15 = MathHelper.distanceBearingPoint( point3d9, num2, num7) resultPolylineAreaList.append( PolylineArea([point3d14, point3d15])) # line = new Line(point3d14, point3d15); # AcadHelper.smethod_18(transaction, blockTableRecord, line, constructionLayer); point3d14 = MathHelper.distanceBearingPoint( point3d9, num4, metres) point3d15 = MathHelper.distanceBearingPoint( point3d9, num2, metres) point3d16 = MathHelper.distanceBearingPoint( point3d9, num5, metres) point = [point3d14, point3d16] polyline = AcadHelper.smethod_126(point) polyline.SetBulgeAt( 0, MathHelper.smethod_60(point3d14, point3d15, point3d16)) resultPolylineAreaList.append(polyline) # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer); else: ficorResult1 = self.method_37(point3d10, num2, point3d9, point3d13, num8, FicorInput.C) ficorResult2 = self.method_37(point3d10, num2, point3d9, point3d13, metres, FicorInput.C) ficorResult3 = self.method_37(point3d10, num2, point3d9, point3d13, num7, FicorInput.C) if (ficorResult1.Status != FicorStatus.TWO and ficorResult2.Status != FicorStatus.TWO): if (ficorResult3.Status == FicorStatus.TWO): ficorResult = FicorResult(None, FicorStatus.TWO) else: ficorResult = FicorResult(None, ficorResult2.Status) else: ficorResult = FicorResult(None, FicorStatus.TWO) if (ficorResult.Status != FicorStatus.NID): ficorInput = FicorInput.F num9 = 1 if (ficorResult.Status == FicorStatus.TWO): QMessageBox.warning( self, "Infomation", Messages.TWO_POSSIBLE_FIX_POSITIONS) ficorInput = FicorInput.L num9 = 2 num10 = 0 while (num10 < num9): ficorResult4 = self.method_37(point3d10, num4, point3d9, point3d11, num8, ficorInput) ficorResult5 = self.method_37(point3d10, num2, point3d9, point3d13, num8, ficorInput) ficorResult6 = self.method_37(point3d10, num5, point3d9, point3d12, num8, ficorInput) ficorResult7 = self.method_37(point3d10, num4, point3d9, point3d11, metres, ficorInput) ficorResult8 = self.method_37(point3d10, num2, point3d9, point3d13, metres, ficorInput) ficorResult9 = self.method_37(point3d10, num5, point3d9, point3d12, metres, ficorInput) ficorResult10 = self.method_37(point3d10, num4, point3d9, point3d11, num7, ficorInput) ficorResult11 = self.method_37(point3d10, num2, point3d9, point3d13, num7, ficorInput) ficorResult12 = self.method_37(point3d10, num5, point3d9, point3d12, num7, ficorInput) if (ficorResult4.Status == FicorStatus.NID or ficorResult5.Status == FicorStatus.NID or ficorResult6.Status == FicorStatus.NID or ficorResult7.Status == FicorStatus.NID or ficorResult9.Status == FicorStatus.NID or ficorResult10.Status == FicorStatus.NID or ficorResult11.Status == FicorStatus.NID or ficorResult12.Status == FicorStatus.NID or ficorResult8.Status == FicorStatus.NID): eRRFAILEDTOCONSTRUCTTHEFIXAUTOMATICALLY = Messages.ERR_FAILED_TO_CONSTRUCT_THE_FIX_AUTOMATICALLY value = Distance( float(self.parametersPanel. txtIntersectingDistance.text()), DistanceUnits.NM) str000 = str(round(value.Metres, 4)) + "m" value = str(round(Distance(num6).Metres, 4)) + "m" QMessageBox.warning( self, "Error", eRRFAILEDTOCONSTRUCTTHEFIXAUTOMATICALLY % (str000, value)) # ErrorMessageBox.smethod_0(self, string.Format(eRRFAILEDTOCONSTRUCTTHEFIXAUTOMATICALLY, str, value.method_0(":m"))); return elif (MathHelper.calcDistance(point3d9, ficorResult8.Point) < MathHelper.calcDistance( ficorResult5.Point, ficorResult8.Point)): QMessageBox.warning( self, "Error", Messages. ERR_FIX_TOO_CLOSE_USE_OVERHEAD_TOLERANCE) # ErrorMessageBox.smethod_0(self, Messages.ERR_FIX_TOO_CLOSE_USE_OVERHEAD_TOLERANCE); return else: point = [ ficorResult4.Point, ficorResult6.Point, ficorResult12.Point, ficorResult10.Point ] polyline = AcadHelper.smethod_126(point) polyline.SetBulgeAt( 0, MathHelper.smethod_60(ficorResult4.Point, ficorResult5.Point, ficorResult6.Point)) polyline.SetBulgeAt( 2, MathHelper.smethod_60(ficorResult12.Point, ficorResult11.Point, ficorResult10.Point)) polyline.set_Closed(True) resultPolylineAreaList.append(polyline) # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer); resultPolylineAreaList.append( PolylineArea( [ficorResult5.Point, ficorResult11.Point])) # line = new Line(ficorResult5.Point, ficorResult11.Point); # AcadHelper.smethod_18(transaction, blockTableRecord, line, constructionLayer); point = [ficorResult7.Point, ficorResult9.Point] polyline = AcadHelper.smethod_126(point) polyline.SetBulgeAt( 0, MathHelper.smethod_60(ficorResult7.Point, ficorResult8.Point, ficorResult9.Point)) resultPolylineAreaList.append(polyline) # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer); if (ficorResult.Status == FicorStatus.TWO): ficorInput = FicorInput.S num10 += 1 else: QMessageBox.warning( self, "Error", Messages. ERR_RADIAL_TRACK_DME_DISTANCE_DO_NOT_INTERSECT) # ErrorMessageBox.smethod_0(self, Messages.ERR_RADIAL_TRACK_DME_DISTANCE_DO_NOT_INTERSECT); return elif (point3d == None): QMessageBox.warning(self, "Error", Messages.ERR_RADIALS_TRACKS_ARE_PARALLEL) # ErrorMessageBox.smethod_0(self, Messages.ERR_RADIALS_TRACKS_ARE_PARALLEL); return elif (MathHelper.smethod_99(MathHelper.getBearing(point3d9, point3d), num2, 0.001)): point3d20 = MathHelper.distanceBearingPoint( point3d10, num3 + num1, 100) point3d21 = MathHelper.distanceBearingPoint( point3d10, num3 - num1, 100) point3d1 = MathHelper.getIntersectionPoint(point3d9, point3d12, point3d10, point3d20) point3d2 = MathHelper.getIntersectionPoint(point3d9, point3d12, point3d10, point3d21) point3d3 = MathHelper.getIntersectionPoint(point3d9, point3d11, point3d10, point3d21) point3d4 = MathHelper.getIntersectionPoint(point3d9, point3d11, point3d10, point3d20) point3d5 = MathHelper.getIntersectionPoint(point3d9, point3d, point3d10, point3d20) point3d6 = MathHelper.getIntersectionPoint(point3d9, point3d, point3d10, point3d21) point3d7 = MathHelper.getIntersectionPoint(point3d9, point3d11, point3d10, point3d) point3d8 = MathHelper.getIntersectionPoint(point3d9, point3d12, point3d10, point3d) if (MathHelper.calcDistance(point3d9, point3d) < MathHelper.calcDistance(point3d5, point3d) or MathHelper.calcDistance(point3d10, point3d) < MathHelper.calcDistance(point3d5, point3d) or MathHelper.calcDistance(point3d9, point3d) < MathHelper.calcDistance(point3d8, point3d) or MathHelper.calcDistance(point3d10, point3d) < MathHelper.calcDistance(point3d8, point3d)): QMessageBox.warning( self, "Error", Messages.ERR_FIX_TOO_CLOSE_USE_OVERHEAD_TOLERANCE) # ErrorMessageBox.smethod_0(self, Messages.ERR_FIX_TOO_CLOSE_USE_OVERHEAD_TOLERANCE); return else: resultPolylineAreaList.append( PolylineArea([point3d5, point3d6])) # line = new Line(point3d5, point3d6); # AcadHelper.smethod_18(transaction, blockTableRecord, line, constructionLayer); resultPolylineAreaList.append( PolylineArea([point3d7, point3d8])) # line = new Line(point3d7, point3d8); # AcadHelper.smethod_18(transaction, blockTableRecord, line, constructionLayer); point = [point3d1, point3d2, point3d3, point3d4] polyline = AcadHelper.smethod_126(point) polyline.set_Closed(True) resultPolylineAreaList.append(polyline) # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer); else: QMessageBox.warning(self, "Error", Messages.ERR_RADIALS_TRACKS_DO_NOT_INTERSECT) # ErrorMessageBox.smethod_0(self, Messages.ERR_RADIALS_TRACKS_DO_NOT_INTERSECT); return mapUnits = define._canvas.mapUnits() constructionLayer = None if define._mapCrs == None: if mapUnits == QGis.Meters: constructionLayer = QgsVectorLayer("linestring?crs=EPSG:32633", self.surfaceType, "memory") else: constructionLayer = QgsVectorLayer("linestring?crs=EPSG:4326", self.surfaceType, "memory") else: constructionLayer = QgsVectorLayer( "linestring?crs=%s" % define._mapCrs.authid(), self.surfaceType, "memory") shpPath = "" if define.obstaclePath != None: shpPath = define.obstaclePath elif define.xmlPath != None: shpPath = define.xmlPath else: shpPath = define.appPath er = QgsVectorFileWriter.writeAsVectorFormat( constructionLayer, shpPath + "/" + QString(self.surfaceType).replace(" ", "") + ".shp", "utf-8", constructionLayer.crs()) constructionLayer = QgsVectorLayer( shpPath + "/" + QString(self.surfaceType).replace(" ", "") + ".shp", self.surfaceType, "ogr") constructionLayer.startEditing() for polylinrArea0 in resultPolylineAreaList: feature = QgsFeature() feature.setGeometry( QgsGeometry.fromPolyline(polylinrArea0.method_14())) pr = constructionLayer.dataProvider() pr.addFeatures([feature]) # constructionLayer.addFeature(feature) constructionLayer.commitChanges() QgisHelper.appendToCanvas(define._canvas, [constructionLayer], self.surfaceType, True) QgisHelper.zoomToLayers([constructionLayer])
def addObstacleToModel(self, obstacle, checkResult): if self.typeStr == "buffer": ObstacleTable.addObstacleToModel(self, obstacle, checkResult) row = self.source.rowCount() - 1 item = QStandardItem(str(checkResult[0])) item.setData(checkResult[0]) self.source.setItem(row, self.IndexMocAppliedM, item) item = QStandardItem(str(Unit.ConvertMeterToFeet(checkResult[0]))) item.setData(Unit.ConvertMeterToFeet(checkResult[0])) self.source.setItem(row, self.IndexMocAppliedFt, item) item = QStandardItem(str(ObstacleTable.MocMultiplier)) item.setData(ObstacleTable.MocMultiplier) self.source.setItem(row, self.IndexMocMultiplier, item) item = QStandardItem(str(checkResult[1])) item.setData(checkResult[1]) self.source.setItem(row, self.IndexOcaM, item) item = QStandardItem(str(Unit.ConvertMeterToFeet(checkResult[1]))) item.setData(Unit.ConvertMeterToFeet(checkResult[1])) self.source.setItem(row, self.IndexOcaFt, item) item = QStandardItem(str(checkResult[2])) item.setData(checkResult[2]) self.source.setItem(row, self.IndexCritical, item) else: ObstacleTable.addObstacleToModel(self, obstacle, checkResult) row = self.source.rowCount() - 1 item = QStandardItem(str(checkResult[0])) item.setData(checkResult[0]) self.source.setItem(row, self.IndexObstArea, item) item = QStandardItem(str(checkResult[1])) item.setData(checkResult[1]) self.source.setItem(row, self.IndexDistInSecM, item) item = QStandardItem(str(checkResult[2])) item.setData(checkResult[2]) self.source.setItem(row, self.IndexMocAppliedM, item) item = QStandardItem(str(Unit.ConvertMeterToFeet(checkResult[2]))) item.setData(Unit.ConvertMeterToFeet(checkResult[2])) self.source.setItem(row, self.IndexMocAppliedFt, item) item = QStandardItem(str(ObstacleTable.MocMultiplier)) item.setData(ObstacleTable.MocMultiplier) self.source.setItem(row, self.IndexMocMultiplier, item) item = QStandardItem(str(checkResult[3])) item.setData(checkResult[3]) self.source.setItem(row, self.IndexOcaM, item) item = QStandardItem(str(Unit.ConvertMeterToFeet(checkResult[3]))) item.setData(Unit.ConvertMeterToFeet(checkResult[3])) self.source.setItem(row, self.IndexOcaFt, item) item = QStandardItem(str(checkResult[4])) item.setData(checkResult[4]) self.source.setItem(row, self.IndexCritical, item)
def method_34(self): point3dCollection_0 = None point3dCollection_1 = None polylineArea_0 = None polylineArea_1 = None polylineArea_2 = None point3d = self.parametersPanel.pnlRwyStart.Point3d point3d1 = self.parametersPanel.pnlDer.Point3d num = MathHelper.getBearing(point3d, point3d1) num1 = MathHelper.smethod_4(num + 3.14159265358979) num2 = MathHelper.smethod_4(num - 1.5707963267949) num3 = MathHelper.smethod_4(num + 1.5707963267949) percent = float(self.parametersPanel.txtPdg.text()) / 100 metres = Altitude( float(self.parametersPanel.txtTurningAltitude.text()), AltitudeUnits.FT).Metres metres1 = Altitude( float(self.parametersPanel.txtNextSegmentAltitude.text()), AltitudeUnits.FT).Metres num4 = 45 if (self.parametersPanel.chbCatH.isChecked()) else 150 num5 = MathHelper.calcDistance(point3d, point3d1) if (num5 < 10): QMessageBox.warning(self, "Warning", Messages.ERR_POSITIONS_TOO_CLOSE) return (False, None, None, None, None, None) if (not self.parametersPanel.chbTurnsBeforeDer.isChecked()): point3dCollection_0 = None else: point3d2 = point3d if (self.parametersPanel.chbCatH.isChecked() ) else MathHelper.distanceBearingPoint( point3d, num, min([600, num5])) if (MathHelper.smethod_103(point3d2, point3d1, 0.1)): point3dCollection_0 = None else: point3dCollection_0 = [] point3dCollection_0.append( MathHelper.distanceBearingPoint(point3d2, num2, num4)) point3dCollection_0.append( MathHelper.distanceBearingPoint(point3d1, num2, num4)) point3dCollection_0.append( MathHelper.distanceBearingPoint(point3d1, num3, num4)) point3dCollection_0.append( MathHelper.distanceBearingPoint(point3d2, num3, num4)) num6 = ( (Altitude(float( self.parametersPanel.txtMinTurnHeight_CATH.text())).Metres if (self.parametersPanel.chbCatH.isChecked()) else Altitude( float(self.parametersPanel.txtMinTurnHeight.text())).Metres) - 5) / percent z = (metres - point3d1.get_Z() - 5) / percent num7 = Unit.ConvertDegToRad(15) num8 = Unit.ConvertDegToRad(30) point3d3 = MathHelper.distanceBearingPoint(point3d1, num2, num4) point3d4 = MathHelper.distanceBearingPoint(point3d1, num3, num4) point3d5 = MathHelper.distanceBearingPoint(point3d3, num - num7, num6 / math.cos(num7)) point3d6 = MathHelper.distanceBearingPoint(point3d4, num + num7, num6 / math.cos(num7)) point3d7 = MathHelper.distanceBearingPoint(point3d5, num - num8, (z - num6) / math.cos(num8)) point3d8 = MathHelper.distanceBearingPoint(point3d6, num + num8, (z - num6) / math.cos(num8)) point3dCollection_1 = [] point3dArray = [ point3d3, point3d5, point3d7, point3d8, point3d6, point3d4 ] point3dCollection_1.extend(point3dArray) z1 = (metres1 - point3d1.get_Z() - 5) / percent point3d9 = point3d if (self.parametersPanel.chbCatH.isChecked() ) else MathHelper.distanceBearingPoint( point3d, num, min([600, num5])) polylineArea_0 = PolylineArea(None, point3d9.smethod_167(0), z1) point3d10 = MathHelper.distanceBearingPoint(point3d9, num1, z1) point3d11 = MathHelper.distanceBearingPoint(point3d9, num, z1) polylineArea_1 = PolylineArea() polylineArea_1.method_3( point3d10, MathHelper.smethod_57(TurnDirection.Right, point3d10, point3d11, point3d9)) polylineArea_1.method_1(point3d11) if (point3dCollection_0 != None): item = [ point3d1, point3dCollection_0[1], point3dCollection_0[0], point3d9 ] polylineArea_1.method_7(item) polylineArea_2 = PolylineArea() polylineArea_2.method_3( point3d10, MathHelper.smethod_57(TurnDirection.Left, point3d10, point3d11, point3d9)) polylineArea_2.method_1(point3d11) if (point3dCollection_0 != None): item1 = [ point3d1, point3dCollection_0[2], point3dCollection_0[3], point3d9 ] polylineArea_2.method_7(item1) return (True, point3dCollection_0, point3dCollection_1, polylineArea_0, polylineArea_1, polylineArea_2)
def addObstacleToModel(self, obstacle, checkResult=None): standardItemList = [] # obstacle.positionDegree = QgisHelper.Meter2Degree(obstacle.Position.x(), obstacle.Position.y()) standardItem = QStandardItem(str(obstacle.featureId)) standardItem.setData(obstacle.featureId) standardItemList.append(standardItem) standardItem = QStandardItem(str(obstacle.layerId)) standardItem.setData(obstacle.layerId) standardItemList.append(standardItem) standardItem = QStandardItem(str(obstacle.name)) standardItem.setData(obstacle.name) standardItemList.append(standardItem) standardItem = QStandardItem(str(obstacle.Position.x())) standardItem.setData(obstacle.Position.x()) standardItemList.append(standardItem) standardItem = QStandardItem(str(obstacle.Position.y())) standardItem.setData(obstacle.Position.y()) standardItemList.append(standardItem) value = QVariant(QgisHelper.strDegree(obstacle.positionDegree.y())) standardItem = QStandardItem(value.toString()) standardItem.setData(obstacle.positionDegree.y()) standardItemList.append(standardItem) strV = QgisHelper.strDegree(obstacle.positionDegree.y()) value = QVariant(QgisHelper.strDegree(obstacle.positionDegree.x())) standardItem = QStandardItem(value.toString()) standardItem.setData(obstacle.positionDegree.x()) standardItemList.append(standardItem) standardItem = QStandardItem(str(obstacle.Position.z())) standardItem.setData(obstacle.Position.z()) standardItemList.append(standardItem) standardItem = QStandardItem( str(Unit.ConvertMeterToFeet(obstacle.Position.z()))) standardItem.setData(Unit.ConvertMeterToFeet(obstacle.Position.z())) standardItemList.append(standardItem) standardItem = QStandardItem(str(obstacle.trees)) standardItem.setData(obstacle.trees) standardItemList.append(standardItem) standardItem = QStandardItem( str(Unit.ConvertMeterToFeet(obstacle.trees))) standardItem.setData(Unit.ConvertMeterToFeet(obstacle.trees)) standardItemList.append(standardItem) # for i in range(len(standardItemList), self.source.columnCount()): # standardItemList.append(QStandardItem("None")) self.source.appendRow(standardItemList) standardItem = QStandardItem(str(obstacle.mocMultiplier)) standardItem.setData(obstacle.mocMultiplier) self.source.setItem(self.source.rowCount() - 1, self.IndexMocMultiplier, standardItem)
def btnConstruct2_Click(self): qgsLayerTreeView = define._mLayerTreeView groupName = self.surfaceType2 layerTreeModel = qgsLayerTreeView.layerTreeModel() layerTreeGroup = layerTreeModel.rootGroup() rowCount = layerTreeModel.rowCount() groupExisting = False if rowCount > 0: for i in range(rowCount): qgsLayerTreeNode = layerTreeModel.index2node( layerTreeModel.index(i, 0)) if qgsLayerTreeNode.nodeType() == 0: qgsLayerTreeNode._class_ = QgsLayerTreeGroup if isinstance(qgsLayerTreeNode, QgsLayerTreeGroup ) and qgsLayerTreeNode.name() == groupName: groupExisting = True if groupExisting: if len(self.resultLayerList2) > 0: QgisHelper.removeFromCanvas(define._canvas, self.resultLayerList2) self.resultLayerList2 = [] else: QMessageBox.warning( self, "Warning", "Please remove \"" + self.surfaceType2 + "\" layer group from LayerTreeView.") return num = None num1 = None line = None polyline = None point3d = None point3d1 = None point3d2 = None point3d3 = None point3d4 = None point3d5 = None point3d6 = None point3d7 = None point3d8 = None ficorResult = None point = [] value = None resultPolylineAreaList = [] # if (!AcadHelper.Ready) # { # return; # } # if (!self.method_27(true)) # { # return; # } # string constructionLayer = base.ConstructionLayer; point3d9 = self.parametersPanel.pnlTrackingPosition.Point3d point3d10 = self.parametersPanel.pnlIntersectingPosition.Point3d value1 = float(self.parametersPanel.txtTrackingRadialTrack.Value) value2 = float(self.parametersPanel.txtIntersectingRadialTrack.Value) num2 = Unit.ConvertDegToRad(value1) num3 = Unit.ConvertDegToRad(value2) if (self.parametersPanel.cmbTrackingType.currentIndex() != 0): num = Unit.ConvertDegToRad(2.4) if ( self.parametersPanel.cmbTrackingType.currentIndex() != 1 ) else Unit.ConvertDegToRad(6.9) else: num = Unit.ConvertDegToRad(5.2) num1 = Unit.ConvertDegToRad(6.2) if ( self.parametersPanel.cmbIntersectingType.currentIndex() != 0 ) else Unit.ConvertDegToRad(4.5) num4 = num2 + num point3d11 = MathHelper.distanceBearingPoint(point3d9, num4, 100) num5 = num2 - num point3d12 = MathHelper.distanceBearingPoint(point3d9, num5, 100) point3d13 = MathHelper.distanceBearingPoint(point3d9, num2, 100) point3d = MathHelper.getIntersectionPoint( point3d9, point3d13, point3d10, MathHelper.distanceBearingPoint(point3d10, num3, 100)) if (self.parametersPanel.cmbIntersectingType.currentIndex() >= 2): metres = Distance( float(self.parametersPanel.txtIntersectingDistance.text()), DistanceUnits.NM).Metres if (self.parametersPanel.chb0dmeAtThr.isChecked()): value = Distance( float(self.parametersPanel.txtDmeOffset.text())) metres = metres + value.Metres num6 = 460 + metres * 0.0125 num7 = metres + num6 num8 = metres - num6 if (MathHelper.smethod_102(point3d9, point3d10)): point3d14 = MathHelper.distanceBearingPoint( point3d9, num4, num8) point3d15 = MathHelper.distanceBearingPoint( point3d9, num2, num8) point3d16 = MathHelper.distanceBearingPoint( point3d9, num5, num8) point3d17 = MathHelper.distanceBearingPoint( point3d9, num5, num7) point3d18 = MathHelper.distanceBearingPoint( point3d9, num2, num7) point3d19 = MathHelper.distanceBearingPoint( point3d9, num4, num7) point = [point3d14, point3d16, point3d17, point3d19] polyline = AcadHelper.smethod_126(point) polyline.SetBulgeAt( 0, MathHelper.smethod_60(point3d14, point3d15, point3d16)) polyline.SetBulgeAt( 2, MathHelper.smethod_60(point3d17, point3d18, point3d19)) polyline.set_Closed(True) resultPolylineAreaList.append(polyline) # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer); point3d14 = MathHelper.distanceBearingPoint( point3d9, num2, num8) point3d15 = MathHelper.distanceBearingPoint( point3d9, num2, num7) resultPolylineAreaList.append( PolylineArea([point3d14, point3d15])) # line = new Line(point3d14, point3d15); # AcadHelper.smethod_18(transaction, blockTableRecord, line, constructionLayer); point3d14 = MathHelper.distanceBearingPoint( point3d9, num4, metres) point3d15 = MathHelper.distanceBearingPoint( point3d9, num2, metres) point3d16 = MathHelper.distanceBearingPoint( point3d9, num5, metres) point = [point3d14, point3d16] polyline = AcadHelper.smethod_126(point) polyline.SetBulgeAt( 0, MathHelper.smethod_60(point3d14, point3d15, point3d16)) resultPolylineAreaList.append(polyline) # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer); else: ficorResult1 = self.method_37(point3d10, num2, point3d9, point3d13, num8, FicorInput.C) ficorResult2 = self.method_37(point3d10, num2, point3d9, point3d13, metres, FicorInput.C) ficorResult3 = self.method_37(point3d10, num2, point3d9, point3d13, num7, FicorInput.C) if (ficorResult1.Status != FicorStatus.TWO and ficorResult2.Status != FicorStatus.TWO): if (ficorResult3.Status == FicorStatus.TWO): ficorResult = FicorResult(None, FicorStatus.TWO) else: ficorResult = FicorResult(None, ficorResult2.Status) else: ficorResult = FicorResult(None, FicorStatus.TWO) if (ficorResult.Status != FicorStatus.NID): ficorInput = FicorInput.F num9 = 1 if (ficorResult.Status == FicorStatus.TWO): QMessageBox.warning( self, "Infomation", Messages.TWO_POSSIBLE_FIX_POSITIONS) ficorInput = FicorInput.L num9 = 2 num10 = 0 while (num10 < num9): ficorResult4 = self.method_37(point3d10, num4, point3d9, point3d11, num8, ficorInput) ficorResult5 = self.method_37(point3d10, num2, point3d9, point3d13, num8, ficorInput) ficorResult6 = self.method_37(point3d10, num5, point3d9, point3d12, num8, ficorInput) ficorResult7 = self.method_37(point3d10, num4, point3d9, point3d11, metres, ficorInput) ficorResult8 = self.method_37(point3d10, num2, point3d9, point3d13, metres, ficorInput) ficorResult9 = self.method_37(point3d10, num5, point3d9, point3d12, metres, ficorInput) ficorResult10 = self.method_37(point3d10, num4, point3d9, point3d11, num7, ficorInput) ficorResult11 = self.method_37(point3d10, num2, point3d9, point3d13, num7, ficorInput) ficorResult12 = self.method_37(point3d10, num5, point3d9, point3d12, num7, ficorInput) if (ficorResult4.Status == FicorStatus.NID or ficorResult5.Status == FicorStatus.NID or ficorResult6.Status == FicorStatus.NID or ficorResult7.Status == FicorStatus.NID or ficorResult9.Status == FicorStatus.NID or ficorResult10.Status == FicorStatus.NID or ficorResult11.Status == FicorStatus.NID or ficorResult12.Status == FicorStatus.NID or ficorResult8.Status == FicorStatus.NID): eRRFAILEDTOCONSTRUCTTHEFIXAUTOMATICALLY = Messages.ERR_FAILED_TO_CONSTRUCT_THE_FIX_AUTOMATICALLY value = Distance( float(self.parametersPanel. txtIntersectingDistance.text()), DistanceUnits.NM) str000 = str(round(value.Metres, 4)) + "m" value = str(round(Distance(num6).Metres, 4)) + "m" QMessageBox.warning( self, "Error", eRRFAILEDTOCONSTRUCTTHEFIXAUTOMATICALLY % (str000, value)) # ErrorMessageBox.smethod_0(self, string.Format(eRRFAILEDTOCONSTRUCTTHEFIXAUTOMATICALLY, str, value.method_0(":m"))); return elif (MathHelper.calcDistance(point3d9, ficorResult8.Point) < MathHelper.calcDistance( ficorResult5.Point, ficorResult8.Point)): QMessageBox.warning( self, "Error", Messages. ERR_FIX_TOO_CLOSE_USE_OVERHEAD_TOLERANCE) # ErrorMessageBox.smethod_0(self, Messages.ERR_FIX_TOO_CLOSE_USE_OVERHEAD_TOLERANCE); return else: point = [ ficorResult4.Point, ficorResult6.Point, ficorResult12.Point, ficorResult10.Point ] polyline = AcadHelper.smethod_126(point) polyline.SetBulgeAt( 0, MathHelper.smethod_60(ficorResult4.Point, ficorResult5.Point, ficorResult6.Point)) polyline.SetBulgeAt( 2, MathHelper.smethod_60(ficorResult12.Point, ficorResult11.Point, ficorResult10.Point)) polyline.set_Closed(True) resultPolylineAreaList.append(polyline) # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer); resultPolylineAreaList.append( PolylineArea( [ficorResult5.Point, ficorResult11.Point])) # line = new Line(ficorResult5.Point, ficorResult11.Point); # AcadHelper.smethod_18(transaction, blockTableRecord, line, constructionLayer); point = [ficorResult7.Point, ficorResult9.Point] polyline = AcadHelper.smethod_126(point) polyline.SetBulgeAt( 0, MathHelper.smethod_60(ficorResult7.Point, ficorResult8.Point, ficorResult9.Point)) resultPolylineAreaList.append(polyline) # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer); if (ficorResult.Status == FicorStatus.TWO): ficorInput = FicorInput.S num10 += 1 else: QMessageBox.warning( self, "Error", Messages. ERR_RADIAL_TRACK_DME_DISTANCE_DO_NOT_INTERSECT) # ErrorMessageBox.smethod_0(self, Messages.ERR_RADIAL_TRACK_DME_DISTANCE_DO_NOT_INTERSECT); return elif (point3d == None): QMessageBox.warning(self, "Error", Messages.ERR_RADIALS_TRACKS_ARE_PARALLEL) # ErrorMessageBox.smethod_0(self, Messages.ERR_RADIALS_TRACKS_ARE_PARALLEL); return elif (MathHelper.smethod_99(MathHelper.getBearing(point3d9, point3d), num2, 0.001)): point3d20 = MathHelper.distanceBearingPoint( point3d10, num3 + num1, 100) point3d21 = MathHelper.distanceBearingPoint( point3d10, num3 - num1, 100) point3d1 = MathHelper.getIntersectionPoint(point3d9, point3d12, point3d10, point3d20) point3d2 = MathHelper.getIntersectionPoint(point3d9, point3d12, point3d10, point3d21) point3d3 = MathHelper.getIntersectionPoint(point3d9, point3d11, point3d10, point3d21) point3d4 = MathHelper.getIntersectionPoint(point3d9, point3d11, point3d10, point3d20) point3d5 = MathHelper.getIntersectionPoint(point3d9, point3d, point3d10, point3d20) point3d6 = MathHelper.getIntersectionPoint(point3d9, point3d, point3d10, point3d21) point3d7 = MathHelper.getIntersectionPoint(point3d9, point3d11, point3d10, point3d) point3d8 = MathHelper.getIntersectionPoint(point3d9, point3d12, point3d10, point3d) if (MathHelper.calcDistance(point3d9, point3d) < MathHelper.calcDistance(point3d5, point3d) or MathHelper.calcDistance(point3d10, point3d) < MathHelper.calcDistance(point3d5, point3d) or MathHelper.calcDistance(point3d9, point3d) < MathHelper.calcDistance(point3d8, point3d) or MathHelper.calcDistance(point3d10, point3d) < MathHelper.calcDistance(point3d8, point3d)): QMessageBox.warning( self, "Error", Messages.ERR_FIX_TOO_CLOSE_USE_OVERHEAD_TOLERANCE) # ErrorMessageBox.smethod_0(self, Messages.ERR_FIX_TOO_CLOSE_USE_OVERHEAD_TOLERANCE); return else: resultPolylineAreaList.append( PolylineArea([point3d5, point3d6])) # line = new Line(point3d5, point3d6); # AcadHelper.smethod_18(transaction, blockTableRecord, line, constructionLayer); resultPolylineAreaList.append( PolylineArea([point3d7, point3d8])) # line = new Line(point3d7, point3d8); # AcadHelper.smethod_18(transaction, blockTableRecord, line, constructionLayer); point = [point3d1, point3d2, point3d3, point3d4] polyline = AcadHelper.smethod_126(point) polyline.set_Closed(True) resultPolylineAreaList.append(polyline) # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer); else: QMessageBox.warning(self, "Error", Messages.ERR_RADIALS_TRACKS_DO_NOT_INTERSECT) # ErrorMessageBox.smethod_0(self, Messages.ERR_RADIALS_TRACKS_DO_NOT_INTERSECT); return mapUnits = define._canvas.mapUnits() constructionLayer = AcadHelper.createVectorLayer( SurfaceTypes.FixConstruction, QGis.Line) for polylinrArea0 in resultPolylineAreaList: AcadHelper.setGeometryAndAttributesInLayer(constructionLayer, polylinrArea0) QgisHelper.appendToCanvas(define._canvas, [constructionLayer], SurfaceTypes.FixConstruction, True) self.resultLayerList2 = [constructionLayer] QgisHelper.zoomToLayers(self.resultLayerList2)
def __init__(self, point3d_0, double_0, speed_0, altitude_0, speed_1, double_1, double_2, orientationType_0): ''' Constructor ''' # double num; # double num1; # double num2; # double num3; # double num4; # Point3d point3d; # Point3d point3d1; # Point3d point3d2; # Point3d point3d3; # Point3d point3d4; # Point3d point3d5; # Point3d point3d6; # Point3d point3d7; # Point3d point3d8; # Point3d point3d9; # Point3d point3d10; # Point3d point3d11; # Point3d point3d12; # Point3d point3d13; # Point3d point3d14; # Point3d point3d15; # Point3d point3d16; # Point3d point3d17; # Point3d point3d18; # Point3d point3d19; # Point3d point3d20; # Point3d point3d21; # Point3d point3d22; # Point3d point3d23; # Point3d point3d24; # Point3d point3d25; # Point3d point3d26; # Point3d point3d27; # Point3d point3d28; # Point3d point3d29; # Point3d point3d30; # Point3d point3d31; # Point3d point3d32; # Point3d point3d33; # Point3d point3d34; # Point3d point3d35; point3d_0 = point3d_0.smethod_167(0) self.ptBase = point3d_0 self.trackDeg = MathHelper.smethod_3(double_0) self.trackRad = MathHelper.smethod_4(Unit.ConvertDegToRad(double_0)) self.orientation = orientationType_0 self.tas = Speed.smethod_0(speed_0, double_1, altitude_0) self.R = min([943.27 / self.tas.KilometresPerHour, 3]) self.radius = Distance( Unit.ConvertKMToMeters(self.tas.KilometresPerHour / (62.8318530717959 * self.R))) metresPerSecond = self.tas.MetresPerSecond metres = self.radius.Metres kilometresPerHour = speed_1.KilometresPerHour metresPerSecond1 = speed_1.MetresPerSecond r = 45 * metresPerSecond1 / self.R double2 = double_2 * 60 self.ds = Distance(metresPerSecond * double2) self.wd = Distance( math.sqrt(self.ds.Metres * self.ds.Metres + 4 * metres * metres)) num5 = 5 * metresPerSecond num6 = 11 * metresPerSecond num7 = (double2 - 5) * metresPerSecond num8 = (double2 - 5) * metresPerSecond num9 = (double2 + 21) * metresPerSecond num10 = (double2 + 21) * metresPerSecond num11 = 5 * metresPerSecond1 num12 = 11 * metresPerSecond1 num13 = num12 + r num14 = num12 + 2 * r num15 = num12 + 3 * r num16 = num12 + 4 * r num17 = num11 + 5 * r num18 = num11 + 6 * r num19 = (double2 + 6) * metresPerSecond1 + 4 * r num20 = (double2 + 6) * metresPerSecond1 + 4 * r num21 = num19 + 14 * metresPerSecond1 num22 = num19 + 14 * metresPerSecond1 num23 = num21 + r num24 = num21 + 2 * r num25 = num21 + 2 * r num26 = num21 + 3 * r num27 = num19 + 4 * r num28 = num21 + 4 * r r1 = 2 * metres + (double2 + 15) * metresPerSecond + ( double2 + 26 + 195 / self.R) * metresPerSecond1 num29 = 11 * metresPerSecond * math.cos(Unit.ConvertDegToRad( 20)) + metres * (1 + math.sin(Unit.ConvertDegToRad(20))) + ( double2 + 15) * metresPerSecond * math.tan( Unit.ConvertDegToRad(5)) + ( double2 + 26 + 125 / self.R) * metresPerSecond1 self.ias = speed_0 self.wind = speed_1 self.isa = double_1 self.altitude = altitude_0 self.time = double_2 num30 = 1 if (orientationType_0 == OrientationType.Right) else -1 turnDirection = TurnDirection.Right if ( orientationType_0 == OrientationType.Right) else TurnDirection.Left turnDirection1 = TurnDirection.Left if ( orientationType_0 == OrientationType.Right) else TurnDirection.Right point3d36 = MathHelper.distanceBearingPoint(point3d_0, 0, 0) point3d37 = MathHelper.distanceBearingPoint( point3d36, Unit.ConvertDegToRad(double_0), num5) point3d38 = MathHelper.distanceBearingPoint( point3d36, Unit.ConvertDegToRad(double_0), num6) point3d39 = MathHelper.distanceBearingPoint( point3d38, Unit.ConvertDegToRad(double_0 + num30 * 90), metres) point3d40 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + num30 * -45), metres) point3d41 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0), metres) point3d42 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + num30 * 45), metres) point3d43 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + num30 * 90), metres) point3d39 = MathHelper.distanceBearingPoint( point3d37, Unit.ConvertDegToRad(double_0 + num30 * 90), metres) MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + num30 * 90), metres) point3d44 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + num30 * 135), metres) point3d45 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + 180), metres) point3d46 = MathHelper.distanceBearingPoint( point3d43, Unit.ConvertDegToRad(double_0 + 180 - num30 * 5), num7) point3d47 = MathHelper.distanceBearingPoint( point3d43, Unit.ConvertDegToRad(double_0 + 180 - num30 * 5), num9) point3d48 = MathHelper.distanceBearingPoint( point3d43, Unit.ConvertDegToRad(double_0 + 180 + num30 * 5), num8) point3d49 = MathHelper.distanceBearingPoint( point3d43, Unit.ConvertDegToRad(double_0 + 180 + num30 * 5), num10) point3d39 = MathHelper.distanceBearingPoint( point3d47, Unit.ConvertDegToRad(double_0 - num30 * 90), metres) point3d50 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + 180 - num30 * 45), metres) point3d51 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + 180), metres) MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + num30 * 90), metres) point3d39 = MathHelper.distanceBearingPoint( point3d49, Unit.ConvertDegToRad(double_0 - num30 * 90), metres) point3d52 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + 180), metres) point3d53 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + 180 + num30 * 45), metres) point3d54 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 - num30 * 90), metres) point3d55 = MathHelper.distanceBearingPoint( point3d48, Unit.ConvertDegToRad(double_0 - num30 * 90), metres * 2) point3d, num = MathHelper.smethod_193(point3d38, num12, point3d40, num13, point3d41, num14, False) point3d1, num1 = MathHelper.smethod_193(point3d41, num14, point3d42, num15, point3d43, num16, False) point3d2, num2 = MathHelper.smethod_193(point3d43, num16, point3d44, num17, point3d45, num18, False) point3d3, num3 = MathHelper.smethod_193(point3d47, num21, point3d50, num23, point3d51, num24, False) point3d4, num4 = MathHelper.smethod_193(point3d52, num25, point3d53, num26, point3d54, num28, False) point3d56 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(double_0 - num30 * 90), num4) point3d57 = MathHelper.distanceBearingPoint( point3d56, Unit.ConvertDegToRad(double_0 + num30 * 90), num29) point3d58 = MathHelper.distanceBearingPoint( point3d3, Unit.ConvertDegToRad(double_0 + 180), num3) point3d58 = MathHelper.getIntersectionPoint( point3d_0, MathHelper.distanceBearingPoint( point3d_0, Unit.ConvertDegToRad(double_0 + 180), 100), point3d58, MathHelper.distanceBearingPoint( point3d58, Unit.ConvertDegToRad(double_0 + 90), 100)) point3d59 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(double_0 + 180), num4) point3d59 = MathHelper.getIntersectionPoint( point3d_0, MathHelper.distanceBearingPoint( point3d_0, Unit.ConvertDegToRad(double_0 + 180), 100), point3d59, MathHelper.distanceBearingPoint( point3d59, Unit.ConvertDegToRad(double_0 + 90), 100)) point3d5 = MathHelper.distanceBearingPoint( point3d58, Unit.ConvertDegToRad(double_0), r1) if (MathHelper.calcDistance(point3d_0, point3d58) >= MathHelper.calcDistance(point3d_0, point3d59) ) else MathHelper.distanceBearingPoint( point3d59, Unit.ConvertDegToRad(double_0), r1) self.ptE = MathHelper.getIntersectionPoint( point3d5, MathHelper.distanceBearingPoint( point3d5, Unit.ConvertDegToRad(double_0 + 90), 100), point3d57, MathHelper.distanceBearingPoint(point3d57, Unit.ConvertDegToRad(double_0), 100)) self.nominal = PolylineArea() point3d56 = MathHelper.distanceBearingPoint( point3d_0, Unit.ConvertDegToRad(double_0 + num30 * 90), 2 * metres) point3d58 = MathHelper.distanceBearingPoint( point3d56, Unit.ConvertDegToRad(double_0 + 180), self.ds.Metres) point3d59 = MathHelper.distanceBearingPoint( point3d58, Unit.ConvertDegToRad(double_0 - num30 * 90), 2 * metres) self.nominal.Add( PolylineAreaPoint( point3d_0, MathHelper.smethod_59(Unit.ConvertDegToRad(double_0), point3d_0, point3d56))) self.nominal.method_1(point3d56) self.nominal.Add( PolylineAreaPoint( point3d58, MathHelper.smethod_59(Unit.ConvertDegToRad(double_0 + 180), point3d58, point3d59))) self.nominal.method_1(point3d59) self.nominal.method_1(point3d_0) self.wd = Distance(MathHelper.calcDistance(point3d_0, point3d58)) self.area = PolylineArea() point3dCollection = [] point3dCollection.append( MathHelper.distanceBearingPoint(point3d, Unit.ConvertDegToRad(double_0), num)) point3dCollection.append( MathHelper.distanceBearingPoint(point3d1, Unit.ConvertDegToRad(double_0), num1)) point3dCollection.append( MathHelper.distanceBearingPoint( point3d3, Unit.ConvertDegToRad(double_0 + num30 * 90), num3)) point3dCollection.append( MathHelper.distanceBearingPoint( point3d3, Unit.ConvertDegToRad(double_0 + 180), num3)) point3dCollection.append( MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(double_0 + 180), num4)) point3dCollection.append( MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(double_0 - num30 * 90), num4)) point3dCollection.append( MathHelper.distanceBearingPoint(point3d55, Unit.ConvertDegToRad(double_0), num27)) point3d7, point3d8 = MathHelper.smethod_91(point3d3, num3, point3d4, num4, turnDirection) point3d9, point3d10 = MathHelper.smethod_91(point3d4, num4, point3d55, num27, turnDirection) point3d11, point3d12 = MathHelper.smethod_91(point3d4, num4, point3d, num, turnDirection) point3d13, point3d14 = MathHelper.smethod_91(point3d4, num4, point3d1, num1, turnDirection) point3d15, point3d16 = MathHelper.smethod_91(point3d4, num4, point3d3, num3, turnDirection) point3d17, point3d18 = MathHelper.smethod_91(point3d55, num27, point3d, num, turnDirection) point3d19, point3d20 = MathHelper.smethod_91(point3d55, num27, point3d1, num1, turnDirection) point3d21, point3d22 = MathHelper.smethod_91(point3d55, num27, point3d3, num3, turnDirection) point3d23, point3d6 = MathHelper.smethod_91(point3d, num, point3d1, num1, turnDirection) point3d24, point3d25 = MathHelper.smethod_91(point3d1, num1, point3d46, num19, turnDirection) point3d26, point3d27 = MathHelper.smethod_91(point3d46, num19, point3d3, num3, turnDirection) point3d28, point3d29 = MathHelper.smethod_91(point3d43, num16, point3d48, num20, turnDirection1) point3d30, point3d31 = MathHelper.smethod_91(point3d48, num20, point3d49, num22, turnDirection1) if (num4 >= MathHelper.calcDistance(point3d4, point3d55) + num27): self.area.method_1(point3d7) self.area.method_3( point3d8, MathHelper.smethod_57(turnDirection, point3d8, point3d9, point3d4)) self.area.method_1(point3d9) if (num27 <= MathHelper.calcDistance(point3d55, point3d1) + num1): flag = False if (num27 < MathHelper.calcDistance(point3d55, point3d) + num): point3d39 = MathHelper.distanceBearingPoint( point3d18, MathHelper.getBearing(point3d17, point3d18) + 1.5707963267949 * num30, 100) flag = MathHelper.smethod_119( point3d23, point3d18, point3d39) if (turnDirection != TurnDirection.Right ) else MathHelper.smethod_115( point3d23, point3d18, point3d39) if (flag): self.area.Add( PolylineAreaPoint( point3d10, MathHelper.smethod_57(turnDirection, point3d10, point3d17, point3d55))) self.area.method_1(point3d17) self.area.method_3( point3d18, MathHelper.smethod_57(turnDirection, point3d18, point3d23, point3d)) self.area.method_3( point3d23, MathHelper.smethod_57(turnDirection, point3d23, point3d24, point3d1)) self.area.method_1(point3d24) else: self.area.Add( PolylineAreaPoint( point3d10, MathHelper.smethod_57(turnDirection, point3d10, point3d19, point3d55))) self.area.method_1(point3d19) self.area.Add( PolylineAreaPoint( point3d20, MathHelper.smethod_57(turnDirection, point3d20, point3d24, point3d1))) self.area.method_1(point3d24) self.area.method_3( point3d25, MathHelper.smethod_57(turnDirection, point3d25, point3d26, point3d46)) self.area.method_1(point3d26) self.area.method_3( point3d27, MathHelper.smethod_57(turnDirection, point3d27, point3d7, point3d3)) self.area.method_1(point3d7) else: self.area.method_3( point3d10, MathHelper.smethod_57(turnDirection, point3d10, point3d21, point3d55)) self.area.method_1(point3d21) self.area.method_3( point3d22, MathHelper.smethod_57(turnDirection, point3d22, point3d7, point3d3)) self.area.method_1(point3d7) elif (num4 <= MathHelper.calcDistance(point3d4, point3d1) + num1): flag1 = False if (num4 < MathHelper.calcDistance(point3d4, point3d) + num): point3d39 = MathHelper.distanceBearingPoint( point3d12, MathHelper.getBearing(point3d11, point3d12) + 1.5707963267949 * num30, 100) flag1 = MathHelper.smethod_119( point3d23, point3d12, point3d39) if (turnDirection != TurnDirection.Right ) else MathHelper.smethod_115( point3d23, point3d12, point3d39) if (flag1): self.area.method_1(point3d7) self.area.method_3( point3d8, MathHelper.smethod_57(turnDirection, point3d8, point3d11, point3d4)) self.area.method_1(point3d11) self.area.method_3( point3d12, MathHelper.smethod_57(turnDirection, point3d12, point3d23, point3d)) self.area.method_3( point3d23, MathHelper.smethod_57(turnDirection, point3d23, point3d24, point3d1)) self.area.method_1(point3d24) else: self.area.method_1(point3d7) self.area.method_3( point3d8, MathHelper.smethod_57(turnDirection, point3d8, point3d13, point3d4)) self.area.method_1(point3d13) self.area.method_3( point3d14, MathHelper.smethod_57(turnDirection, point3d14, point3d24, point3d1)) self.area.method_1(point3d24) self.area.method_3( point3d25, MathHelper.smethod_57(turnDirection, point3d25, point3d26, point3d46)) self.area.method_1(point3d26) self.area.method_3( point3d27, MathHelper.smethod_57(turnDirection, point3d27, point3d7, point3d3)) self.area.method_1(point3d7) else: self.area.method_1(point3d7) self.area.method_3( point3d8, MathHelper.smethod_57(turnDirection, point3d8, point3d15, point3d4)) self.area.method_1(point3d15) self.area.method_3( point3d16, MathHelper.smethod_57(turnDirection, point3d16, point3d7, point3d3)) self.area.method_1(point3d7) self.outboundLineTop = PolylineArea() self.outboundLineTop.method_1(point3d24) self.outboundLineTop.method_3( point3d25, MathHelper.smethod_57(turnDirection, point3d25, point3d26, point3d46)) # PolylineArea polylineArea = self.outboundLineTop; point3dArray = [point3d26, point3d27] self.outboundLineTop.method_7(point3dArray) self.outboundLineBottom = PolylineArea() self.outboundLineBottom.method_1(point3d28) self.outboundLineBottom.method_3( point3d29, MathHelper.smethod_57(turnDirection1, point3d29, point3d30, point3d48)) # PolylineArea polylineArea1 = self.outboundLineBottom; point3dArray = [point3d30, point3d31] self.outboundLineBottom.method_7(point3dArray) self.spiral = PolylineArea() if (MathHelper.calcDistance(point3d, point3d_0) <= num): point3d32_39 = [] MathHelper.smethod_34( point3d_0, MathHelper.distanceBearingPoint(point3d_0, Unit.ConvertDegToRad(double_0), 100), point3d, num, point3d32_39) point3d32 = point3d32_39[0] point3d39 = point3d32_39[1] point3d33 = MathHelper.distanceBearingPoint( point3d, MathHelper.getBearing(point3d, point3d38), num) self.spiral.Add( PolylineAreaPoint( point3d32, MathHelper.smethod_57(turnDirection, point3d32, point3d33, point3d))) else: point3d32, point3d33 = MathHelper.smethod_91( point3d_0, 0, point3d, num, turnDirection) self.spiral.method_1(point3d32) point3d34, point3d35 = MathHelper.smethod_91(point3d, num, point3d1, num1, turnDirection) self.spiral.Add( PolylineAreaPoint( point3d33, MathHelper.smethod_57(turnDirection, point3d33, point3d34, point3d))) point3d33 = point3d34 point3d34, point3d35 = MathHelper.smethod_91(point3d1, num1, point3d2, num2, turnDirection) self.spiral.Add( PolylineAreaPoint( point3d33, MathHelper.smethod_57(turnDirection, point3d33, point3d34, point3d1))) point3d33 = point3d34 point3d39 = MathHelper.distanceBearingPoint( point3d2, Unit.ConvertDegToRad(double_0 + 180), num2) self.spiral.Add( PolylineAreaPoint( point3d33, MathHelper.smethod_57(turnDirection, point3d33, point3d39, point3d2))) self.spiral.method_1(point3d39) self.method_0(point3dCollection) self.method_1( MathHelper.distanceBearingPoint(point3d1, Unit.ConvertDegToRad(double_0), num1), MathHelper.distanceBearingPoint( point3d2, Unit.ConvertDegToRad(double_0 + num30 * 90), num2), MathHelper.distanceBearingPoint( point3d2, Unit.ConvertDegToRad(double_0 + 180), num2)) point3d56 = MathHelper.distanceBearingPoint( point3d_0, Unit.ConvertDegToRad(double_0 + 180), 1000) point3d39 = MathHelper.getIntersectionPoint(point3d_0, point3d56, point3d7, point3d8) point3d6_58 = [] MathHelper.smethod_34(point3d_0, point3d56, point3d3, num3, point3d6_58) point3d6 = point3d6_58[0] point3d58 = point3d6_58[1] point3d6_59 = [] MathHelper.smethod_34(point3d_0, point3d56, point3d4, num4, point3d6_59) point3d6 = point3d6_59[0] point3d59 = point3d6_59[1] if (orientationType_0 == OrientationType.Right): if (not MathHelper.smethod_119(point3d39, point3d3, point3d7) or not MathHelper.smethod_115(point3d39, point3d4, point3d8)): self.ptC = point3d58 if (MathHelper.calcDistance( point3d_0, point3d58) > MathHelper.calcDistance( point3d_0, point3d59)) else point3d59 else: self.ptC = point3d39 elif (not MathHelper.smethod_115(point3d39, point3d3, point3d7) or not MathHelper.smethod_119(point3d39, point3d4, point3d8)): self.ptC = point3d58 if ( MathHelper.calcDistance(point3d_0, point3d58) > MathHelper.calcDistance(point3d_0, point3d59)) else point3d59 else: self.ptC = point3d39 num31 = MathHelper.calcDistance(self.ptC, point3d43) point3d60 = MathHelper.distanceBearingPoint( self.ptC, MathHelper.getBearing(self.ptC, point3d43) + math.asin(num16 / num31) * num30, math.sqrt(num31 * num31 - num16 * num16)) point3d6_58 = [] MathHelper.smethod_34(self.ptC, point3d60, point3d1, num1, point3d6_58) point3d6 = point3d6_58[0] point3d58 = point3d6_58[1] point3d6_59 = [] MathHelper.smethod_34(self.ptC, point3d60, point3d2, num2, point3d6_59) point3d6 = point3d6_59[0] point3d59 = point3d6_59[1] self.ptR = point3d58 if ( MathHelper.calcDistance(self.ptC, point3d58) > MathHelper.calcDistance(self.ptC, point3d59)) else point3d59
def smethod_2(position_0, position_1): return Distance( Unit.ConvertMeterToNM( MathHelper.calcDistance(position_0, position_1)), DistanceUnits.NM)
def smethod_3(position_0, double_0, distance_0): return MathHelper.distanceBearingPoint(position_0, Unit.ConvertDegToRad(double_0), distance_0.Metres)
def initParametersPan(self): ui = Ui_HoldingRnpGeneral() self.parametersPanel = ui FlightPlanBaseDlg.initParametersPan(self) self.parametersPanel.txtTas.setEnabled(False) self.parametersPanel.pnlWaypoint = PositionPanel( self.parametersPanel.holding) self.parametersPanel.pnlWaypoint.groupBox.setTitle("Waypoint Position") self.parametersPanel.pnlWaypoint.hideframe_Altitude() self.parametersPanel.pnlWaypoint.setObjectName("positionWaypoint") self.parametersPanel.pnlWaypoint.btnCalculater.hide() self.parametersPanel.verticalLayout.insertWidget( 0, self.parametersPanel.pnlWaypoint) self.parametersPanel.pnlWind = WindPanel( self.parametersPanel.grbParameters) self.parametersPanel.vLayout_grbParameters.insertWidget( 5, self.parametersPanel.pnlWind) self.parametersPanel.pnlWind.setAltitude( Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT)) # self.resize(460,600) self.parametersPanel.cmbConstruction.addItems(["2D", "3D"]) self.parametersPanel.cmbAircraftCategory_2.addItems( ["A", "B", "C", "D", "E", "H", "Custom"]) self.parametersPanel.cmbOrientation.addItems( [OrientationType.Left, OrientationType.Right]) # self.parametersPanel.cmbOrientation.setCurrentIndex(1) # # '''Event Handlers Connect''' # self.parametersPanel.txtAltitude.textChanged.connect(self.method_31) # self.parametersPanel.cmbTurnLimitation.currentIndexChanged.connect(self.method_28) # self.parametersPanel.btnCaptureTrack.clicked.connect(self.captureBearing) self.parametersPanel.cmbAircraftCategory_2.currentIndexChanged.connect( self.changeCategory) self.parametersPanel.cmbAircraftCategory_2.setCurrentIndex(3) self.frame_8_1 = QFrame(self) sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) # sizePolicy.setHeightForWidth(self.frame_8.sizePolicy().hasHeightForWidth()) self.frame_8_1.setSizePolicy(sizePolicy) self.frame_8_1.setFrameShape(QFrame.StyledPanel) self.frame_8_1.setFrameShadow(QFrame.Raised) self.frame_8_1.setObjectName("frame_8") self.horizontalLayout_10_1 = QHBoxLayout(self.frame_8_1) self.horizontalLayout_10_1.setAlignment(Qt.AlignHCenter) self.horizontalLayout_10_1.setSpacing(0) self.horizontalLayout_10_1.setMargin(0) self.horizontalLayout_10_1.setObjectName("horizontalLayout_10") self.label_2_1 = QLabel(self.frame_8_1) self.label_2_1.setMinimumSize(QSize(140, 16777215)) # self.label_2_1.setFixedWidth(100) self.label_2_1.setText("MOCmultiplier") font = QFont() font.setFamily("Arial") font.setBold(False) font.setWeight(50) self.label_2_1.setFont(font) self.label_2_1.setObjectName("label_2_1") self.horizontalLayout_10_1.addWidget(self.label_2_1) self.parametersPanel.mocSpinBox = QSpinBox(self.frame_8_1) self.parametersPanel.mocSpinBox.setFont(font) self.parametersPanel.mocSpinBox.setObjectName("mocSpinBox") sizePolicy = QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.parametersPanel.mocSpinBox.sizePolicy().hasHeightForWidth()) self.parametersPanel.mocSpinBox.setSizePolicy(sizePolicy) self.parametersPanel.mocSpinBox.setMinimum(1) self.parametersPanel.mocSpinBox.setMinimumSize(QSize(140, 16777215)) # self.parametersPanel.mocSpinBox.setFixedWidth(100) self.horizontalLayout_10_1.addWidget(self.parametersPanel.mocSpinBox) # self.verticalLayout_9.addWidget(self.frame_8_1) self.parametersPanel.vLayout_grbParameters.addWidget(self.frame_8_1) self.parametersPanel.btnIasHelp.clicked.connect(self.iasHelpShow) self.parametersPanel.frame_ConstructionType_2.hide() self.parametersPanel.txtIas.textChanged.connect(self.iasChanged) self.parametersPanel.txtIsa.textChanged.connect(self.isaChanged) # self.parametersPanel.txtIsa.textChanged.connect(self.isaChanged) 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( round( Unit.ConvertFeetToMeter( float( self.parametersPanel.txtAltitude.text())), 4))) except: self.parametersPanel.txtAltitudeM.setText("0.0") self.parametersPanel.txtMoc.textChanged.connect(self.txtMocMChanged) self.parametersPanel.txtMocFt.textChanged.connect(self.txtMocFtChanged) self.flag1 = 0 if self.flag1 == 0: self.flag1 = 1 if self.flag1 == 2: self.flag1 = 0 if self.flag1 == 1: try: self.parametersPanel.txtMocFt.setText( str( round( Unit.ConvertMeterToFeet( float(self.parametersPanel.txtMoc.text())), 4))) except: self.parametersPanel.txtMocFt.setText("0.0") self.parametersPanel.txtTas.setText( str( round( Speed.smethod_0( Speed(float(self.parametersPanel.txtIas.text())), float(self.parametersPanel.txtIsa.text()), Altitude( float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT)).Knots, 4)))
def showMarkDaSoc(self): try: flag = FlightPlanBaseDlg.btnConstruct_Click(self) # if not flag: # return point3dThr = self.parametersPanel.pnlThrPosition.Point3d point3dFaf = self.parametersPanel.pnlFapPosition.Point3d inboundTrackRad = Unit.ConvertDegToRad(self.parametersPanel.pnlInboundTrack.Value)#MathHelper.getBearing(point3dFaf, point3dThr) inboundTrack180Rad = MathHelper.smethod_4(inboundTrackRad + math.pi) estimatedAltitdeMeters = self.parametersPanel.pnlEstimatedAltitude.Value.Metres thrAltitudeMeters = self.parametersPanel.pnlThrPosition.Altitude().Metres heightLossAltitudeMeters = self.parametersPanel.pnlHeightLoss.Value.Metres rdhAltitudeMeters = self.parametersPanel.pnlRDH.Value.Metres vpa = Unit.ConvertDegToRad(self.getVPA()) xz = self.parametersPanel.pnlDistXz.Value.Metres socThrDistMeters = ((estimatedAltitdeMeters - thrAltitudeMeters - heightLossAltitudeMeters) / math.tan(vpa)) + xz daThrDistMeters = (estimatedAltitdeMeters - thrAltitudeMeters - rdhAltitudeMeters) / math.tan(vpa) sockBearing = inboundTrackRad # if socThrDistMeters < 0: # sockBearing = inboundTrack180Rad # socThrDistMeters = math.fabs(socThrDistMeters) # else: # sockBearing = inboundTrackRad daBearing = inboundTrack180Rad # if daThrDistMeters < 0: # daBearing = inboundTrackRad # daThrDistMeters = math.fabs(daThrDistMeters) # else: # daBearing = inboundTrack180Rad self.socPoint3d = MathHelper.distanceBearingPoint(point3dThr, sockBearing, -socThrDistMeters).smethod_167(self.calcSocAltitude()) self.daPoint3d = MathHelper.distanceBearingPoint(point3dThr, daBearing, daThrDistMeters) daSocLayer = AcadHelper.createVectorLayer("DA_SOC_" + self.surfaceType, QGis.Point) AcadHelper.setGeometryAndAttributesInLayer(daSocLayer, self.socPoint3d, False, {"Caption":"SOC"}) AcadHelper.setGeometryAndAttributesInLayer(daSocLayer, self.daPoint3d, False, {"Caption":"DA"}) QgisHelper.appendToCanvas(define._canvas, [daSocLayer], self.surfaceType) palSetting = QgsPalLayerSettings() palSetting.readFromLayer(daSocLayer) palSetting.enabled = True palSetting.fieldName = "Caption" palSetting.isExpression = True palSetting.placement = QgsPalLayerSettings.AroundPoint palSetting.setDataDefinedProperty(QgsPalLayerSettings.Size, True, True, '8', "") palSetting.writeToLayer(daSocLayer) QgisHelper.zoomToLayers([daSocLayer]) self.resultLayerList = [daSocLayer] # # show SOC Mark # point3d = MathHelper.distanceBearingPoint(self.socPoint3d, Unit.ConvertDegToRad(450) - 0, 100) # point3d1 = MathHelper.distanceBearingPoint(self.socPoint3d, Unit.ConvertDegToRad(450) - math.pi / 2, 100) # point3d2 = MathHelper.distanceBearingPoint(self.socPoint3d, Unit.ConvertDegToRad(450) - math.pi, 100) # point3d3 = MathHelper.distanceBearingPoint(self.socPoint3d, Unit.ConvertDegToRad(450) - (math.pi * 3) / 2 , 100) # # if self.socRubber == None: # self.socRubber = QgsRubberBand(define._canvas, QGis.Line) # self.socRubber.setColor(Qt.yellow) # else: # self.socRubber.reset(QGis.Line) # self.socRubber.addGeometry(QgsGeometry.fromPolyline([point3d, point3d2]), None) # self.socRubber.addGeometry(QgsGeometry.fromPolyline([point3d1, point3d3]), None) # circle = MathHelper.constructCircle(self.socPoint3d, 100, 16) # self.socRubber.addGeometry(QgsGeometry.fromPolyline(circle), None) # self.socRubber.show() # # self.socAnnotation.setMapPosition(self.socPoint3d) # self.socAnnotation.show() # # # show DA Mark # point3d = MathHelper.distanceBearingPoint(self.daPoint3d, Unit.ConvertDegToRad(450) - 0, 100) # point3d1 = MathHelper.distanceBearingPoint(self.daPoint3d, Unit.ConvertDegToRad(450) - math.pi / 2, 100) # point3d2 = MathHelper.distanceBearingPoint(self.daPoint3d, Unit.ConvertDegToRad(450) - math.pi, 100) # point3d3 = MathHelper.distanceBearingPoint(self.daPoint3d, Unit.ConvertDegToRad(450) - (math.pi * 3) / 2 , 100) # # if self.daRubber == None: # self.daRubber = QgsRubberBand(define._canvas, QGis.Line) # self.daRubber.setColor(Qt.yellow) # else: # self.daRubber.reset(QGis.Line) # self.daRubber.addGeometry(QgsGeometry.fromPolyline([point3d, point3d2]), None) # self.daRubber.addGeometry(QgsGeometry.fromPolyline([point3d1, point3d3]), None) # circle = MathHelper.constructCircle(self.daPoint3d, 100, 16) # self.daRubber.addGeometry(QgsGeometry.fromPolyline(circle), None) # self.daRubber.show() # # self.daAnnotation.setMapPosition(self.daPoint3d) # self.daAnnotation.show() self.putDistances() return daSocLayer except: pass
def method_37(self, point3d_0, double_0, double_1, double_2):#, out Point3dCollection point3dCollection_0) point3dCollection_0 = Point3dCollection(); if (self.parametersPanel.cmbApproachType.SelectedIndex != 0): if (self.parametersPanel.cmbRwyCode.SelectedIndex != 0): num2 = 120 if (self.parametersPanel.cmbRwyCode.SelectedIndex != 1 or not self.parametersPanel.chbAdCodeF.Checked) else 155 else: num2 = 90; point3d = MathHelper.distanceBearingPoint(point3d_0, double_0, 60); point3d1 = MathHelper.distanceBearingPoint(point3d, double_0 + 1.5707963267949, num2 / 2).smethod_167(point3d_0.get_Z()); point3d4 = MathHelper.distanceBearingPoint(point3d, double_0 - 1.5707963267949, num2 / 2).smethod_167(point3d_0.get_Z()); point3d2 = MathHelper.distanceBearingPoint(point3d1, double_0, double_2).smethod_167(point3d_0.get_Z() + double_1); point3d3 = MathHelper.distanceBearingPoint(point3d4, double_0, double_2).smethod_167(point3d_0.get_Z() + double_1); else: try: metres = self.parametersPanel.txtStripWidth.Value.Metres except ValueError: raise UserWarning, "Strip Width is invalid!" point3d7 = MathHelper.distanceBearingPoint(point3d_0, double_0, 1400); point3d8 = MathHelper.distanceBearingPoint(point3d7, double_0 - 1.5707963267949, 100) try: dblTrack = float(self.parametersPanel.txtTrack.Value) except ValueError: raise UserWarning, "Track is invalid!" try: dblRwyDir = float(self.parametersPanel.txtRwyDir.Value) except ValueError: raise UserWarning, "Runway Direction is invalid!" listTurn = [] num3 = MathHelper.smethod_77(dblTrack, dblRwyDir, AngleUnits.Degrees, listTurn) turnDirection = listTurn[0] if (num3 > 31): raise UserWarning, Messages.ERR_VSS_COURSE_CHANGE try: point3d5 = MathHelper.getIntersectionPoint(point3d7, point3d8, self.parametersPanel.txtTrack.captureRadialTool.startPoint, self.parametersPanel.txtTrack.captureRadialTool.endPoint) except AttributeError: raise UserWarning, "Please pick up Inbound Track!" if point3d5 == None: raise UserWarning, Messages.ERR_VSS_INTERSECTION_POINT_1400m num4 = MathHelper.calcDistance(point3d7, point3d5); if (num4 > 151): raise UserWarning, Messages.ERR_VSS_GATE try: dblThrFaf = float(self.parametersPanel.txtThrFaf.Value.Metres) except ValueError: raise UserWarning, "ThrFaf is invalid!" point3d6 = MathHelper.getIntersectionPoint(point3d_0, MathHelper.distanceBearingPoint(point3d_0, double_0, 100), self.parametersPanel.txtTrack.captureRadialTool.startPoint, self.parametersPanel.txtTrack.captureRadialTool.endPoint) if point3d6 == None: if (not MathHelper.smethod_115(point3d5, point3d_0, point3d7)): num = 0.15; num1 = (num4 + 201) / 1340; else: num = (num4 + 201) / 1340; num1 = 0.15; elif (not MathHelper.smethod_119(point3d6, point3d7, point3d8) and MathHelper.calcDistance(point3d6, point3d7) > 100): if (MathHelper.calcDistance(point3d6, point3d7) <= 1400): raise UserWarning, Messages.ERR_VSS_INBOUND_TRACK if (not MathHelper.smethod_115(point3d5, point3d_0, point3d7)): num = 0.15; num1 = (num4 + 201) / 1340; else: num = (num4 + 201) / 1340; num1 = 0.15; elif (MathHelper.calcDistance(point3d6, point3d7) < dblThrFaf - 1400): point3d = MathHelper.distanceBearingPoint(point3d6, MathHelper.getBearing(self.parametersPanel.txtTrack.captureRadialTool.endPoint, self.parametersPanel.txtTrack.captureRadialTool.startPoint), 100); if (not MathHelper.smethod_115(point3d, point3d_0, point3d7)): num = 0.15; num1 = math.tan(Unit.ConvertDegToRad(num3) + math.atan(0.15)); else: num = math.tan(Unit.ConvertDegToRad(num3) + math.atan(0.15)); num1 = 0.15; elif (not MathHelper.smethod_115(point3d5, point3d_0, point3d7)): num = 0.15; num1 = (num4 + 201) / 1340; else: num = (num4 + 201) / 1340; num1 = 0.15; point3d = MathHelper.distanceBearingPoint(point3d_0, double_0, 60); point3d1 = MathHelper.distanceBearingPoint(point3d, double_0 - 1.5707963267949, metres / 2).smethod_167(point3d_0.get_Z()); point3d4 = MathHelper.distanceBearingPoint(point3d, double_0 + 1.5707963267949, metres / 2).smethod_167(point3d_0.get_Z()); point3d = MathHelper.distanceBearingPoint(point3d1, double_0, double_2); point3d2 = MathHelper.distanceBearingPoint(point3d, double_0 - 1.5707963267949, num * double_2).smethod_167(point3d_0.get_Z() + double_1); point3d = MathHelper.distanceBearingPoint(point3d4, double_0, double_2); point3d3 = MathHelper.distanceBearingPoint(point3d, double_0 + 1.5707963267949, num1 * double_2).smethod_167(point3d_0.get_Z() + double_1); point3dCollection_0.Add(point3d1); point3dCollection_0.Add(point3d2); point3dCollection_0.Add(point3d3); point3dCollection_0.Add(point3d4); return True, point3dCollection_0
def method_36_Construct(self, bool_0): polylines = [] point3d5 = self.parametersPanel.pnlWaypoint.Point3d value = float(self.parametersPanel.txtTrack.Value) value1 = float(self.parametersPanel.txtRnpValue.text()) speed = Speed(float(self.parametersPanel.txtIas.text())) altitude = Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT) num1 = float(self.parametersPanel.txtIsa.text()) value2 = float(self.parametersPanel.txtTime.text()) speed1 = Speed(float(self.parametersPanel.pnlWind.speedBox.text())) num = 15 if (altitude.Feet >= 24500) else 23 speed2 = Speed.smethod_0(speed, num1, altitude) metresPerSecond = value2 * 60 * speed2.MetresPerSecond num2 = math.pow(speed2.Knots + speed1.Knots, 2) / ( 34313 * math.tan(Unit.ConvertDegToRad(num))) * 1852 num3 = value1 * 1852 num4 = num2 * (1 - math.sin(Unit.ConvertDegToRad(20))) / ( 2 * math.cos(Unit.ConvertDegToRad(20))) num5 = value1 * 1852 + 3704 if (num5 < 9260): num5 = 9260 point3d4 = MathHelper.distanceBearingPoint( point3d5, Unit.ConvertDegToRad(value + 90), num2 / 2) if (self.parametersPanel.cmbOrientation.currentText() != OrientationType.Left) else MathHelper.distanceBearingPoint( point3d5, Unit.ConvertDegToRad(value - 90), num2 / 2) point3d6 = MathHelper.distanceBearingPoint(point3d4, Unit.ConvertDegToRad(value), num4) point3d7 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(value + 180), metresPerSecond) num6 = num2 / 2 + 1.414 * num3 num7 = num2 / 2 + num3 point3d8 = MathHelper.distanceBearingPoint(point3d6, Unit.ConvertDegToRad(value), num6) point3d9 = MathHelper.distanceBearingPoint( point3d6, Unit.ConvertDegToRad(value + 90) - math.acos(num7 / num6), num6) point3d10 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value + 90) + math.acos(num7 / num6), num6) point3d11 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value + 180), num6) point3d12 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value - 90) - math.acos(num7 / num6), num6) point3d13 = MathHelper.distanceBearingPoint( point3d6, Unit.ConvertDegToRad(value - 90) + math.acos(num7 / num6), num6) point3d = MathHelper.getIntersectionPoint( point3d9, MathHelper.distanceBearingPoint( point3d9, MathHelper.getBearing(point3d6, point3d9) - Unit.ConvertDegToRad(90), 100), point3d8, MathHelper.distanceBearingPoint(point3d8, Unit.ConvertDegToRad(value + 90), 100)) point3d1 = MathHelper.getIntersectionPoint( point3d10, MathHelper.distanceBearingPoint( point3d10, MathHelper.getBearing(point3d7, point3d10) + Unit.ConvertDegToRad(90), 100), point3d11, MathHelper.distanceBearingPoint(point3d11, Unit.ConvertDegToRad(value + 90), 100)) point3d2 = MathHelper.getIntersectionPoint( point3d12, MathHelper.distanceBearingPoint( point3d12, MathHelper.getBearing(point3d7, point3d12) - Unit.ConvertDegToRad(90), 100), point3d11, MathHelper.distanceBearingPoint(point3d11, Unit.ConvertDegToRad(value - 90), 100)) point3d3 = MathHelper.getIntersectionPoint( point3d13, MathHelper.distanceBearingPoint( point3d13, MathHelper.getBearing(point3d6, point3d13) + Unit.ConvertDegToRad(90), 100), point3d8, MathHelper.distanceBearingPoint(point3d8, Unit.ConvertDegToRad(value - 90), 100)) polylines1 = [] polylineArea = None if (bool_0): num8 = num2 / 2 point3d14 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(value + 90), num8) point3d15 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value + 90), num8) point3d16 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value - 90), num8) point3d17 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(value - 90), num8) point3dArray = [point3d14, point3d15, point3d16, point3d17] polylineArea = PolylineArea(point3dArray) polylineArea.method_19( 1, -1 ) #MathHelper.smethod_57(TurnDirection.Right, point3d15, point3d16, point3d7)) polylineArea.method_19( 3, -1 ) #MathHelper.smethod_57(TurnDirection.Right, point3d17, point3d14, point3d4)) polylines1.append(polylineArea) point3dArray1 = [point3d9, point3d10, point3d12, point3d13] polylineArea1 = PolylineArea(point3dArray1) # for point3d0 in point3dArray1: # polyline1.Add(point3d0) polylineArea1.method_19( 1, MathHelper.smethod_57(TurnDirection.Right, point3d10, point3d12, point3d7)) polylineArea1.method_19( 3, MathHelper.smethod_57(TurnDirection.Right, point3d13, point3d9, point3d6)) # polylineArea1.set_closed(True) # polyline1.SetDatabaseDefaults(); polylines1.append(polylineArea1) polylineAreaLineList = [ PolylineArea( [polylineArea1[0].Position, polylineArea1[1].Position]), PolylineArea( [polylineArea1[2].Position, polylineArea1[3].Position]) ] polylineAreaArc0 = PolylineArea() polylineAreaArc0.Add(polylineArea1[1]) polylineAreaArc0.Add(PolylineAreaPoint(polylineArea1[2].Position)) polylineAreaArc1 = PolylineArea() polylineAreaArc1.Add(polylineArea1[3]) polylineAreaArc1.Add(PolylineAreaPoint(polylineArea1[0].Position)) polylineAreaArcList = [polylineAreaArc0, polylineAreaArc1] num9 = num5 / 5 polylineAreaArcListResult = [] polylineAreaLineListResult = [] for i in range(1, 6): polylineAreaL0 = polylineAreaLineList[0].getOffsetCurveNo( num9 * i, 4) polylineAreaLineListResult.append(polylineAreaL0) polylineAreaA0 = polylineAreaArcList[0].getOffsetCurveNo( num9 * i, 4) polylineAreaT = PolylineArea() polylineAreaT.Add( PolylineAreaPoint( polylineAreaA0[0].Position, MathHelper.smethod_60( polylineAreaA0[0].Position, polylineAreaA0[int(len(polylineAreaA0) / 2)].Position, polylineAreaA0[len(polylineAreaA0) - 1].Position))) polylineAreaT.Add( PolylineAreaPoint(polylineAreaA0[len(polylineAreaA0) - 1].Position)) polylineAreaArcListResult.append(polylineAreaT) polylineAreaL1 = polylineAreaLineList[1].getOffsetCurveNo( num9 * i, 4) polylineAreaLineListResult.append(polylineAreaL1) polylineAreaA1 = polylineAreaArcList[1].getOffsetCurveNo( num9 * i, 4) polylineAreaT = PolylineArea() polylineAreaT.Add( PolylineAreaPoint( polylineAreaA1[0].Position, MathHelper.smethod_60( polylineAreaA1[0].Position, polylineAreaA1[int(len(polylineAreaA1) / 2)].Position, polylineAreaA1[len(polylineAreaA1) - 1].Position))) polylineAreaT.Add( PolylineAreaPoint(polylineAreaA1[len(polylineAreaA1) - 1].Position)) polylineAreaArcListResult.append(polylineAreaT) polylineAreaLineListResult.append( PolylineArea([ polylineAreaL0[len(polylineAreaL0) - 1].Position, polylineAreaA0[0].Position ])) polylineAreaLineListResult.append( PolylineArea([ polylineAreaA0[len(polylineAreaA0) - 1].Position, polylineAreaL1[0].Position ])) polylineAreaLineListResult.append( PolylineArea([ polylineAreaL1[len(polylineAreaL1) - 1].Position, polylineAreaA1[0].Position ])) polylineAreaLineListResult.append( PolylineArea([ polylineAreaA1[len(polylineAreaA1) - 1].Position, polylineAreaL0[0].Position ])) return polylineAreaLineListResult, polylineAreaArcListResult, polylineArea
def btnConstruct_Click(self): flag = FlightPlanBaseSimpleDlg.btnConstruct_Click(self) if not flag: return num = 0.0 point3d = Point3D() point3d1 = Point3D() if not self.method_27(True): return point3d2 = self.parametersPanel.pnlTHR.getPoint3D() point3d3 = self.parametersPanel.pnlNavAid.getPoint3D() num1 = Unit.ConvertDegToRad( float(self.parametersPanel.txtDirection.Value)) point3d4 = MathHelper.distanceBearingPoint(point3d2, num1 + 3.14159265358979, 1400) num2 = -1 if MathHelper.smethod_115(point3d3, point3d2, point3d4): num2 = 1 point3d5 = MathHelper.distanceBearingPoint( point3d4, num2 * 1.5707963267949 + num1, 150) point3d6 = MathHelper.distanceBearingPoint(point3d5, num1 + 3.14159265358979, 17120) if self.parametersPanel.cmbCategory.currentIndex() != 1: num = 0.267949192 elif self.parametersPanel.cmbCategory.currentIndex() == 1: num = 0.577350269 point3d7 = MathHelper.distanceBearingPoint( point3d6, num1 - num2 * 1.5707963267949, 150 + num * 17120) MathHelper.distanceBearingPoint(point3d5, num1, 150 / num) point3d = MathHelper.getIntersectionPoint( point3d3, MathHelper.distanceBearingPoint(point3d3, num1 + 1.5707963267949, 100), point3d2, point3d4) if point3d == None: raise UserWarning, Messages.ERR_FAILED_TO_CALCULATE_INTERSECTION_POINT num3 = MathHelper.calcDistance(point3d3, point3d) / 0.087488664 if MathHelper.calcDistance(point3d, point3d4) >= num3: point3d1 = point3d4 MathHelper.distanceBearingPoint(point3d6, num1 - num2 * 1.5707963267949, 1525.321791) else: point3d1 = MathHelper.distanceBearingPoint(point3d, num1 + 3.14159265358979, num3) MathHelper.distanceBearingPoint( point3d6, num1 - num2 * 1.5707963267949, 150 + 0.087488664 * (17120 - MathHelper.calcDistance(point3d4, point3d1))) MathHelper.distanceBearingPoint(point3d4, num1 + 3.14159265358979, 17120) constructionLayer = AcadHelper.createVectorLayer( "AAConstruction", QGis.Line) AcadHelper.setGeometryAndAttributesInLayer( constructionLayer, PolylineArea([point3d7, point3d4])) AcadHelper.setGeometryAndAttributesInLayer( constructionLayer, PolylineArea([point3d1, point3d4, point3d5])) QgisHelper.appendToCanvas(define._canvas, [constructionLayer], SurfaceTypes.ApproachAlignment) QgisHelper.zoomToLayers([constructionLayer]) self.resultLayerList = [constructionLayer]
def btnConstruct_Click(self): qgsLayerTreeView = define._mLayerTreeView groupName = self.surfaceType1 layerTreeModel = qgsLayerTreeView.layerTreeModel() layerTreeGroup = layerTreeModel.rootGroup() rowCount = layerTreeModel.rowCount() groupExisting = False if rowCount > 0: for i in range(rowCount): qgsLayerTreeNode = layerTreeModel.index2node( layerTreeModel.index(i, 0)) if qgsLayerTreeNode.nodeType() == 0: qgsLayerTreeNode._class_ = QgsLayerTreeGroup if isinstance(qgsLayerTreeNode, QgsLayerTreeGroup ) and qgsLayerTreeNode.name() == groupName: groupExisting = True if groupExisting: if len(self.resultLayerList1) > 0: QgisHelper.removeFromCanvas(define._canvas, self.resultLayerList1) self.resultLayerList1 = [] else: QMessageBox.warning( self, "Warning", "Please remove \"" + self.surfaceType1 + "\" layer group from LayerTreeView.") return num = None num1 = None num2 = None num3 = None point3d = None resultPolylineAreaList = [] # if (!AcadHelper.Ready) # { # return; # } # if (!self.method_27(true)) # { # return; # } # string constructionLayer = base.ConstructionLayer; point3d1 = self.parametersPanel.pnlNavAid.Point3d value = float(self.parametersPanel.txtTrackRadial.Value) metres = Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT).Metres z = metres - point3d1.get_Z() if (self.parametersPanel.cmbNavAidType.currentIndex() != 0): num = 450 - value + 90 num1 = 15 num2 = 25 num3 = z * 0.839099631 else: num = 450 - value + 90 num1 = 5 num2 = 15 num3 = z * 1.191753593 num4 = Unit.ConvertDegToRad(num1) num5 = Unit.ConvertDegToRad(360 - num1) num6 = Unit.ConvertDegToRad(180 - num2) num7 = Unit.ConvertDegToRad(180 + num2) num8 = 0 num9 = Unit.ConvertDegToRad(180) point3d2 = MathHelper.distanceBearingPoint(point3d1, num4, num3) point3d3 = MathHelper.distanceBearingPoint(point3d1, num5, num3) point3d = MathHelper.smethod_68( point3d2, MathHelper.distanceBearingPoint(point3d1, num8, num3), point3d3) if (point3d == None): QMessageBox.warning(self, "Error", Messages.ERR_FAILED_TO_CALCULATE_CENTER_POINT) return # throw new Exception(Messages.ERR_FAILED_TO_CALCULATE_CENTER_POINT); num10 = MathHelper.smethod_55( point3d2, point3d3, MathHelper.calcDistance(point3d2, point3d)) point3d2 = MathHelper.distanceBearingPoint(point3d1, num6, num3) point3d3 = MathHelper.distanceBearingPoint(point3d1, num7, num3) point3d = MathHelper.smethod_68( point3d2, MathHelper.distanceBearingPoint(point3d1, num9, num3), point3d3) if (point3d == None): QMessageBox.warning(self, "Error", Messages.ERR_FAILED_TO_CALCULATE_CENTER_POINT) # throw new Exception(Messages.ERR_FAILED_TO_CALCULATE_CENTER_POINT); num11 = MathHelper.smethod_55( point3d2, point3d3, MathHelper.calcDistance(point3d2, point3d)) matrix3d = Matrix3d.Rotation(Unit.ConvertDegToRad(num), Vector3d(0, 0, 1), point3d1) point3d2 = MathHelper.distanceBearingPoint(point3d1, num8, num3) point3d3 = MathHelper.distanceBearingPoint(point3d1, num9, num3) line = PolylineArea([point3d2, point3d3]) resultPolylineAreaList.append( self.TransformBy(line, Unit.ConvertDegToRad(value), self.parametersPanel.pnlNavAid.Point3d) ) #.TransformBy(matrix3d)) point3d2 = MathHelper.distanceBearingPoint(point3d1, num6, num3) point3d3 = MathHelper.distanceBearingPoint(point3d1, num4, num3) point3d4 = MathHelper.distanceBearingPoint(point3d1, num5, num3) point3d5 = MathHelper.distanceBearingPoint(point3d1, num7, num3) point3dArray = [point3d2, point3d3, point3d4, point3d5, point3d2] polyline = AcadHelper.smethod_126(point3dArray) if self.parametersPanel.cmbNavAidType.currentIndex() == 0: num10 = 0.0436609429083 num11 = 0.131652497586 else: num10 = 0.131652497586 num11 = 0.221694662642 polyline.SetBulgeAt(1, num10) polyline.SetBulgeAt(3, num11) # polyline.set_Elevation(point3d1.get_Z()); resultPolylineAreaList.append( self.TransformBy(polyline, Unit.ConvertDegToRad(value), self.parametersPanel.pnlNavAid.Point3d) ) #polyline.TransformBy(matrix3d)) # polyline.TransformBy(matrix3d); # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer); # transaction.Commit(); # AcadHelper.smethod_5(); mapUnits = define._canvas.mapUnits() constructionLayer = AcadHelper.createVectorLayer( SurfaceTypes.OverheadTolerance, QGis.Line) for polylinrArea0 in resultPolylineAreaList: AcadHelper.setGeometryAndAttributesInLayer(constructionLayer, polylinrArea0) QgisHelper.appendToCanvas(define._canvas, [constructionLayer], SurfaceTypes.OverheadTolerance, True) self.resultLayerList1 = [constructionLayer] QgisHelper.zoomToLayers(self.resultLayerList1)
def method_36(self, bool_0): # Point3d point3d; # Point3d point3d1; # Point3d point3d2; # Point3d point3d3; # Point3d point3d4; # double num; polylines = [] point3d5 = self.parametersPanel.pnlWaypoint.Point3d value = float(self.parametersPanel.txtTrack.text()) value1 = float(self.parametersPanel.txtRnpValue.text()) speed = Speed(float(self.parametersPanel.txtIas.text())) altitude = Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT) num1 = float(self.parametersPanel.txtIsa.text()) value2 = float(self.parametersPanel.txtTime.text()) speed1 = Speed(float(self.parametersPanel.pnlWind.speedBox.text())) num = 15 if (altitude.Feet >= 24500) else 23 speed2 = Speed.smethod_0(speed, num1, altitude) metresPerSecond = value2 * 60 * speed2.MetresPerSecond num2 = math.pow(speed2.Knots + speed1.Knots, 2) / ( 34313 * math.tan(Unit.ConvertDegToRad(num))) * 1852 num3 = value1 * 1852 num4 = num2 * (1 - math.sin(Unit.ConvertDegToRad(20))) / ( 2 * math.cos(Unit.ConvertDegToRad(20))) num5 = value1 * 1852 + 3704 if (num5 < 9260): num5 = 9260 point3d4 = MathHelper.distanceBearingPoint( point3d5, Unit.ConvertDegToRad(value + 90), num2 / 2) if (self.parametersPanel.cmbOrientation.currentText() != OrientationType.Left) else MathHelper.distanceBearingPoint( point3d5, Unit.ConvertDegToRad(value - 90), num2 / 2) point3d6 = MathHelper.distanceBearingPoint(point3d4, Unit.ConvertDegToRad(value), num4) point3d7 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(value + 180), metresPerSecond) num6 = num2 / 2 + 1.414 * num3 num7 = num2 / 2 + num3 point3d8 = MathHelper.distanceBearingPoint(point3d6, Unit.ConvertDegToRad(value), num6) point3d9 = MathHelper.distanceBearingPoint( point3d6, Unit.ConvertDegToRad(value + 90) - math.acos(num7 / num6), num6) point3d10 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value + 90) + math.acos(num7 / num6), num6) point3d11 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value + 180), num6) point3d12 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value - 90) - math.acos(num7 / num6), num6) point3d13 = MathHelper.distanceBearingPoint( point3d6, Unit.ConvertDegToRad(value - 90) + math.acos(num7 / num6), num6) point3d = MathHelper.getIntersectionPoint( point3d9, MathHelper.distanceBearingPoint( point3d9, MathHelper.getBearing(point3d6, point3d9) - Unit.ConvertDegToRad(90), 100), point3d8, MathHelper.distanceBearingPoint(point3d8, Unit.ConvertDegToRad(value + 90), 100)) point3d1 = MathHelper.getIntersectionPoint( point3d10, MathHelper.distanceBearingPoint( point3d10, MathHelper.getBearing(point3d7, point3d10) + Unit.ConvertDegToRad(90), 100), point3d11, MathHelper.distanceBearingPoint(point3d11, Unit.ConvertDegToRad(value + 90), 100)) point3d2 = MathHelper.getIntersectionPoint( point3d12, MathHelper.distanceBearingPoint( point3d12, MathHelper.getBearing(point3d7, point3d12) - Unit.ConvertDegToRad(90), 100), point3d11, MathHelper.distanceBearingPoint(point3d11, Unit.ConvertDegToRad(value - 90), 100)) point3d3 = MathHelper.getIntersectionPoint( point3d13, MathHelper.distanceBearingPoint( point3d13, MathHelper.getBearing(point3d6, point3d13) + Unit.ConvertDegToRad(90), 100), point3d8, MathHelper.distanceBearingPoint(point3d8, Unit.ConvertDegToRad(value - 90), 100)) polylines1 = [] if (bool_0): num8 = num2 / 2 point3d14 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(value + 90), num8) point3d15 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value + 90), num8) point3d16 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value - 90), num8) point3d17 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(value - 90), num8) point3dArray = [point3d14, point3d15, point3d16, point3d17] polylineArea = PolylineArea(point3dArray) # for point3d0 in point3dArray: # polyline.Add(point3d0) polylineArea.method_19( 1, MathHelper.smethod_57(TurnDirection.Right, point3d15, point3d16, point3d7)) polylineArea.method_19( 3, MathHelper.smethod_57(TurnDirection.Right, point3d17, point3d14, point3d4)) # polyline.set_closed(True) # polyline.SetDatabaseDefaults() polylines1.append(polylineArea) point3dArray1 = [point3d9, point3d10, point3d12, point3d13] polylineArea1 = PolylineArea(point3dArray1) # for point3d0 in point3dArray1: # polyline1.Add(point3d0) polylineArea1.method_19( 1, MathHelper.smethod_57(TurnDirection.Right, point3d10, point3d12, point3d7)) polylineArea1.method_19( 3, MathHelper.smethod_57(TurnDirection.Right, point3d13, point3d9, point3d6)) # polylineArea1.set_closed(True) # polyline1.SetDatabaseDefaults(); polylines1.append(polylineArea1) num9 = num5 / 5 for i in range(1, 6): polylineArea0 = polylineArea1.getOffsetCurve(num9 * i) polylines1.append(polylineArea0) # try: # OffsetGapType offsetType = AcadHelper.OffsetType; # try # { # AcadHelper.OffsetType = OffsetGapType.Extend; # num9 = num5 / 5 # for i in range(4): # n = i + 1 # point3dCollection = polyline1.GetOffsetCurves(5) # polyline0 = Polyline() # for point3d0 in point3dCollection: # polyline0.Add(point3d0) # polylines1.append(polyline0) # polylines = polylines1 # } # finally # { # AcadHelper.OffsetType = offsetType; # } # } # catch # { # foreach (Polyline polyline2 in polylines1) # { # if (polyline2 == null) # { # continue; # } # polyline2.Dispose(); # } # throw; # } return polylines1
def initParametersPan(self): self.parametersPanel.pnlNavAid = PositionPanel( self.parametersPanel.gbNavAid) # self.parametersPanel.pnlWaypoint.groupBox.setTitle("FAWP") self.parametersPanel.pnlNavAid.btnCalculater.hide() # self.parametersPanel.pnlNavAid.hideframe_Altitude() self.parametersPanel.pnlNavAid.setObjectName("pnlNavAid") self.parametersPanel.vl_NavAid.addWidget( self.parametersPanel.pnlNavAid) # self.connect(self.parametersPanel.pnlNavAid, SIGNAL("positionChanged"), self.initResultPanel) self.parametersPanel.cmbNavAidType.addItems( [Captions.VOR, Captions.NDB]) # 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.altitudeFtChanged) self.parametersPanel.txtAltitudeM.textChanged.connect( self.altitudeMChanged) 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( round( Unit.ConvertFeetToMeter( float( self.parametersPanel.txtAltitude.text())), 4))) except: self.parametersPanel.txtAltitudeM.setText("0.0") # FixConstruction Part self.parametersPanel.pnlTrackingPosition = PositionPanel( self.parametersPanel.gbTrackingAid) self.parametersPanel.pnlTrackingPosition.btnCalculater.hide() self.parametersPanel.pnlTrackingPosition.hideframe_Altitude() self.parametersPanel.pnlTrackingPosition.setObjectName( "pnlTrackingPosition") self.parametersPanel.vl_gbTrackingAid.insertWidget( 1, self.parametersPanel.pnlTrackingPosition) # self.connect(self.parametersPanel.pnlNavAid, SIGNAL("positionChanged"), self.initResultPanel) self.parametersPanel.pnlIntersectingPosition = PositionPanel( self.parametersPanel.gbIntersectingAid) self.parametersPanel.pnlIntersectingPosition.btnCalculater.hide() self.parametersPanel.pnlIntersectingPosition.hideframe_Altitude() self.parametersPanel.pnlIntersectingPosition.setObjectName( "pnlIntersectingPosition") self.parametersPanel.vl_gbIntersectingAid.insertWidget( 1, self.parametersPanel.pnlIntersectingPosition) # self.connect(self.parametersPanel.pnlNavAid, SIGNAL("positionChanged"), self.initResultPanel) self.parametersPanel.cmbTrackingType.addItems( [Captions.VOR, Captions.NDB, Captions.LOC]) self.parametersPanel.cmbIntersectingType.addItems( [Captions.VOR, Captions.NDB, Captions.DME]) self.parametersPanel.cmbTrackingType.currentIndexChanged.connect( self.method_30) self.parametersPanel.cmbIntersectingType.currentIndexChanged.connect( self.method_30) # self.parametersPanel.btnCaptureTrackingRadialTrack.clicked.connect(self.captureTrackingRadialTrack) # self.parametersPanel.btnCaptureIntersectingRadialTrack.clicked.connect(self.captureIntersectingRadialTrack) self.parametersPanel.btnMeasureDmeOffset.clicked.connect( self.measureDmeOffset) self.parametersPanel.btnMeasureIntersectingDistance.clicked.connect( self.measureIntersectingDistance) self.parametersPanel.chb0dmeAtThr.clicked.connect(self.method_30) self.method_30() self.parametersPanel.btnClose.clicked.connect(self.dlgClose) self.parametersPanel.btnClose_2.clicked.connect(self.dlgClose)
def method_1(self, oasCategory_0, missedApproachClimbGradient_0, double_0, double_1, double_2, double_3, double_4): self.Assigned = False self.comTable.method_0() self.comSurco.method_0() self.comTemp1.method_0() self.method_7(oasCategory_0) if (double_0 <= 3.5): self.method_8(oasCategory_0, double_0, double_1, AircraftSize.Standard) else: self.method_8(oasCategory_0, 3.5, double_1, AircraftSize.Standard) self.method_9(AircraftSize.Standard) self.WA = self.comSurco.AW self.WC = self.comSurco.CW self.WSA = self.comSurco.AWS self.WSC = self.comSurco.CWS if (double_0 > 3.5): self.WA = 0.0239 + 0.0092 * (double_0 - 2.5) self.WC = -6.45 self.XA = self.comSurco.AX self.XB = self.comSurco.BX self.XC = self.comSurco.CX self.YA = self.comSurco.AY[missedApproachClimbGradient_0] self.YB = self.comSurco.BY[missedApproachClimbGradient_0] self.YC = self.comSurco.CY[missedApproachClimbGradient_0] self.ZA = self.comSurco.AZ[missedApproachClimbGradient_0] self.ZC = self.comSurco.CZ[missedApproachClimbGradient_0] if (double_0 > 3.5): self.ZC = -self.ZA * (-900 - 50 * ((double_0 - 3.5) / 0.1)) if (oasCategory_0 == OasCategory.ILS2AP): self.comTable.method_0() self.comSurco.method_0() self.comTemp1.method_0() self.method_7(OasCategory.ILS2) if (double_0 <= 3.5): self.method_8(OasCategory.ILS2, double_0, double_1, AircraftSize.Standard) else: self.method_8(OasCategory.ILS2, 3.5, double_1, AircraftSize.Standard) self.method_9(AircraftSize.Standard) self.YA = self.comSurco.AY[missedApproachClimbGradient_0] self.YB = self.comSurco.BY[missedApproachClimbGradient_0] self.YC = self.comSurco.CY[missedApproachClimbGradient_0] num = max([double_4 / self.XB, double_3 + (double_4 - 3) / self.XB ]) - max([6 / self.XB, 30 + 3 / self.XB]) self.WC = self.WC - (double_4 - 6) + (double_2 - 15) if (oasCategory_0 == OasCategory.ILS2AP): self.WSC = self.WSC - (double_4 - 6) + (double_2 - 15) self.XC = self.XC - self.XB * num + (double_2 - 15) self.YC = self.YC - self.YB * num + (double_2 - 15) if (oasCategory_0 == OasCategory.SBAS_APV1): num1 = math.tan(Unit.ConvertDegToRad(double_0)) num2 = math.tan(Unit.ConvertDegToRad(0.75 * double_0)) self.WSA = num2 self.WSC = -50 + double_2 * num2 / num1 self.XC = self.XC - 38 self.YC = self.YC - 38 if (double_0 <= 3.5): self.ZC = -self.ZA * -(900 + 38 / num1) else: self.WC = -6.45 self.ZC = -self.ZA * -(900 + 38 / num1 + 50 * (double_0 - 3.5) / 0.1) elif (oasCategory_0 == OasCategory.SBAS_APV2): num3 = math.tan(Unit.ConvertDegToRad(double_0)) num4 = math.tan(Unit.ConvertDegToRad(0.75 * double_0)) self.WSA = num4 self.WSC = -20 + double_2 * num4 / num3 self.XC = self.XC - 8 self.YC = self.YC - 8 if (double_0 <= 3.5): self.ZC = -self.ZA * -(900 + 8 / num3) else: self.WC = -6.45 self.ZC = -self.ZA * -(900 + 8 / num3 + 50 * (double_0 - 3.5) / 0.1) if (oasCategory_0 == OasCategory.SBAS_APV1 or oasCategory_0 == OasCategory.SBAS_APV2): num5 = (self.WC - self.WSC) / (self.WSA - self.WA) if (self.WA * num5 + self.WC <= 0): self.WSA = 0 self.WSC = 0 self.WA = round(self.WA, 6) self.WC = round(self.WC, 2) if (not MathHelper.smethod_96(self.WSA)): self.WSA = round(self.WSA, 6) else: self.WSA = None if (not MathHelper.smethod_96(self.WSC)): self.WSC = round(self.WSC, 2) else: self.WSC = None self.XA = round(self.XA, 6) self.XB = round(self.XB, 6) self.XC = round(self.XC, 2) self.YA = round(self.YA, 6) self.YB = round(self.YB, 6) self.YC = round(self.YC, 2) self.ZA = round(self.ZA, 6) self.ZC = round(self.ZC, 2) self.Assigned = True
def getGeometry(self): pointList = [] polygonsList = [] width = self[0].startWidth if MathHelper.smethod_96(self[0].bulge): pt0 = MathHelper.distanceBearingPoint( self[0].point3d, MathHelper.getBearing(self[0].point3d, self[1].point3d) - Unit.ConvertDegToRad(90), width / 2.0, ) pt1 = MathHelper.distanceBearingPoint( self[0].point3d, MathHelper.getBearing(self[0].point3d, self[1].point3d) + Unit.ConvertDegToRad(90), width / 2.0, ) pt2 = MathHelper.distanceBearingPoint( self[1].point3d, MathHelper.getBearing(self[0].point3d, self[1].point3d) + Unit.ConvertDegToRad(90), width / 2.0, ) pt3 = MathHelper.distanceBearingPoint( self[1].point3d, MathHelper.getBearing(self[0].point3d, self[1].point3d) - Unit.ConvertDegToRad(90), width / 2.0, ) geom = QgsGeometry.fromPolygon([[pt0, pt1, pt2, pt3]]) polygonsList.append(geom) else: polylineArea = PolylineArea() polylineArea.Add(PolylineAreaPoint(self[0].point3d, self[0].bulge)) polylineArea.Add(PolylineAreaPoint(self[1].point3d)) pointArray = polylineArea.method_14(4) pt0 = MathHelper.distanceBearingPoint( self[0].point3d, MathHelper.getBearing(self[0].point3d, pointArray[1]) - Unit.ConvertDegToRad(90), width / 2.0, ) pt1 = MathHelper.distanceBearingPoint( self[0].point3d, MathHelper.getBearing(self[0].point3d, pointArray[1]) + Unit.ConvertDegToRad(90), width / 2.0, ) pt2 = MathHelper.distanceBearingPoint( self[1].point3d, MathHelper.getBearing(pointArray[len(pointArray) - 2], self[1].point3d) + Unit.ConvertDegToRad(90), width / 2.0, ) pt3 = MathHelper.distanceBearingPoint( self[1].point3d, MathHelper.getBearing(pointArray[len(pointArray) - 2], self[1].point3d) - Unit.ConvertDegToRad(90), width / 2.0, ) polylineArea0 = PolylineArea() polylineArea0.Add(PolylineAreaPoint(pt0, self[0].bulge)) polylineArea0.Add(PolylineAreaPoint(pt3)) polylineArea1 = PolylineArea() polylineArea1.Add(PolylineAreaPoint(pt2, -self[0].bulge)) polylineArea1.Add(PolylineAreaPoint(pt1)) pointArrayResult = [] for pt in polylineArea0.method_14(4): pointArrayResult.append(pt) for pt in polylineArea1.method_14(4): pointArrayResult.append(pt) geom = QgsGeometry.fromPolygon([pointArrayResult]) polygonsList.append(geom) return polygonsList # for i in range(self.NumberOfVertices): # polylinePoint = self[i] # # if polylinePoint.startWidth != width: # if len(pointList) > 1: # geom = QgsGeometry.fromPolyline(pointList) # polygon = geom.buffer(width / 2.0, 0, 2, 0, 0) # polygonsList.append(polygon) # width = polylinePoint.startWidth # pointList = [] # pointList.append(polylinePoint.point3d) # if not MathHelper.smethod_96(polylinePoint.bulge): # if i != self.NumberOfVertices - 1: # point3d = self[i + 1].point3d # else: # point3d = self[0].point3d # MathHelper.getArc(polylinePoint.point3d, point3d, polylinePoint.bulge, 4, pointList) # # if len(pointList) > 1: # geom = QgsGeometry.fromPolyline(pointList) # polygon = geom.buffer(width / 2.0, 0, 2, 0, 0) # polygonsList.append(polygon) return polygonsList
def otherBearingCalc(self, basicAngle, basicUnit): positionPanelOfParent = None existPositionPanelValid = False if len(self.parentP.findChildren(PositionPanel)) > 0: for pnl in self.parentP.findChildren(PositionPanel): if pnl.IsValid(): positionPanelOfParent = pnl existPositionPanelValid = True break basicBearing = Unit.ConvertDegToRad(basicAngle) unit = positionPanelOfParent.getUnit() basicPoint3d = None if existPositionPanelValid: basicPoint3d = positionPanelOfParent.Point3d else: if basicUnit == QGis.Meters: basicPoint3d = Point3D(656565, 6565656) else: basicPoint3d = Point3D(17, 59) resultBearing = None if unit == None: return elif unit == QGis.Meters: if basicUnit == QGis.Meters: point3dStart = basicPoint3d point3dEnd = MathHelper.distanceBearingPoint( point3dStart, basicBearing, 500, QGis.Meters) point3dStartGeo = MathHelper.CrsTransformPoint( point3dStart.get_X(), point3dStart.get_Y(), define._xyCrs, define._latLonCrs, point3dStart.get_Z()) point3dEndGeo = MathHelper.CrsTransformPoint( point3dEnd.get_X(), point3dEnd.get_Y(), define._xyCrs, define._latLonCrs, point3dEnd.get_Z()) resultBearing = MathHelper.getBearing(point3dStartGeo, point3dEndGeo, QGis.DecimalDegrees) else: point3dStart = basicPoint3d point3dStartGeo = MathHelper.CrsTransformPoint( point3dStart.get_X(), point3dStart.get_Y(), define._xyCrs, define._latLonCrs, point3dStart.get_Z()) point3dEndGeo = MathHelper.distanceBearingPoint( point3dStartGeo, basicBearing, 500, QGis.DecimalDegrees) point3dEnd = MathHelper.CrsTransformPoint( point3dEndGeo.get_X(), point3dEndGeo.get_Y(), define._latLonCrs, define._xyCrs, point3dEndGeo.get_Z()) resultBearing = MathHelper.getBearing(point3dStart, point3dEnd, QGis.Meters) else: if basicUnit == QGis.Meters: point3dStartGeo = basicPoint3d point3dStart = MathHelper.CrsTransformPoint( point3dStartGeo.get_X(), point3dStartGeo.get_Y(), define._latLonCrs, define._xyCrs, point3dStartGeo.get_Z()) point3dEnd = MathHelper.distanceBearingPoint( point3dStart, basicBearing, 500, QGis.Meters) point3dEndGeo = MathHelper.CrsTransformPoint( point3dEnd.get_X(), point3dEnd.get_Y(), define._xyCrs, define._latLonCrs, point3dEnd.get_Z()) resultBearing = MathHelper.getBearing(point3dStartGeo, point3dEndGeo, QGis.DecimalDegrees) else: point3dStartGeo = basicPoint3d point3dEndGeo = MathHelper.distanceBearingPoint( point3dStartGeo, basicBearing, 500, QGis.DecimalDegrees) point3dStart = MathHelper.CrsTransformPoint( point3dStartGeo.get_X(), point3dStartGeo.get_Y(), define._latLonCrs, define._xyCrs, point3dStartGeo.get_Z()) point3dEnd = MathHelper.CrsTransformPoint( point3dEndGeo.get_X(), point3dEndGeo.get_Y(), define._latLonCrs, define._xyCrs, point3dEndGeo.get_Z()) resultBearing = MathHelper.getBearing(point3dStart, point3dEnd, QGis.Meters) return Unit.ConvertRadToDeg(resultBearing)
def smethod_0(position_0, position_1): return Unit.smethod_1(MathHelper.getBearing(position_0, position_1))
def method_2(self, polylineArea_0): polyLineAreaList = [] # Region region; num = Unit.ConvertDegToRad(70) if ( self.orientation == OrientationType.Right) else Unit.ConvertDegToRad(-70) vector3d = Vector3d(0, 0, 1) matrix3d = Matrix3d.Rotation(num, vector3d, self.ptBase) matrix3d1 = Matrix3d.Mirroring( self.ptBase, MathHelper.distanceBearingPoint(self.ptBase, self.trackRad, 100), self.ptBase.smethod_167(2)) # DBObjectCollection dBObjectCollection = new DBObjectCollection(); # DBObjectCollection dBObjectCollection1 = new DBObjectCollection(); # try # { num1 = 0 origin = Point3D.get_Origin() point3d = polylineArea_0[0].Position.TransformBy(matrix3d) point3dCollection = self.spiral.method_14_closed(4) polyline1 = PolylineArea(point3dCollection) polyline2 = polyline1.TransformBy(matrix3d) polyline = polyline2.TransformBy( Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d))) polyLineAreaList.append(polyline) # dBObjectCollection.Add(polyline); num1, origin = self.method_6(polyline, self.ptBase, num1, origin) point3d1 = polylineArea_0[1].Position.TransformBy(matrix3d) point3dCollection = self.spiral.method_14_closed(4) polyline1 = PolylineArea(point3dCollection) polyline2 = polyline1.TransformBy(matrix3d) polyline = polyline2.TransformBy( Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d1))) # polyline = AcadHelper.smethod_136(self.spiral, true); # polyline.TransformBy(matrix3d); # polyline.TransformBy(Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d1))); polyLineAreaList.append(polyline) # dBObjectCollection.Add(polyline); num1, origin = self.method_6(polyline, self.ptBase, num1, origin) point3d2 = polylineArea_0[3].Position.TransformBy(matrix3d) point3dCollection = self.spiral.method_14_closed(4) polyline1 = PolylineArea(point3dCollection) polyline2 = polyline1.TransformBy(matrix3d1) polyline3 = polyline2.TransformBy(matrix3d) polyline = polyline3.TransformBy( Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d2))) # polyline = AcadHelper.smethod_136(self.spiral, true); # polyline.TransformBy(matrix3d1); # polyline.TransformBy(matrix3d); # polyline.TransformBy(Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d2))); polyLineAreaList.append(polyline) # dBObjectCollection.Add(polyline); point3d3 = polylineArea_0[2].Position.TransformBy(matrix3d) point3dCollection = self.spiral.method_14_closed(4) polyline1 = PolylineArea(point3dCollection) polyline2 = polyline1.TransformBy(matrix3d1) polyline3 = polyline2.TransformBy(matrix3d) polyline = polyline3.TransformBy( Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d3))) # polyline = AcadHelper.smethod_136(self.spiral, true); # polyline.TransformBy(matrix3d1); # polyline.TransformBy(matrix3d); # polyline.TransformBy(Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d3))); polyLineAreaList.append(polyline) # dBObjectCollection.Add(polyline); # if (num1 > 0): # point3d4 = MathHelper.distanceBearingPoint(self.ptBase, self.trackRad + 3.14159265358979, num1); # polyline = PolylineArea() # polyline.Add(origin.smethod_176(), MathHelper.smethod_57((self.orientation == OrientationType.Left ? TurnDirection.Left : TurnDirection.Right), origin, point3d4, self.ptBase), 0, 0); # polyline.AddVertexAt(1, point3d4.smethod_176(), 0, 0, 0); # polyline.set_Closed(true); # dBObjectCollection.Add(polyline); # } point3dCollection = [] item = self.spiralBounds[0] point3d5 = item.TransformBy(matrix3d) point3dCollection.append( point3d5.TransformBy( Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d)))) item1 = self.spiralBounds[1] point3d6 = item1.TransformBy(matrix3d) point3dCollection.append( point3d6.TransformBy( Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d)))) item2 = self.spiralBounds[1] point3d7 = item2.TransformBy(matrix3d) point3dCollection.append( point3d7.TransformBy( Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d1)))) item3 = self.spiralBounds[2] point3d8 = item3.TransformBy(matrix3d) point3dCollection.append( point3d8.TransformBy( Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d1)))) item4 = self.spiralBounds[2] point3d9 = item4.TransformBy(matrix3d1).TransformBy(matrix3d) point3dCollection.append( point3d9.TransformBy( Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d3)))) item5 = self.spiralBounds[1] point3d10 = item5.TransformBy(matrix3d1).TransformBy(matrix3d) point3dCollection.append( point3d10.TransformBy( Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d3)))) item6 = self.spiralBounds[1] point3d11 = item6.TransformBy(matrix3d1).TransformBy(matrix3d) point3dCollection.append( point3d11.TransformBy( Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d2)))) item7 = self.spiralBounds[0] point3d12 = item7.TransformBy(matrix3d1).TransformBy(matrix3d) point3dCollection.append( point3d12.TransformBy( Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d2)))) point3dCollection = MathHelper.smethod_190(point3dCollection) polylineArea1 = PolylineArea(point3dCollection) polyLineAreaList.append(polyline) return polyLineAreaList
def smethod_1(position_0, position_1): # double_0 = Unit.smethod_1(MathHelper.getBearing(position_1, position_0)) return Unit.smethod_1(MathHelper.getBearing(position_0, position_1))
def method_8(self, oasCategory_0, double_0, double_1, aircraftSize_0): fEF = [0.0, 0.0, 0.0] if (aircraftSize_0 != AircraftSize.Large): self.comSurco.AG = self.method_3(double_0, self.comTable.YT, self.comTable.F*G) self.comSurco.AF = self.comTable.FAF self.comSurco.AB = self.method_3(double_0, self.comTable.YT, self.comTable.FAB) self.comSurco.BC = self.method_3(double_0, self.comTable.YT, self.comTable.FBC) self.comSurco.GD = self.comTable.FGD self.comSurco.TANMU = (self.comSurco.GD - self.comSurco.BC) / ( self.comSurco.AG + self.comSurco.AB) self.comSurco.TANX = self.method_5(double_1, double_0, self.comTable.XT, self.comTable.YT, self.comTable.FTANX) self.comSurco.TANW = self.method_3(double_0, self.comTable.YT, self.comTable.FTANW) if (oasCategory_0 == OasCategory.ILS2AP): self.comSurco.TANWS = self.method_3(double_0, self.comTable.YT, self.comTable.FTANWS) for i in range(4 + 1): for j in range(2 + 1): fEF[j] = self.comTable.FEF[j][i] self.comSurco.EF[i] = self.method_3(double_0, self.comTable.YT, fEF) self.comSurco.TANNU[i] = ( self.comSurco.EF[i] - self.comSurco.GD) / (self.comSurco.AF - self.comSurco.AG) self.comSurco.TANZ[i] = self.comTable.CG[i] self.comSurco.AW = self.comSurco.TANW self.comSurco.BW = 0 self.comSurco.CW = -self.comSurco.AB * self.comSurco.TANW if (oasCategory_0 == OasCategory.ILS2AP): self.comSurco.AWS = self.comSurco.TANWS self.comSurco.BWS = 0 self.comSurco.CWS = 1000 * ( self.comSurco.TANW - self.comSurco.TANWS) - self.comSurco.AB * self.comSurco.TANW self.comSurco.AX = self.comSurco.TANMU * self.comSurco.TANX self.comSurco.BX = self.comSurco.TANX self.comSurco.CX = (-self.comSurco.GD + self.comSurco.AG * self.comSurco.TANMU) * self.comSurco.TANX for k in range(4 + 1): self.comSurco.AZ[k] = -self.comSurco.TANZ[k] self.comSurco.CZ[k] = -self.comSurco.AF * self.comSurco.TANZ[k] self.comSurco.BZ = 0 self.comTemp1.XC = self.comSurco.AB self.comTemp1.YC = self.comSurco.BC self.comTemp1.XD = -self.comSurco.AG self.comTemp1.YD = self.comSurco.GD self.comTemp1.XE = -self.comSurco.AF for l in range(4 + 1): self.comTemp1.YE[l] = self.comSurco.EF[l] aW = 300 if (oasCategory_0 == OasCategory.ILS2 or oasCategory_0 == OasCategory.ILS2AP): aW = 150 self.comTemp1.XC1 = (aW - self.comSurco.CW) / self.comSurco.AW if (oasCategory_0 == OasCategory.ILS2AP): self.comTemp1.XC1 = (aW - self.comSurco.CWS) / self.comSurco.AWS self.comTemp1.YC1 = (aW - self.comSurco.AX * self.comTemp1.XC1 - self.comSurco.CX) / self.comSurco.BX num = math.tan(Unit.ConvertDegToRad(double_0)) aG = aW / num - self.comSurco.AG aX = (aW - self.comSurco.AX * aG - self.comSurco.CX) / self.comSurco.BX if oasCategory_0 == OasCategory.ILS1 \ or oasCategory_0 == OasCategory.SBAS_APV1 \ or oasCategory_0 == OasCategory.SBAS_APV2 \ or oasCategory_0 == OasCategory.SBAS_CAT1: for m in range(4 + 1): self.comSurco.TANY[m] = aW * ( -self.comSurco.AF + self.comSurco.AG) / ( (self.comSurco.AG - self.comSurco.AF) * (aX - self.comSurco.GD) + (self.comSurco.AG + aG) * (self.comSurco.GD - self.comSurco.EF[m])) elif oasCategory_0 == OasCategory.ILS2: for n in range(4 + 1): self.comSurco.TANY[n] = aW * ( -self.comSurco.AF + self.comSurco.AG) / ( (self.comSurco.AG - self.comSurco.AF) * (aX - self.comSurco.GD) + (self.comSurco.AG + aG) * (self.comSurco.GD - self.comSurco.EF[n])) elif oasCategory_0 == OasCategory.ILS2AP: for o in range(4 + 1): self.comSurco.TANY[o] = aW * ( -self.comSurco.AF + self.comSurco.AG) / ( (self.comSurco.AG - self.comSurco.AF) * (aX - self.comSurco.GD) + (self.comSurco.AG + aG) * (self.comSurco.GD - self.comSurco.EF[o])) for p in range(4 + 1): self.comSurco.AY[ p] = self.comSurco.TANNU[p] * self.comSurco.TANY[p] self.comSurco.BY[p] = self.comSurco.TANY[p] self.comSurco.CY[p] = (-self.comSurco.GD + self.comSurco.AG * self.comSurco.TANNU[p] ) * self.comSurco.TANY[p] for q in range(4 + 1): self.comTemp1.XD1[q] = aG self.comTemp1.YD1[q] = aX if (oasCategory_0 != OasCategory.ILS2AP): lstParam = [self.comTemp1.XE1[q], self.comTemp1.YE1[q]] self.method_6(self.comSurco.AY[q], self.comSurco.BY[q], self.comSurco.CY[q], self.comSurco.AZ[q], self.comSurco.BZ, self.comSurco.CZ[q], aW, lstParam) self.comTemp1.XE1[q] = lstParam[0] self.comTemp1.YE1[q] = lstParam[1] else: lstParam = [self.comTemp1.XD1[q], self.comTemp1.YD1[q]] self.method_6(self.comSurco.AX, self.comSurco.BX, self.comSurco.CX, self.comSurco.AY[q], self.comSurco.BY[q], self.comSurco.CY[q], aW, lstParam) self.comTemp1.XD1[q] = lstParam[0] self.comTemp1.YD1[q] = lstParam[1] if (oasCategory_0 == OasCategory.ILS2AP): aW = self.comSurco.AW * 1000 + self.comSurco.CW self.comTemp1.XC2 = (aW - self.comSurco.CW) / self.comSurco.AW self.comTemp1.YC2 = (aW - self.comSurco.AX * self.comTemp1.XC2 - self.comSurco.CX) / self.comSurco.BX