Beispiel #1
0
 def smethod_5(form_0, qasnapshot_0):
     try:
         # if (AcadHelper.Ready)
         # {
         #     AcadHelper.smethod_2();
         #     if (!qasnapshot_0.ModelSpace)
         #     {
         #         AcadHelper.smethod_27(DrawingSpace.PaperSpace, true);
         #     }
         #     else
         #     {
         #         AcadHelper.smethod_27(DrawingSpace.ModelSpace, true);
         #     }
         viewCenter = qasnapshot_0.ViewCenter
         x = viewCenter.get_X() - qasnapshot_0.ViewSize / float(2)
         point3d = qasnapshot_0.ViewCenter
         point2d = Point3D(
             x,
             point3d.get_Y() - qasnapshot_0.ViewSize / float(2))
         viewCenter1 = qasnapshot_0.ViewCenter
         num = viewCenter1.get_X() + qasnapshot_0.ViewSize / float(2)
         point3d1 = qasnapshot_0.ViewCenter
         point2d1 = Point3D(
             num,
             point3d1.get_Y() + qasnapshot_0.ViewSize / float(2))
         AcadHelper.smethod_66(point2d, point2d1)
         # AcadHelper.smethod_3();
     except:
         QMessageBox.warning(form_0, "Error",
                             sys.exc_info()[0])
    def resultPointValueListMethod(self, resultValueList):
        flag = FlightPlanBaseDlg.btnConstruct_Click(self)
        if not flag:
            return
        point  = Point3D()
        try:
            point = Point3D(float(resultValueList[1]), float(resultValueList[2]), float(resultValueList[3]))
        except:
            return
        if (not self.flagP):
            mapUnits = define._canvas.mapUnits()
            self.constructionLayer = AcadHelper.createVectorLayer(self.surfaceType)

            self.point3dP = point.smethod_167(0);
            self.origin1P = self.method_31(self.polylineP, self.originP, self.point3dP, self.numP, self.metresP, self.speedP, self.num2P, self.orientationTypeP);
            AcadHelper.setGeometryAndAttributesInLayer(self.constructionLayer, self.polylineP)
            QgisHelper.appendToCanvas(define._canvas, [self.constructionLayer], self.surfaceType)

            # polyline.Draw();
        else:

            mapUnits = define._canvas.mapUnits()
            self.constructionLayer = AcadHelper.createVectorLayer(self.surfaceType)
            self.originP = point.smethod_167(0);
            self.polylineP, self.origin1P = self.method_30(self.originP, self.numP, self.metresP, self.speedP, self.num2P, self.orientationTypeP);
            AcadHelper.setGeometryAndAttributesInLayer(self.constructionLayer, self.polylineP)
            QgisHelper.appendToCanvas(define._canvas, [self.constructionLayer], self.surfaceType)
            # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer);
        self.flagP = not self.flagP;
        self.resultLayerList = [self.constructionLayer]
        if (not self.flagP):
            define._messageLabel.setText(Prompts.SECOND_POSITION_FINISH);
        else:
            define._messageLabel.setText(Prompts.POSITION_FINISH)
        pass
