För ett tag sedan letade jag efter 3D glasögon i kartong. Ni vet den där gamla modellen med olikfärgade glas (kallas anaglyph). På ebay hittade jag ett 10-pack för drygt 14 kr inklusive frakt från Kina, så jag kontrollerade budgeten och slog till, utan någon egentlig förhoppning att det skulle fungera.
Vet ni vad som landade i min brevlåda idag?
Jodå en dubbel, tunn, plastpåse med 10 st i huvudsak hela analgyph 3D glasögon! Då måste man testa. En enkel google bildsökning på anaglyph får snabbt ett antal svar som är häftiga att titta på, men frågan väcks direkt. Kan man göra mer?
CloudCompare visade sig vara ett jättebra 3D program för detta. Ladda bara in 3D data (punktmoln, mesh, etc) och tryck F10. Välj ”röd-cyan” och klicka OK!
Man kan behöva laborera lite med inställningarna men det fungerar skapligt direkt, så länge man väljer röd-cyan och har den röda linsen på vänster öga, och inte tvärt om.
QGIS då?
QGIS i 3D får vi vänta med till 3.0 (tidigast), och då är det inte säkert att det kommer att finnas ett anaglyph läge, men det går att skapa en karta med 3D effekt!
Jag tar ett vanligt byggnadslager från lantmäteriet, som dock saknar byggnadshöjd. Detta kan dock simuleras. Exempelvis genom att ge till ytan stora byggnader en proportionellt högre höjd.
För detta använder jag geometrigeneratorn:
Lagret består av tre delar. Överst en grå enkel fyllning med en lagom mörk grå färg. Denna representerar byggnadens faktiska utbredning.
Under denna en geometrigenerator som flyttar (translate) geometrin åt höger baserat på polygonens area ($area). Jag lägger även till 10 för att även små byggnader skall ges en viss 3D effekt. Siffran 2000 har jag provat mig fram till, så du kanske behöver välja andra värden.
Underst ytterligare en geometrigenerator men här är det -$area/2000-10 för att flytta denna polygon åt vänster.
Den polygon som flyttas åt höger skall ha en ”cyan” färg och den till vänster röd.
Om man i stället har byggnadshöjd i attributen så kan man använda dessa istället för denna formel.
Fungerar det då? Tja, om man med fungerar menar att det ger ett intryck av att byggnaderna har olika höjd och ”sticker ut” lite ur skärmen, så ja! Det fungerar.
Uttrycket i geometrigeneratorn (translate()) kan appliceras på alla typer av geometrier. Så om man har ett lager med träd där trädens höjd är angiven i attribut så kan man använda dessa också.
translate($geometry, +/- höjd, 0)
För faktiska höjddata (raster) så kan man inte göra likadant. Då skulle jag tro att det är bättre att använda ett program som CloudCompare för att titta på dessa data i 3D. Är man bekväm med SAGA så kan man i detta program också visa rasterdata i anaglyph 3D relativt enkelt. SAGA däremot är lite annorlunda metodmässigt att jobba med.