Isometrische gebouwen maken (QGIS3)

Bijgedragen door: Steven Kim

OpenStreetMap (OSM) is a crowd-sourced global dataset of roads, boundaries, buildings and more. It has a growing collection of building footprints across the world with many of them also having height information. While the accuracy of building height data is notoriously difficult to validate for analysis, we can use QGIS expressions to create a fun artistic isometric rendering from this data.

Overzicht van de taak

We zullen afdrukken van gebouwen downloaden vanuit OSM voor het centrum van Toronto en een isometrische kaart met hoogten van gebouwen maken.

../../_images/output2.png

De gegevens ophalen

We zullen gegevens downloaden vanuit OpenStreetMap (OSM) met de plug-in QuickOSM. Bekijk Zoeken en downloaden van gegevens van OpenStreetMap (QGIS3) voor een introductie voor de plug-in QuickOSM. Als u de plug-in eenmaal hebt geïnstalleerd, kunt u doorgaan met de instructies hieronder om de gegevens voor uw regio op te halen.

Notitie

Deze handleiding is specifiek ontwerpen om te werken met uit OSM uitgenomen gegevens met de plug-in QuickOSM. De expressie voor de hoogte werkt niet met OSM planet-bestanden of uitgenomen gegevens met other_tags. In die gevallen dient u eerst niveaus en hoogten van gebouwen uit te nemen, voordat u ze gebruikt.

  1. Open QGIS. We zullen eerst een basiskaart laden. Scroll, in het paneel Browser, naar beneden en lokaliseer de tegellaag XYZ Tiles ‣ OpenStreetMap. Sleep en zet die neer in het kaartvenster. Zoom naar uw regio. Zorg ervoor dat uw regio volledig wordt bedekt door het kaartbereik.

../../_images/data115.png
  1. Start de plug-in QuickOSM via Vector ‣ QuickOSM ‣ QuickOSM….

../../_images/data25.png
  1. In the Quick query tab, enter building as the Key. Change the In to Canvas Extent. This will download all buildings in the current canvas extent. Expand the Advanced section, then unclick Points, Lines and Multilinestrings. This should leave Nodes, Ways, Relations and Multipolygons selected. Select Run query. Close the window once the map is loaded.

../../_images/data35.png
  1. All the available building footprints in the canvas extent will be loaded in a new layer building. You can continue with the data, or select a subset of the buildings. For this tutorial, we will select all buildings in your region of interest. Click the Select Features by Area or Single Click button on the Selection Toolbar. You can hold the left mouse button and draw a rectangle to select the required buildings. You can also hold the Shift key and click on the polygons to select them.

../../_images/data45.png
  1. Als de gewenste gebouwen eenmaal zijn geselecteerd, klik met rechts op de laag building en ga naar Exporteren ‣ Geselecteerde objecten opslaan als…

../../_images/data54.png
  1. In the Save Vector Layer As… dialog, click the button next to File name and browse to a folder on your computer. Enter the File name as osm_buildings.gpkg and Layer name as buildings. The downloaded buildings are in the CRS EPSG:4326 WGS84. This is a Geographic CRS with units in degrees. We can choose a Projected CRS which will allow us to use linear units of measurement such as meters. Click the dropdown menu for Select CRS and choose Project CRS: EPSG:3857 - WGS84 / Pseudo-Mercator. Click OK.

../../_images/data64.png
  1. De geselecteerde gebouwen zullen opnieuw worden geprojecteerd en worden opgeslagen naar een nieuw bestand voor GeoPackage.

../../_images/data74.png

Voor het gemak kunt u direct een kopie van de gebouwen uit het centrum van Toronto downloaden vanaf hieronder:

osm_buildings.gpkg

Gegevensbron [OPENSTREETMAP]

Procedure

  1. Zoek in de QGIS Browser naar het bestand osm_buildings.gpkg en vergroot het. Selecteer de laag buildings en sleep het naar het kaartvenster.

    ../../_images/1106.png
  2. Klik op Paneel Laag opmaken openen en schakel van Enkel symbool naar 2.5 D.

    ../../_images/2102.png
  3. Klik op de knop ε, naast Hoogte.

    ../../_images/340.png
  4. Voer, in de Expressiebouwer, de volgende expressie in. Deze expressie past een vermenigvuldiging toe op het eerste niet lege veld van building:levels en height. Als beide null zijn, dan wordt een standaard hoogte van 20 meter gebruikt. Onthoud dat dit overdreven hoogten zijn voor het visualiseren op grotere schalen.