Beispiel #3
0
 def method_33(self, fasDataBlockFile_0):
     if (fasDataBlockFile_0 == None):
         self.method_30()
         return
     self.parametersPanel.pnlOperationType.SelectedIndex = fasDataBlockFile_0.OperationType
     self.parametersPanel.pnlSbasProvider.SelectedIndex = fasDataBlockFile_0.SbasProviderId
     self.parametersPanel.pnlAirportId.Value = fasDataBlockFile_0.AirportId
     self.parametersPanel.txtRunwayDesignator.Value = float(
         fasDataBlockFile_0.RunwayNumber)
     self.parametersPanel.cmbRunwayLetter.SelectedIndex = fasDataBlockFile_0.RunwayLetter
     self.parametersPanel.pnlApproachPerformanceDesignator.SelectedIndex = fasDataBlockFile_0.ApproachPerformanceDesignator
     self.parametersPanel.pnlRouteIndicator.SelectedItem = fasDataBlockFile_0.RouteIndicator
     self.parametersPanel.pnlReferencePathDataSelector.Value = float(
         fasDataBlockFile_0.ReferencePathDataSelector)
     self.parametersPanel.pnlReferencePathId.Value = fasDataBlockFile_0.ReferencePathIdentifier
     deltaFpapLatitude = fasDataBlockFile_0.LtpFtpLatitude
     deltaFpapLongitude = fasDataBlockFile_0.LtpFtpLongitude
     self.parametersPanel.pnlLtpFtp.Point3d = Point3D(
         deltaFpapLongitude, deltaFpapLatitude)
     self.parametersPanel.pnlLtpFtpEllipsoidalHeight.Value = fasDataBlockFile_0.LtpFtpHeight
     deltaFpapLatitude = deltaFpapLatitude + fasDataBlockFile_0.DeltaFpapLatitude
     deltaFpapLongitude = deltaFpapLongitude + fasDataBlockFile_0.DeltaFpapLongitude
     self.parametersPanel.pnlFpap.Point3d = Point3D(deltaFpapLongitude,
                                                    deltaFpapLatitude)
     self.parametersPanel.txtApproachTCH.Value = fasDataBlockFile_0.ApproachTch
     self.parametersPanel.cmbApproachTCHunits.SelectedIndex = fasDataBlockFile_0.ApproachTchUnits
     self.parametersPanel.pnlGPA.Value = fasDataBlockFile_0.GPA
     self.parametersPanel.pnlCourseWidth.Value = fasDataBlockFile_0.CourseWidth
     self.parametersPanel.pnlLengthOffset.Value = fasDataBlockFile_0.DeltaLengthOffset
     self.parametersPanel.pnlHAL.Value = fasDataBlockFile_0.HAL
     self.parametersPanel.pnlVAL.Value = fasDataBlockFile_0.VAL
     self.method_31(False)
    def btnConstruct_Click(self):
        flag = FlightPlanBaseDlg.btnConstruct_Click(self)
        if not flag:
            return
        value = Speed(float(self.parametersPanel.txtIas.text()),SpeedUnits.KTS);
        if (self.parametersPanel.chbDeparture.isChecked()):
            value = value + (value / 10);
        altitude = Altitude(float(self.parametersPanel.txtAltitudeFt.text()), AltitudeUnits.FT);
        value1 = float(self.parametersPanel.txtIsa.text());
        num1 = float (self.parametersPanel.txtBankAngle.text());
        self.speedP = self.parametersPanel.pnlWind.Value;
        self.num2P = Unit.ConvertDegToRad(float(self.parametersPanel.txtTrackRadial.Value));
        self.orientationTypeP = self.parametersPanel.cmbOrientation.currentText();
        speed1 = Speed.smethod_0(value, value1, altitude);
        numList = []
        distance = Distance.smethod_1(speed1, num1, numList);
        self.numP = numList[0]
        self.metresP = distance.Metres;

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


        define._canvas.setMapTool(self.CaptureCoordTool)
    def openData(self):
        try:
            fileName = FlightPlanBaseDlg.openData(self)
            if fileName == None:
                return
            doc = DataHelper.loadXmlDocFromFile(fileName)
            dialogNodeList = doc.elementsByTagName(self.objectName())
            if dialogNodeList.isEmpty():
                raise UserWarning, "self file is not correct."
            dialogElem = dialogNodeList.at(0).toElement()
            trackNodeList = dialogElem.elementsByTagName("Track")
            if trackNodeList.isEmpty():
                return
            elemTrack = trackNodeList.at(0).toElement()
            elemStart = elemTrack.elementsByTagName("StartPoint").at(
                0).toElement()
            elemEnd = elemTrack.elementsByTagName("EndPoint").at(0).toElement()

            x, y = DataHelper.getPointValueFromElem(elemStart)
            self.parametersPanel.txtTrack.captureRadialTool.startPoint = Point3D(
                x, y)

            x, y = DataHelper.getPointValueFromElem(elemEnd)
            self.parametersPanel.txtTrack.captureRadialTool.endPoint = Point3D(
                x, y)
        except BaseException as e:
            QMessageBox.warning(self, "Error", e.message)
 def getPointWithShortestDist(self, point3d, closed=True):
     if self.Count == 0:
         return None
     if closed:
         point3dList = self.method_14_closed()
     else:
         point3dList = self.method_14()
     # i = 0
     # for point3d0 in point3dList:
     #     if i == 0:
     #         i += 1
     #         continue
     #     previousPoint = point3dList[i - 1]
     #     currentPoint = point3d0
     #     f = QgsGeometry.fromPolyline([previousPoint, currentPoint]).contains(point3d)
     #     if f:
     #         return point3d
     i = 0
     for point3d0 in point3dList:
         if i == 0:
             i += 1
             continue
         previousPoint = point3dList[i - 1]
         currentPoint = point3d0
         f = QgsGeometry.fromPolyline([previousPoint,
                                       currentPoint]).contains(point3d)
         dist = MathHelper.calcDistance(point3d, previousPoint)
         bearing = MathHelper.smethod_4(
             MathHelper.getBearing(previousPoint, currentPoint) -
             math.pi / 2)
         vPoint1 = MathHelper.distanceBearingPoint(point3d, bearing, dist)
         bearing = MathHelper.smethod_4(
             MathHelper.getBearing(previousPoint, currentPoint) +
             math.pi / 2)
         dist = MathHelper.calcDistance(point3d, previousPoint)
         vPoint2 = MathHelper.distanceBearingPoint(point3d, bearing, dist)
         geom = QgsGeometry.fromPolyline([
             previousPoint, currentPoint
         ]).intersection(QgsGeometry.fromPolyline([vPoint1, vPoint2]))
         intersectionPoint = geom.asPoint()
         if intersectionPoint.x() == 0 and intersectionPoint.y() == 0:
             i += 1
             continue
         pt = None
         if point3d.x() > intersectionPoint.x():
             pt = Point3D(intersectionPoint.x() + 1, intersectionPoint.y())
         else:
             pt = Point3D(intersectionPoint.x() - 1, intersectionPoint.y())
         geom = QgsGeometry.fromPolyline(point3dList).intersection(
             QgsGeometry.fromPolyline([point3d, pt]))
         intersectionPoint1 = geom.asPoint()
         if intersectionPoint1.x() != 0 and intersectionPoint1.y() != 0:
             i += 1
             continue
         return Point3D(intersectionPoint.x(), intersectionPoint.y())
     return self.getClosestPointTo(point3d, False)
    def processMethod(self ,i ,j ,hCount,wCount,block,wStartNumber,hStartNumber,xStartValue,yStartValue,xOffSet, yOffSet,obstacleLayer,obstacleTable,obstacleUnits,mocMultiplier):
        featureID = 0
        while i <=  hCount - 1:
            j = 0
            while j <=  wCount - 1:
    #                         altitude = block.value(wStartNumber, hStartNumber)
                name = "DEM"
    #                     startTime = time.time()
    #                     print "startTime" + str(startTime)
                if block.isNoData(j + wStartNumber, i + hStartNumber):
                    j += 1
                    continue
                altitude = block.value(j + wStartNumber, i + hStartNumber)
                trees = define._trees
                tolerance = define._tolerance
                point = QgsPoint(xStartValue + (j + wStartNumber) * xOffSet + xOffSet / 2, yStartValue - (i + hStartNumber) * yOffSet - yOffSet / 2)
                position = Point3D()
                positionDegree = Point3D()
                if obstacleUnits == QGis.Meters:
                    position = Point3D(point.x(), point.y(), altitude)
                    if obstacleUnits != define._units:
                        positionDegree = QgisHelper.Meter2DegreePoint3D(position)
                else:
                    positionDegree = Point3D(point.x(), point.y(), altitude)
                    if obstacleUnits != define._units:
                        position = QgisHelper.Degree2MeterPoint3D(positionDegree)
                    
                featureId = featureID
                layerId = obstacleLayer.id()
                obstacle = Obstacle(name, position, layerId, featureId, None, trees, mocMultiplier, tolerance)
                obstacle.positionDegree = positionDegree 
                
    #                     middleTime = time.time()
    #                     print "middleTime" + str(middleTime)
    #                 obstacle.positionDegree = positionDegree
                
                obstacleTable.checkObstacle(obstacle)
                self.lock.acquire()
                try:
                    
                    obstacleTable.progress.setValue(obstacleTable.progress.value() + 1)
                    QApplication.processEvents()
                finally:
                    self.lock.release()
                
    #                     endTime = time.time()
    #                     print "endTime" + str(endTime)
                
                j += 1
                featureID += 1
