Punktmoln är ett mycket flexibelt sätt att hantera 3D data från olika sensorer och mjukvaror. Som med allt annat så finns det olika format och stödapplikationer för att hantera punktmoln, där en del är mer ”öppna” än andra. Här beskrivs ett hanteringsflöde som bygger på det öppna punktmolnsformatet COPC vars filer normalt får filändelsen *.copc.laz. COPC är ursprungligen framtaget av Howard Butler från https://hobu.co.
COPC filer skiljer sig från vanliga LAZ genom att punkterna är strukturerade i en octree struktur (https://en.wikipedia.org/wiki/Octree). Det finns andra format som också använder octree, men dessa är i de flesta fall ”ägda” av olika företag eller består av flera filer i en katalogstruktur. COPC är en enda fil och den är bakåtkompatibel med vanliga LAZ filer. Program som inte stödjer COPC kan därmed läsa filerna som om de vore standard LAZ.
Det enklaste sättet att skapa COPC är att öppna punktmolnsfilen i QGIS. I bakgrunden använder QGIS biblioteket PDAL för att läsa punktmolnsfiler. I teorin så går det därför att importera alla punktmolnsformat som PDAL kan läsa. Om man har ett format som inte kan importeras direkt så kan man gå via programmet CloudCompare för att konvertera punktmolnet till exempelvis standard LAZ först. För att hantera punktmoln så konverteras alla inlästa punktmoln till COPC automatiskt i QGIS. Detta görs i bakgrunden med verktyget untwine som är inkluderat i QGIS tillsammans med PDAL.
För någon med GIS utbildning och lite träning på QGIS så räcker detta, men för den som inte är van vid GIS så är det bättre med en betydligt enklare visare för COPC filerna. Helst utan installation och en webblösning är OK även om man behöver köra det via en webbserver centralt (eller lokalt). En etablerad visare för punktmoln är Potree. Utvecklingen av Potree verkar ha avstannat en del, men det är en komplett visare av punktmoln med många tillgängliga verktyg som är enkla att hantera. Senaste release-versionen 1.8.2 stödjer inte COPC rakt av, men ”master” utgåvan gör det (se https://github.com/potree/potree/pull/1381). Denna version av Potree kan visa COPC på samma sätt som de tidigare entwine filerna (ytterligare ett octree format).
Med stöd av AI har den landningssida som jag tidigare skapat uppdaterats för att kunna hantera lokala COPC filer som exempelvis kan dras och släppas i webbläsarfönstret. Det är bara html-sidans kod som ändrats med AI och de bakomliggande JavaScript filerna är oförändrade (förutom versionsnummer som jag uppdaterat till 1.8.3). Sidan accepterar en eller flera COPC filer med dra och släpp, eller genom att använda funktionen för att söka efter filer med en dialogruta. Det går även att skapa en textfil med sökvägar till COPC filer men då måste filerna finnas på en http/https url och inte med lokala eller nätverkssökvägar.

Visningens prestanda är beroende av klientens hårdvara och det som framför allt påverkar prestanda är ett rimligt bra grafikkort. Det krävs däremot inget speciellt för att över huvud taget visa sidan och det fungerar även på en mobiltelefon eller surfplatta, så länge man kan navigera till de COPC filer man vill lägga till och visa, eller att någon skapat en url som automatiskt läser in filer via en textfil.
https://webbserver-url:port?list=relativ/sökväg/listfil.txt
För att köra sidan är det den nämnda html filen som är ”front end” för applikationen, och utöver detta krävs det en mängd stödbibliotek med JavaScript som är enklast att skapa via GitHub (se ”installera” nedan).
Installera
Det krävs att git, npm och node.js är installerat för att bygga applikationsfiler och resurskataloger. Jag har gjort en ”fork” på potree repot med de ändringar som är beskrivna ovan för att få till en dra-och-släpp visare för COPC filer. Gå till katalog där webbsidan ska genereras och öppna en terminal och skriv in:
git clone https://github.com/klakar/potree.git
cd potree
npm install
npm start
Det går bra att köra ”npm audit fix” vid behov, men kör inga ändringar som innebär ”breaking changes”.
Ovanstående kompilerar och kopierar alla filer och resurser samt startar en webbserver på http://localhost:1234. För att deployera sidan så kopieras innehållet i potree katalogen till roten på en webbserver (eller där man vill att sidan ska finnas).
Filen index.html kan redigeras med en texteditor för att ändra texter med mera som inte är direkt kopplade till den ursprungliga potree visaren.
Om man bara är intresserad av själva visaren så kan man radera flera kataloger och filer:
- exempel/
- node_modules/
- pointclouds/
- src/
- docs/
- gulpfile.js
- package.json
- package-lock.json
- README.md
- rollup_config.js

Kvar blir då kataloger och filer enligt bilden ovan. Filen LICENSE måste vara kvar för det är ett krav från den ursprungliga skaparen Markus Schütz.
Punktmoln kan läggas till en eller flera på en gång, eller genom att dra och släppa ytterligare filer efter hand. Det finns ingen funktion för att ta bort filer, men man ”nollställer” sidan enkelt genom att uppdatera sidan (normalt F5 på tangentbordet).
Alternativ
Nu är Potree inte byggd med den senaste tekniken. Visaren fungerar däremot väldigt bra under nu rådande förutsättningar, lite beroende på vilka behov man har. Potree bygger på WebGL, medan nyare visare håller på att utvecklas som bygger på WebGPU. Jag har inte hittat någon webbapplikation som är lika bra och samtidigt användarvänlig som Potree ännu så jag kommer att fortsätta använda Potree ett bra tag till.
