def testProfileRenderFixedColor(self): pcl = QgsPointCloudLayer( os.path.join(unitTestDataPath(), 'point_clouds', 'ept', 'lone-star-laszip', 'ept.json'), 'test', 'ept') self.assertTrue(pcl.isValid()) pcl.elevationProperties().setMaximumScreenError(30) pcl.elevationProperties().setMaximumScreenErrorUnit( QgsUnitTypes.RenderMillimeters) pcl.elevationProperties().setPointSymbol(Qgis.PointCloudSymbol.Square) pcl.elevationProperties().setPointColor(QColor(255, 0, 255)) pcl.elevationProperties().setPointSize(3) pcl.elevationProperties().setPointSizeUnit( QgsUnitTypes.RenderMillimeters) pcl.elevationProperties().setRespectLayerColors(False) curve = QgsLineString() curve.fromWkt( 'LineString (515387.94696552358800545 4918366.65919817332178354, 515389.15378401038469747 4918366.63842081092298031)' ) req = QgsProfileRequest(curve) req.setCrs(pcl.crs()) req.setTolerance(0.05) plot_renderer = QgsProfilePlotRenderer([pcl], req) plot_renderer.startGeneration() plot_renderer.waitForFinished() res = plot_renderer.renderToImage(400, 400, 0, curve.length(), 2320, 2330) self.assertTrue( self.imageCheck('point_cloud_layer_fixed_color', 'point_cloud_layer_fixed_color', res))
def testToFromMapCoordinates(self): """ Test converting canvas coordinates to map coordinates """ canvas = QgsElevationProfileCanvas() canvas.setCrs(QgsCoordinateReferenceSystem('EPSG:4326')) canvas.setFrameStyle(0) canvas.resize(600, 400) canvas.setProject(QgsProject.instance()) canvas.show() self.assertEqual(canvas.width(), 600) self.assertEqual(canvas.height(), 400) # no profile curve set self.assertTrue( canvas.toMapCoordinates(QgsPointXY(300, 200)).isEmpty()) self.assertTrue(canvas.toCanvasCoordinates(QgsPoint(6, 3)).isEmpty()) ls = QgsLineString() ls.fromWkt('LineString(0 2, 10 2, 10 4)') canvas.setProfileCurve(ls) canvas.setVisiblePlotRange(0, ls.length(), 0, 100) res = canvas.toMapCoordinates(QgsPointXY(300, 200)) self.assertAlmostEqual(res.x(), 5.927, 0) self.assertAlmostEqual(res.y(), 2, 4) self.assertAlmostEqual(res.z(), 49.165, 0) res = canvas.toCanvasCoordinates(QgsPoint(6, 2, 50)) self.assertAlmostEqual(res.x(), 303.578, -1) self.assertAlmostEqual(res.y(), 196.75, -1) # point outside plot area res = canvas.toMapCoordinates(QgsPointXY(0, 0)) self.assertTrue(res.isEmpty()) # just inside top left of plot area res = canvas.toMapCoordinates(QgsPointXY(15, 380)) self.assertAlmostEqual(res.x(), 0.1190, delta=0.1) self.assertAlmostEqual(res.y(), 2, 4) self.assertAlmostEqual(res.z(), 2.95, 0) res = canvas.toCanvasCoordinates(QgsPoint(0, 2, 0)) self.assertAlmostEqual(res.x(), 9.156, delta=3) self.assertAlmostEqual(res.y(), 391.5, delta=10) res = canvas.toCanvasCoordinates(QgsPoint(10, 4, 100)) self.assertAlmostEqual(res.x(), 598, -1) self.assertAlmostEqual(res.y(), 2, -1) res = canvas.toMapCoordinates(QgsPointXY(590, 10)) self.assertAlmostEqual(res.x(), 10, 1) self.assertAlmostEqual(res.y(), 3.83, 1) self.assertAlmostEqual(res.z(), 97.946, 1)
def test_tool(self): """ Test some plot tool logic """ canvas = QgsElevationProfileCanvas() canvas.setCrs(QgsCoordinateReferenceSystem('EPSG:4326')) canvas.setFrameStyle(0) canvas.resize(600, 400) canvas.setProject(QgsProject.instance()) canvas.show() self.assertEqual(canvas.width(), 600) self.assertEqual(canvas.height(), 400) ls = QgsLineString() ls.fromWkt('LineString(0 2, 10 2, 10 4)') canvas.setProfileCurve(ls) canvas.setVisiblePlotRange(0, ls.length(), 0, 100) self.assertFalse(canvas.tool()) tool = TestTool(canvas) self.assertFalse(tool.isActive()) canvas.setTool(tool) self.assertEqual(canvas.tool(), tool) key_press_event = QKeyEvent(QEvent.KeyPress, 54, Qt.ShiftModifier) canvas.keyPressEvent(key_press_event) self.assertEqual(tool.events[-1].type(), QEvent.KeyPress) key_release_event = QKeyEvent(QEvent.KeyRelease, 54, Qt.ShiftModifier) canvas.keyReleaseEvent(key_release_event) self.assertEqual(tool.events[-1].type(), QEvent.KeyRelease) mouse_dbl_click_event = QMouseEvent(QEvent.MouseButtonDblClick, QPointF(300, 200), Qt.LeftButton, Qt.MouseButtons(), Qt.ShiftModifier) canvas.mouseDoubleClickEvent(mouse_dbl_click_event) self.assertEqual(tool.events[-1].type(), QEvent.MouseButtonDblClick) self.assertIsInstance(tool.events[-1], QgsPlotMouseEvent) self.assertAlmostEqual(tool.events[-1].mapPoint().x(), 5.92, delta=0.6) self.assertAlmostEqual(tool.events[-1].mapPoint().y(), 2, 4) self.assertAlmostEqual(tool.events[-1].mapPoint().z(), 49.165, delta=5) mouse_move_event = QMouseEvent(QEvent.MouseMove, QPointF(300, 200), Qt.LeftButton, Qt.MouseButtons(), Qt.ShiftModifier) canvas.mouseMoveEvent(mouse_move_event) self.assertEqual(tool.events[-1].type(), QEvent.MouseMove) self.assertIsInstance(tool.events[-1], QgsPlotMouseEvent) self.assertAlmostEqual(tool.events[-1].mapPoint().x(), 5.92, delta=10) self.assertAlmostEqual(tool.events[-1].mapPoint().y(), 2, 4) self.assertAlmostEqual(tool.events[-1].mapPoint().z(), 49.165, delta=5) mouse_press_event = QMouseEvent(QEvent.MouseButtonPress, QPointF(300, 200), Qt.LeftButton, Qt.MouseButtons(), Qt.ShiftModifier) canvas.mousePressEvent(mouse_press_event) self.assertEqual(tool.events[-1].type(), QEvent.MouseButtonPress) self.assertIsInstance(tool.events[-1], QgsPlotMouseEvent) self.assertAlmostEqual(tool.events[-1].mapPoint().x(), 5.927, delta=1) self.assertAlmostEqual(tool.events[-1].mapPoint().y(), 2, 4) self.assertAlmostEqual(tool.events[-1].mapPoint().z(), 49.165, delta=5) mouse_release_event = QMouseEvent(QEvent.MouseButtonRelease, QPointF(300, 200), Qt.LeftButton, Qt.MouseButtons(), Qt.ShiftModifier) canvas.mouseReleaseEvent(mouse_release_event) self.assertEqual(tool.events[-1].type(), QEvent.MouseButtonRelease) self.assertIsInstance(tool.events[-1], QgsPlotMouseEvent) self.assertAlmostEqual(tool.events[-1].mapPoint().x(), 5.927, delta=1) self.assertAlmostEqual(tool.events[-1].mapPoint().y(), 2, 4) self.assertAlmostEqual(tool.events[-1].mapPoint().z(), 49.165, delta=5) wheel_event = QWheelEvent(QPointF(300, 200), QPointF(300, 200), QPoint(1, 2), QPoint(3, 4), Qt.NoButton, Qt.NoModifier, Qt.ScrollBegin, False) canvas.wheelEvent(wheel_event) self.assertEqual(tool.events[-1].type(), QEvent.Wheel)