#                 obstacle = None
#             print i
            i += 1  
    def makePrimaryAreaOrSecondaryArea(self, geomList, areaType):
        pointArrayInner = geomList[0]
        pointArray1Outer = geomList[1]

        innerStartPoint = pointArrayInner[0]
        innerEndPoint = pointArrayInner[1]
        innerBulge = pointArrayInner[2]
        outerStartPoint = pointArray1Outer[0]
        outerEndPoint = pointArray1Outer[1]
        outerBulge = pointArray1Outer[2]

        line0 = QgsGeometry.fromPolyline([innerStartPoint, outerStartPoint])
        line1 = QgsGeometry.fromPolyline([innerEndPoint, outerEndPoint])

        # for i in range(1, len(pointArray0)):

        if line0.intersects(line1):
            tempPoint = Point3D(outerStartPoint.get_X(), outerStartPoint.get_Y())
            outerStartPoint = Point3D(outerEndPoint.get_X(), outerEndPoint.get_Y())
            outerEndPoint = Point3D(tempPoint.get_X(), tempPoint.get_Y())
            outerBulge = -outerBulge
        if areaType == ProtectionAreaType.Primary:
            polylineArea = PolylineArea()
            polylineArea.Add(PolylineAreaPoint(innerStartPoint, innerBulge))
            polylineArea.Add(PolylineAreaPoint(innerEndPoint))
            polylineArea.Add(PolylineAreaPoint(outerEndPoint, -outerBulge))
            polylineArea.Add(PolylineAreaPoint(outerStartPoint))
            return PrimaryObstacleArea(polylineArea)
        elif areaType == ProtectionAreaType.Secondary:
            if innerBulge == 0 and outerBulge == 0:
                return SecondaryObstacleArea(innerStartPoint, innerEndPoint, outerStartPoint, outerEndPoint, MathHelper.getBearing(innerStartPoint, innerEndPoint))
            elif innerBulge != 0 and outerBulge != 0:
                if round(innerBulge, 1) != round(outerBulge, 1):
                    return None
                innerCenterPoint = MathHelper.smethod_71(innerStartPoint, innerEndPoint, innerBulge)
                outerCenterPoint = MathHelper.smethod_71(outerStartPoint, outerEndPoint, outerBulge)

                innerRadius = MathHelper.calcDistance(innerCenterPoint, innerStartPoint);
                outerRadius = MathHelper.calcDistance(outerCenterPoint, outerStartPoint);

                bearing = (MathHelper.getBearing(innerCenterPoint, innerStartPoint) + MathHelper.getBearing(innerCenterPoint, innerEndPoint)) / 2
                innerMiddlePoint = MathHelper.distanceBearingPoint(innerCenterPoint, bearing, innerRadius)
                if round(MathHelper.smethod_60(innerStartPoint, innerMiddlePoint, innerEndPoint), 4) != round(outerBulge, 4):
                    bearing += 3.14159265358979
                    innerMiddlePoint = MathHelper.distanceBearingPoint(innerCenterPoint, bearing, innerRadius)

                bearing = (MathHelper.getBearing(outerCenterPoint, outerStartPoint) + MathHelper.getBearing(outerCenterPoint, outerEndPoint)) / 2
                outerMiddlePoint = MathHelper.distanceBearingPoint(outerCenterPoint, bearing, outerRadius)
                if round(MathHelper.smethod_60(outerStartPoint, outerMiddlePoint, outerEndPoint), 4) != round(outerBulge, 4):
                    bearing += 3.14159265358979
                    outerMiddlePoint = MathHelper.distanceBearingPoint(outerCenterPoint, bearing, outerRadius)
                return SecondaryObstacleArea(innerStartPoint, innerMiddlePoint, innerEndPoint, outerStartPoint, None, outerMiddlePoint, outerEndPoint, innerBulge, innerBulge)
            return None
