1 of 36

State of�QGIS 3D

Martin Dobiaš

Lutra Consulting

FOSS4G 2019

2 of 36

About me

QGIS core developer since 2005

Working @ Lutra Consulting (UK)

3 of 36

Motivation for 3D views

  • Terrain visualization
  • Urban planning
  • Point clouds (LiDAR, photogrammetry)
  • Subterranean structures (geology)
  • ...

4 of 36

Before QGIS 3D

nviz (GRASS GIS)

gvSIG

Globe plugin (QGIS)

5 of 36

History of QGIS 3D

  • 2017: qgis.org accepts proposal to develop 3D views
  • Feb 2018: First release within QGIS 3.0
  • Mar 2018: Crowdfunding project by Lutra Consulting
  • 2019: Summer of code project by Ismail Sunni https://ismailsunni.github.io/GSoC-2019/

6 of 36

Using QGIS 3D

7 of 36

Starting with QGIS 3D

  • Open 3D map view

8 of 36

9 of 36

Starting with QGIS 3D

10 of 36

Terrain

11 of 36

Terrain

  • Terrain mesh generated on the fly from elevation data (raster)
  • Supported terrain types
    • Flat
    • Raster layer (DEM)
    • Online (Tilezen / AWS)

  • Texture: 2D rendered map
    • From specified map theme

12 of 36

Terrain

13 of 36

Vector data

14 of 36

15 of 36

Point rendering

  1. Basic symbols (sphere, cylinder, box, …)
  2. 3D models loaded from a file�(using assimp library - DAE/Collada, OBJ, …)
  3. Billboards (2D symbols always facing camera)

(models by Raymond Nijssen)

16 of 36

Line rendering

  1. “Simple” - line width defined in pixels (preserves Z coordinates)�
  2. “Buffered” - line width defined in map units (ignores Z coordinates)

17 of 36

Polygon rendering

  • 2D geometry
    • Planar 3D entity
    • Extrusion
  • 3D geometry
    • Polyhedral surface / PolygonZ
    • Triangular mesh / MultiPatch

18 of 36

Highlighting of polygon edges

19 of 36

Rule-based rendering

20 of 36

Handling of Z values

  • Altitude clamping
    • Relative: Z = Z_terrain + Z_geometry
    • Absolute: Z = Z_geometry
    • Terrain: Z = Z_terrain

  • Altitude binding - how to apply terrain elevation (Z_terrain)
    • Centroid - all vertices of a feature have terrain elevation from centroid
    • Per vertex - each vertex will have terrain elevation at each vertex separately

21 of 36

3D map tools

22 of 36

Navigation

  • Mouse
    • Drag - move camera
    • Wheel - zoom in/out
    • Shift/Control + Drag - rotate camera
  • Keyboard
    • Arrows, Page Up/Down - move camera
    • Shift/Control + Arrows - rotate camera
  • On-screen controls

23 of 36

Identification tool

24 of 36

Measurement tool

25 of 36

More functionality

26 of 36

Print layouts

27 of 36

Animations

28 of 36

Animation export

29 of 36

Terrain shading

30 of 36

Configuration of lights

31 of 36

Data for 3D

32 of 36

Data for 3D

CityGML / CityJSON format

  • Represents geometry and semantics
  • QGIS plugin: CityJSON Loader

OpenStreetMap

3D data available online: https://github.com/wonder-sk/3d-spatial-data

33 of 36

Future of QGIS 3D

34 of 36

Near future

  • QGIS.org grant
    • Better support for larger 3D scenes
    • Faster loading of data

35 of 36

Wishlist

  • More rendering techniques (transparency, shadows)
  • More materials (textured objects)
  • More styles for vector layers (lines as 3D pipes)
  • More data types (point cloud, 3D rasters)
  • Globe
  • Formats support (3D tiles, Arc SceneLayer)
  • Animation of data in scenes
  • Profile tool
  • Blender export
  • ...

36 of 36

Thank you!

martin.dobias@lutraconsulting.co.uk

Twitter: @lutraconsulting