coalesce("building:levels"*10, "height"*2, 20)
../../_images/423.png
  1. Wijzig de Hoek naar 135 graden.

    ../../_images/520.png
  2. Deselecteer Muren voorzien van schaduw, gebaseerd op aspect en Schaduw. We zullen onze eigen kleuren toepassen. Klik op het keuzemenu voor het selecteren van de renderer.

    ../../_images/620.png
  3. Schakel van 2.5 D terug naar Enkel symbool.

    ../../_images/719.png
  4. In het venster Symbool, merk op dat er twee Geometrie-generatoren zijn, elk met een laagtype Standaard vulling. De eerste Standaard vulling is het bovenste vlak van elk blok, terwijl de tweede Standaard vulling is de zijkant is. Klik op de eerste Standaard vulling om de kleur van de bovenzijde te wijzigen. Klik op de knop Data-bepaalde ‘override’ voor de Vulkleur en selecteer Bewerken… in het menu.

    ../../_images/819.png
  5. Dat brengt het dialoogvenster Expressiebouwer voor de Vulkleur naar voren. Voer de volgende expressie in. Deze expressie past het kleurverloop Spectral toe op de gegevens, gebaseerd op zijn afstand vanaf het midden van de kaart.

ramp_color('Spectral',
    scale_linear(
        distance(@geometry,@map_extent_center),
        0,@map_extent_width/6,
        0,1
    )
)
../../_images/919.png
  1. Klik op de knop Data-bepaalde ‘override’ voor de Vulkleur en selecteer Kopiëren… in het menu.

    ../../_images/1025.png
  2. Klik op de knop Data-bepaalde ‘override’ voor de Lijnkleur en selecteer Plakken… in het menu om dezelfde expressie toe te passen.

    ../../_images/1128.png
  3. Klik nu op de tweede Standaard vulling om de zijkanten te wijzigen. U zou misschien naar beneden moeten scrollen om dit te kunnen doen. Klik op het keuzemenu voor het Symboollaagtype.

    ../../_images/1226.png
  4. Change the Symbol Layer Type from Simple Fill to Gradient Fill. The two color selectors beside the Two color represent the top and bottom colors of the gradient. Click on Data define override button for the top color.

    ../../_images/1324.png
  5. Select Edit and enter the following expression. This is the same expression that we used for the roof color but adjusts the transparency of the color using the set_color_part() function.

    set_color_part(
      ramp_color('Spectral',
          scale_linear(
              distance(@geometry,@map_extent_center),
              0,@map_extent_width/6,
              0,1
          )
      ), 'alpha',100)
    
    ../../_images/1422.png
  6. Click on the small black triangle of the bottom color selector and check Transparent box.

    ../../_images/1519.png
  7. Laten we, voordat we het paneel Laag opmaken verlaten, de laag transformeren om het isometrische uiterlijk te voltooien. Vergroot het gedeelte Renderen van lagen en selecteer Tekeneffecten. Klik op de ster Effecten aanpassen aan de rechterkant.

    ../../_images/1618.png
  8. Klik op het keuzemenu naast Type effect.

    ../../_images/1719.png
  9. Wijzig het Type effect van Bron naar Transformeren. Voor X,Y schuin trekken, voer respectievelijk in -0.2 en -0.2.

    ../../_images/1816.png
  10. Voer 45 in voor Rotatie. Verlaat en sluit het paneel Laag opmaken.

    ../../_images/1913.png
  11. U zou een kleurrijke weergave moeten zien van polygonen van gebouwen in isometrische weergave. Blijf experimenteren met de expressies voor hoogte, hoek, vulkleuren enzovoort, als u dat wilt.

    ../../_images/2013.png

If you want to give feedback or share your experience with this tutorial, please comment below. (requires GitHub account)