Beispiel #9
0
 def get_Point3d(self):
     if (not self.IsValid):
         raise Messages.ERR_INVALID_OR_INCOMPLETE_POSITION
     if (self.xy):
         if (self.altitude == None or math.isinf(self.altitude)):
             return Point3D(self.xlat, self.ylon, 0)
         return Point3D(self.xlat, self.ylon, self.altitude)
     result, num, num1 = Geo.smethod_3(Degrees.smethod_1(self.xlat), Degrees.smethod_5(self.ylon))
     if (not result):
         raise "Geo.LastError"
     if (self.altitude == None or math.isinf(self.altitude)):
         return Point3D(num, num1, 0)
     return Point3D(num, num1, self.altitude)
    def basedOnCmbObj_Event_0(self):
        if self.currentLayer == None or not self.currentLayer.isValid():
            return

        if len(self.vorDmeFeatureArray) == 0:
            return

        layer = self.currentLayer
        idx = layer.fieldNameIndex('Type')
        idxName = layer.fieldNameIndex('Name')
        idxLat = layer.fieldNameIndex('Latitude')
        idxLong = layer.fieldNameIndex('Longitude')
        idxAltitude = layer.fieldNameIndex('Altitude')

        feat = self.vorDmeFeatureArray.__getitem__(
            self.parametersPanel.cmbBasedOn.SelectedItem)
        attrValue = feat.attributes()[idxLat].toDouble()
        lat = attrValue[0]

        attrValue = feat.attributes()[idxLong].toDouble()
        long = attrValue[0]

        attrValue = feat.attributes()[idxAltitude].toDouble()
        alt = attrValue[0]

        self.parametersPanel.pnlNavAid.Point3d = Point3D(long, lat, alt)
    def __init__(self, point3d_0 = None, bulge = 0.0):
#         private Point3d position;
        if not isinstance(point3d_0, Point3D):
            point3d_0 = Point3D(point3d_0.x(), point3d_0.y())
        self.position = point3d_0
#         private double bulge;
        self.bulge = bulge
    def autoCalcFinishMagVar(self):
        try:
            if self.parametersPanel.chbAutoFinishMagVar.Checked:
                finishPt = None
                finishLat = None
                finishLon = None
                degree3 = None
                num = None
                result, degree, degree1 = self.parametersPanel.pnlStartPosP.method_3(
                )
                if (result):
                    value = float(self.parametersPanel.txtForwardTP.Value)
                    value1 = float(self.parametersPanel.txtForwardTP.Value)
                    distance = self.parametersPanel.txtDistanceP.Value
                    result1, degree2, degree3, num = Geo.smethod_6(
                        self.parametersPanel.cmbCalculationTypeP.SelectedItem,
                        degree, degree1, value, distance)
                    if (result1):
                        finishPt = Point3D(degree3, degree2)

                        finishLat = degree2
                        finishLon = degree3
                if finishPt != None and self.model != None and self.date != None:
                    # result, degree, degree1 = self.parametersPanel.pnlStartPosP.method_3();
                    result2, degree2 = Geo.smethod_7(finishLat, finishLon,
                                                     Altitude(0), self.model,
                                                     self.date)
                    if (result2):
                        degree2 = round(degree2, 2)
                        self.parametersPanel.pnlVarFinishP.Value = degree2
        except:
            pass
 def getContact(self,
                point3d,
                radBetweenTangentAndPoint=None,
                spiralNumber=None,
                turnDirection=None):
     a = MathHelper.calcDistance(point3d, self.Center[spiralNumber])
     b = MathHelper.calcDistance(self.Center[spiralNumber],
                                 self.Finish[spiralNumber])
     A = math.pi / 2 - radBetweenTangentAndPoint
     B = math.asin(math.sin(A) * b / a)
     C = math.pi - A - B
     bearing = 0.0
     middlePt = Point3D()
     if self.Direction == TurnDirection.Right:
         bearing = MathHelper.smethod_4(
             MathHelper.getBearing(self.Center[spiralNumber], point3d) - C)
         middlePt = MathHelper.distanceBearingPoint(
             self.Center[spiralNumber],
             MathHelper.smethod_4(bearing - 0.001),
             self.Radius[spiralNumber])
     elif self.Direction == TurnDirection.Left:
         bearing = MathHelper.smethod_4(
             MathHelper.getBearing(self.Center[spiralNumber], point3d) + C)
         middlePt = MathHelper.distanceBearingPoint(
             self.Center[spiralNumber],
             MathHelper.smethod_4(bearing + 0.001),
             self.Radius[spiralNumber])
     return middlePt, MathHelper.distanceBearingPoint(
         self.Center[spiralNumber], bearing, self.Radius[0])
Beispiel #14
0
 def method_0(self, point3dCollection_0):
     self.time = 0.0
     point3d = Point3D(0, 0, 0)
     matrix3d = Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d))
     matrix3d1 = Matrix3d.Rotation(self.trackRad, Vector3d(0, 0, 1),
                                   point3d)
     item = point3dCollection_0[0]
     point3d1 = item.TransformBy(matrix3d).TransformBy(matrix3d1)
     point3d2 = point3d1
     point3d3 = point3d1
     point3d4 = point3d1
     point3d5 = point3d1
     for i in range(1, len(point3dCollection_0)):
         item1 = point3dCollection_0[i]
         point3d6 = item1.TransformBy(matrix3d).TransformBy(matrix3d1)
         if (point3d6.get_Y() > point3d5.get_Y()):
             point3d5 = point3d6
         if (point3d6.get_X() > point3d4.get_X()):
             point3d4 = point3d6
         if (point3d6.get_Y() < point3d3.get_Y()):
             point3d3 = point3d6
         if (point3d6.get_X() < point3d2.get_X()):
             point3d2 = point3d6
     point3d7 = point3d5.TransformBy(Matrix3d.Inverse(matrix3d1))
     point3d5 = point3d7.TransformBy(Matrix3d.Inverse(matrix3d))
     point3d8 = point3d4.TransformBy(Matrix3d.Inverse(matrix3d1))
     point3d4 = point3d8.TransformBy(Matrix3d.Inverse(matrix3d))
     point3d9 = point3d3.TransformBy(Matrix3d.Inverse(matrix3d1))
     point3d3 = point3d9.TransformBy(Matrix3d.Inverse(matrix3d))
     point3d10 = point3d2.TransformBy(Matrix3d.Inverse(matrix3d1))
     point3d2 = point3d10.TransformBy(Matrix3d.Inverse(matrix3d))
     self.bounds = [point3d5, point3d4, point3d3, point3d2]
    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 resultPointValueListMethod(self, resultValueList):
     if len(resultValueList) > 0:
         point3d = Point3D(float(resultValueList[1]), float(resultValueList[2]), float(resultValueList[3]))
         resultDlg, procEntityBase = DlgAixmSelectPosition.smethod_0(self, self.data, point3d, ProcEntityListType.Holding)
         if (resultDlg and procEntityBase != None):
             if (not self.pnlBasedOn.Contains(procEntityBase)):
                 self.pnlBasedOn.Add(procEntityBase);
             self.pnlBasedOn.SelectedIndex = self.pnlBasedOn.IndexOf(procEntityBase);
    def basedOnCmbFill(self, layer, basedOnCmbObj, vorDmePositionPanelObj):
        basedOnCmbObj.Clear()
        vorDmePositionPanelObj.Point3d = None
        idx = layer.fieldNameIndex('Type')
        idxName = layer.fieldNameIndex('Name')
        idxLat = layer.fieldNameIndex('Latitude')
        idxLong = layer.fieldNameIndex('Longitude')
        idxAltitude = layer.fieldNameIndex('Altitude')
        vorDmeList = []
        vorDmeFeatureList = []
        if idx >= 0:
            featIter = layer.getFeatures()
            for feat in featIter:
                attrValue = feat.attributes()[idx].toString()
                attrValue = QString(attrValue)
                attrValue = attrValue.replace(" ", "")
                attrValue = attrValue.replace("/", "")
                attrValue = attrValue.toUpper()
                if self.parametersPanel.cmbNavAidType.SelectedIndex == 0:
                    if attrValue == "VOR" or attrValue == "VORDME" or attrValue == "VORTAC" or attrValue == "TACAN":
                        vorDmeList.append(attrValue)
                        vorDmeFeatureList.append(feat)
                else:
                    if attrValue == "NDB" or attrValue == "NDBDME":
                        vorDmeList.append(attrValue)
                        vorDmeFeatureList.append(feat)
            if len(vorDmeList) != 0:

                i = -1
                basedOnCmbObjItems = []
                resultfeatDict = dict()
                for feat in vorDmeFeatureList:
                    typeValue = feat.attributes()[idx].toString()
                    nameValue = feat.attributes()[idxName].toString()
                    basedOnCmbObjItems.append(typeValue + " " + nameValue)
                    resultfeatDict.__setitem__(typeValue + " " + nameValue,
                                               feat)
                basedOnCmbObjItems.sort()
                basedOnCmbObj.Items = basedOnCmbObjItems
                basedOnCmbObj.SelectedIndex = 0

                # if idxAttributes
                feat = resultfeatDict.__getitem__(basedOnCmbObjItems[0])
                attrValue = feat.attributes()[idxLat].toDouble()
                lat = attrValue[0]

                attrValue = feat.attributes()[idxLong].toDouble()
                long = attrValue[0]

                attrValue = feat.attributes()[idxAltitude].toDouble()
                alt = attrValue[0]

                vorDmePositionPanelObj.Point3d = Point3D(long, lat, alt)
                self.connect(basedOnCmbObj, SIGNAL("Event_0"),
                             self.basedOnCmbObj_Event_0)

                return resultfeatDict
        return dict()
 def MovePolyLine(polylineArea, dx, dy):
     resultPolylineArea = PolylineArea()
     if not isinstance(polylineArea, PolylineArea) or len(polylineArea) == 0:
         return None
     for polylineAreaPt in polylineArea:
         pt = polylineAreaPt.Position
         newPt = Point3D(pt.x() - dx, pt.y() - dy, pt.get_Z())
         resultPolylineArea.Add(PolylineAreaPoint(newPt, polylineAreaPt.bulge))
     return resultPolylineArea
    def set_Position(self, point3d):
        self.position = point3d

        if self.layerType == QGis.Line:
            self.geometry = PolylineArea([
                point3d,
                Point3D(point3d.get_X() + 0.000000001, point3d.get_Y())
            ])
        elif self.layerType == QGis.Point:
            self.geometry = point3d
        elif self.layerType == QGis.Polygon:
            self.geometry = PolylineArea([
                point3d,
                Point3D(point3d.get_X() + 0.000000001, point3d.get_Y()),
                Point3D(point3d.get_X() + 0.000000001,
                        point3d.get_Y() + 0.000000001),
                Point3D(point3d.get_X(),
                        point3d.get_Y() + 0.000000001), point3d
            ])
Beispiel #20
0
    def __init__(self, point3d_0=None, ficorStatus_0=None):
        self.status = None
        self.point = None

        if point3d_0 == None:
            self.point = Point3D.get_Origin()
            self.status = ficorStatus_0
            return
        if ficorStatus_0 == None:
            self.point = point3d_0
            self.status = FicorStatus.OK
            return
    def __init__(self,
                 point3d_0=Point3D(),
                 double_0=0.0,
                 double_1=0.0,
                 double_2=0.0,
                 double_3=0.0):
        IBaroVnavSurface.__init__(self)

        self.Type = "Z"
        IBaroVnavSurface.method_2(self, point3d_0, double_0)
        self.xstart = double_1
        self.tanslope = double_3
        self.mocma = double_2
 def vmethod_3(self, point3d_0, bool_0):
     point3d = Point3D()
     point3d = MathHelper.getIntersectionPoint(
         self.ptTHR, self.ptEND, point3d_0,
         MathHelper.distanceBearingPoint(point3d_0, self.trm90, 100))
     num = MathHelper.calcDistance(self.ptTHR, point3d)
     if not MathHelper.smethod_115(point3d, self.ptTHR, self.ptTHRm90):
         num = num + self.xstart
     else:
         num = self.xstart - min([num, self.xstart])
     num1 = num * self.tanslope
     if (bool_0):
         num1 = num1 + self.mocma
     return self.ptTHR.z() + num1
    def vmethod_3(self, point3d_0, bool_0):

        point3d = Point3D()
        point3d = MathHelper.getIntersectionPoint(
            self.ptTHR, self.ptEND, point3d_0,
            MathHelper.distanceBearingPoint(point3d_0, self.trm90, 100))
        num = 0
        if (MathHelper.smethod_115(point3d, self.ptTHR, self.ptTHRm90)):
            num = max([
                MathHelper.calcDistance(self.ptTHR, point3d), self.xstart
            ]) - self.xstart
        num1 = 0
        if (bool_0):
            num1 = self.mocma + num * self.tanslope
        return self.ptTHR.z() + num1
    def tableViewObstacleMouseTeleaseEvent_rightButton(self, e):
        if self.obstaclesModel == None:
            return
        featID = self.obstaclesModel.data(
            self.obstaclesModel.index(
                self.selectedObstacleMoselIndex.row(),
                self.obstaclesModel.IndexObjectId)).toString()
        layerID = self.obstaclesModel.data(
            self.obstaclesModel.index(
                self.selectedObstacleMoselIndex.row(),
                self.obstaclesModel.IndexLayerId)).toString()
        name = self.obstaclesModel.data(
            self.obstaclesModel.index(
                self.selectedObstacleMoselIndex.row(),
                self.obstaclesModel.IndexName)).toString()
        xValue = self.obstaclesModel.data(
            self.obstaclesModel.index(self.selectedObstacleMoselIndex.row(),
                                      self.obstaclesModel.IndexX)).toString()
        yValue = self.obstaclesModel.data(
            self.obstaclesModel.index(self.selectedObstacleMoselIndex.row(),
                                      self.obstaclesModel.IndexY)).toString()
        altitudeMValue = self.obstaclesModel.data(
            self.obstaclesModel.index(
                self.selectedObstacleMoselIndex.row(),
                self.obstaclesModel.IndexAltM)).toString()
        surfaceName = self.obstaclesModel.data(
            self.obstaclesModel.index(
                self.selectedObstacleMoselIndex.row(),
                self.obstaclesModel.IndexSurface)).toString()
        ocaMValue = self.obstaclesModel.data(
            self.obstaclesModel.index(
                self.selectedObstacleMoselIndex.row(),
                self.obstaclesModel.IndexOcaM)).toString()
        # ocaMValue = self.obstaclesModel.data(self.obstaclesModel.index(self.selectedObstacleMoselIndex.row(), self.obstaclesModel.IndexOcaM)).toString()
        obstacle = Obstacle(
            name, Point3D(float(xValue), float(yValue), float(altitudeMValue)),
            layerID, featID, None, 0.0, self.obstaclesModel.MocMultiplier, 0.0)
        self.changedCriticalObstacleValue = {
            "Obstacle": obstacle,
            "SurfaceName": surfaceName,
            "OcaM": float(ocaMValue) if ocaMValue != "" else None
        }

        menu = QMenu()
        actionSetCriticalObst = QgisHelper.createAction(
            menu, "Set Most Critical Obstacles", self.menuSetCriticalObstClick)
        menu.addAction(actionSetCriticalObst)
        menu.exec_(self.ui.tblObstacles.mapToGlobal(e.pos()))
 def __init__(self,
              point3d_0=Point3D(),
              double_0=0.0,
              double_1=0.0,
              double_2=0.0,
              double_3=0.0,
              double_4=0.0):
     IBaroVnavSurface.__init__(self)
     self.Type = "H"
     IBaroVnavSurface.method_2(self, point3d_0, double_0)
     self.xstart = min([double_1, double_2])
     self.tanslope = (max([double_3, double_4]) - min(
         [double_3, double_4])) / (max([double_1, double_2]) -
                                   min([double_1, double_2]))
     self.mocfa = max([double_3, double_4])
     self.mocma = min([double_3, double_4])
Beispiel #26
0
    def aerodromeCmbObj_Event_0(self):
        if len(self.arpFeatureArray) == 0:
            return
        self.parametersPanel.pnlNavAid.Point3d = None
        self.thrPoint3d = None
        self.thrEndPoint3d = None
        idxName = self.currentLayer.fieldNameIndex('Name')
        idxLat = self.currentLayer.fieldNameIndex('Latitude')
        idxLong = self.currentLayer.fieldNameIndex('Longitude')
        idxAltitude = self.currentLayer.fieldNameIndex('Altitude')
        self.rwyFeatureArray = []
        # if idxAttributes
        for feat in self.arpFeatureArray:
            attrValue = feat.attributes()[idxName].toString()
            if attrValue != self.parametersPanel.cmbAerodrome.SelectedItem:
                continue
            attrValue = feat.attributes()[idxLat].toDouble()
            lat = attrValue[0]

            attrValue = feat.attributes()[idxLong].toDouble()
            long = attrValue[0]

            attrValue = feat.attributes()[idxAltitude].toDouble()
            alt = attrValue[0]

            self.parametersPanel.pnlNavAid.Point3d = Point3D(long, lat, alt)
            break
        idxAttr = self.currentLayer.fieldNameIndex('Attributes')
        if idxAttr >= 0:
            self.parametersPanel.cmbRwyDir.Clear()
            rwyFeatList = []
            featIter = self.currentLayer.getFeatures()
            for feat in featIter:
                attrValue = feat.attributes()[idxAttr].toString()
                if attrValue == self.parametersPanel.cmbAerodrome.SelectedItem:
                    attrValue = feat.attributes()[idxName].toString()
                    s = attrValue.replace(" ", "")
                    compStr = s.left(6).toUpper()
                    if compStr == "THRRWY":
                        valStr = s.right(s.length() - 6)
                        self.parametersPanel.cmbRwyDir.Add(
                            self.parametersPanel.cmbAerodrome.SelectedItem +
                            " RWY " + valStr)
                        rwyFeatList.append(feat)
                        self.rwyFeatureArray = rwyFeatList
            self.rwyDirCmbObj_Event_0()
 def TransformBy(self, matrix3d):
     polylineAreaPointList = []
     for polylineAreaPoint in self:
         point3d = polylineAreaPoint.Position
         pointMatrix = [point3d.get_X(), point3d.get_Y(), point3d.get_Z(), 1]
         resultMatrix = []
         for matrix in matrix3d:
             matrix = numpy.multiply(matrix, pointMatrix)
             value = 0.0
             for num in matrix:
                 value += num
             resultMatrix.append(value)
         polylineAreaPointList.append(PolylineAreaPoint(Point3D(resultMatrix[0], resultMatrix[1], resultMatrix[2]), polylineAreaPoint.Bulge))
         resultPolylineArea = PolylineArea()
         for polylineAreaPoint in polylineAreaPointList:
             resultPolylineArea.Add(polylineAreaPoint)
     return resultPolylineArea
    def basedOnCmbFill(self, layer, basedOnCmbObj, vorDmePositionPanelObj):
        idx = layer.fieldNameIndex('Type')
        idxName = layer.fieldNameIndex('Name')
        idxLat = layer.fieldNameIndex('Latitude')
        idxLong = layer.fieldNameIndex('Longitude')
        idxAltitude = layer.fieldNameIndex('Altitude')
        vorDmeList = []
        vorDmeFeatureList = []
        if idx >= 0:
            featIter = layer.getFeatures()
            for feat in featIter:
                attrValue = feat.attributes()[idx].toString()
                attrValue = QString(attrValue)
                attrValue = attrValue.replace(" ", "")
                attrValue = attrValue.replace("/", "")
                attrValue = attrValue.toUpper()
                if attrValue == "DME":
                    vorDmeList.append(attrValue)
                    vorDmeFeatureList.append(feat)
            if len(vorDmeList) != 0:

                i = -1
                basedOnCmbObjItems = []
                for feat in vorDmeFeatureList:
                    typeValue = feat.attributes()[idx].toString()
                    nameValue = feat.attributes()[idxName].toString()
                    basedOnCmbObjItems.append(typeValue + " " + nameValue)
                basedOnCmbObjItems.sort()
                basedOnCmbObj.Items = basedOnCmbObjItems
                basedOnCmbObj.SelectedIndex = 0

                # if idxAttributes
                feat = vorDmeFeatureList[0]
                attrValue = feat.attributes()[idxLat].toDouble()
                lat = attrValue[0]

                attrValue = feat.attributes()[idxLong].toDouble()
                long = attrValue[0]

                attrValue = feat.attributes()[idxAltitude].toDouble()
                alt = attrValue[0]

                vorDmePositionPanelObj.Point3d = Point3D(long, lat, alt)
                self.connect(basedOnCmbObj, SIGNAL("Event_0"), self.basedOnCmbObj_Event_0)

        return vorDmeFeatureList
    def IntersectWithNew(self, other, tolerance = 0.0, result = []):
        # result = []
        minePointList = self.getQgsPointList()
        otherPointList = other.getQgsPointList()

        for i in range(1, len(minePointList)):
            mineGeom = QgsGeometry.fromPolyline([minePointList[i - 1], minePointList[i]])
            for j in range(1, len(otherPointList)):
                otherGeom = QgsGeometry.fromPolyline([otherPointList[j - 1], otherPointList[j]])
                if mineGeom.intersects(otherGeom):
                    intersectGeom = mineGeom.intersection(otherGeom)
                    pt = intersectGeom.asPoint()
                    if pt.x() != 0 and pt.y() != 0:
                        result.append(Point3D(pt.x(), pt.y()))
                elif mineGeom.touches(otherGeom):
                    pass

        return len(result) > 0, result
Beispiel #30
0
 def LoadData(self, reader, version):
     QARecord.LoadData(reader, version)
     for case in switch(version):
         if case(QAFileVersion.V8) or case(QAFileVersion.V8_1) or case(
                 QAFileVersion.V10):
             self.modelSpace = reader.ReadBoolean()
             self.viewSize = reader.ReadDouble()
             self.viewCenter = Point3D(reader.ReadDouble(),
                                       reader.ReadDouble(),
                                       reader.ReadDouble())
             self.imageFormatType = reader.ReadByte()
             self.imageRatio = reader.ReadDouble()
             num = reader.ReadInt64()
             self.value.SetLength(num)
             # self.value.Seek((long)0, SeekOrigin.Begin);
             self.value.write(reader.ReadBytes(int(num)), 0, int(num))
             return
         else:
             raise SystemError