• 2024-02-17

VLOS számítás egy drónos térképező projektben

VLOS számítás egy drónos térképező projektben

VLOS számítás egy drónos térképező projektben 1024 576 SurveyTransfer

A VLOS területek kijelölése kiemelten fontos egy drónos térképező projekt során. A belátható területek, azaz VLOS számítás azt jelenti, hogy kimutatjuk, mely pontról állva láthatja a drónpilóta szabad szemmel a drónt, miközben az elvégzi a térképező missziót. Mi is az a VLOS? 

A VLOS a Visual Line of Sight rövidítése, ami azt jelenti, hogy a drónnak a teljes repülési küldetés alatt jól láthatónak kell lennie a drón kezelője számára minden további segítség nélkül.

Az EVLOS az Extended Visual Line of Sight rövidítése. Ez lehetővé teszi a drónok VLOS-nál távolabbi működtetését egy vagy több vizuális megfigyelő használatával. A repülés során a megfigyelők vizuális kapcsolatot tartanak a drónnal, és kommunikálnak a drón kezelőjével és szükség esetén riasztják a pilótát.

A BVLOS a Beyond Visual Line of Sight rövidítése. Ebben az üzemmódban a drón kezelője nem látja végig a drónt a misszió alatt. A drón képes végrehajtani a küldetést megfigyelők segítsége nélkül. A drón kezelője távoli pilótaállomást vagy földi irányító állomást használ a küldetés figyelésére és irányítására.

A meghatározások és az infografika a Fixar.pro-ról származnak.

VLOS drone EVLOS BVLOS 01

A VLOS kiszámítására kettő függvény is használható az ingyenes QGIS-ben: GRASS és GDAL. Mindkettő „Viewshed” néven érhető el. A VLOS kiszámítására alkalmas függvény csak pontokkal képes számolni. A Viewshed függvény alapja az a pont geometria, ahonnan érdemes elindítanod a drónt a térképezéshez. A függvény a belátható területeket (VLOS) ebből a pontból számolja ki. 

Bonyolítja a helyzetet, hogy valószínűleg nem tudod, hogy hol is lehetnek az optimális pontok. Viszont az is elegendő, ha több területet jelölsz ki, amiken belül keresed, hogy hol kell állnod, hogy ráláss a drónra. 

A következő részfeladatokra lehet bontani a VLOS kiszámítását:

  1. Első lépésben egy területet kell kijelölni.
  2. A területen belül pontokat kell generálni.
  3. Harmadik lépésként az összes szóba jöhető pontra le kell futtatni a „Viewshed” függvényt, majd ki kell számolni mindegyik pont belátható területeit hektárban.
  4. Végezetül, kiválasztjuk azt a pontot, amelyről a legnagyobb terület látható be.

A VLOS területek kijelölése

Amennyiben egy drónos térképező projektben akarsz VLOS térképet generálni, úgy mindenképp szükséged lesz egy domborzatmodellre (DEM). Ha nincs megfelelő DEM-ed, akkor annak beszerzéséről és létrehozásáról már korábban írtunk, ezt mindenképp csekkold.

QGIS-ben a „New Shapefile Layer…” opciót használva hozz létre egy új fájlt. A shapefile-t szerkesztve bejelölheted azokat a területeket, amiket szeretnél megvizsgálni VLOS szempontból. A QGIS szerkesztésről korábban írtunk, ha elakadnál, akkor ezt a cikket olvasd el.

VLOS drone EVLOS BVLOS 02

AZ OPTIMÁLIS TERÜLETEN BELÜLI VLOS PONTOK KIOSZTÁSA

A területeken belül a potenciális pontokat választjuk ki. A vizsgálandó VLOS pontok illesztését megteheted, ha a „Vector/Research Tools/Random Points Inside Polygons…” funkciót indítod.

VLOS drone EVLOS BVLOS 03

A függvény segítségével a leválogatott területünkön belül szabályos mintázatban elhelyezhetünk pontokat. Válaszd ki az „Input layer” esetében a kijelölt területet, majd állítsd be, hogy mennyi pontot szeretnél elhelyezni a területen belül „Points count”. Itt érdemes nem irreálisan magas számot megadni, hiszen ne feledd, hogy mindegyik pontra különálló térképeket is létre kell hozni! Én beállítottam a minimális távolságot is a pontok között („Minimum distance between points”), hogy egyenletesebb legyen a térbeli kiosztás. Az eredmény egy jól kivehető, szabályos mintázatú ponthalmaz lett.

Drone EVLOS BVLOS 04

VLOS TÉRKÉP GENERÁLÁSA drónos térképezéshez

Talán a beláthatóság (viewshed) térkép gyártása jelenti a legnagyobb problémát. Gondolj csak bele, hogy akár 50 pontra manuálisan kell lefuttatni a „Viewshed” függvényt, majd mindegyikre ki kell számolni a belátható területek mértékét. Ha ez több potenciális helyet vagy nagyobb mintavételi sűrűséget jelentene, akkor akár napok elmennének ezzel a lépéssel. De nem nekünk! A lusta ember – mint amilyen én is vagyok – megtanul folyamatokat automatizálni és hagyja, hogy a számítógép dolgozzon helyette. Ráadásul, a kóddal megismételhetővé, ellenőrizhetővé válik egy teljes folyamat. Írjunk egy Python kódot, ami elvégzi helyettünk a piszkos munkát! 🙂

Nyisd meg a „Python Console”-t, majd a „Show Editor” gombot nyomd meg. A szöveges területbe másold be a következő kódot.

Megjegyzés: Mielőtt használnád a szkriptet, pár fontos információt megosztok veled. A kódban kommentelve jeleztem (a # jel utáni szövegrész), hogy milyen változókat kell átírnod. Tehát a kódsorban felülről lefelé haladva: DEM réteg neve; a pontokat tartalmazó réteg neve; a „viewshed” térképek kimentésének abszolút elérési útja a fájl nevével, a “.tif” végződés nélkül. Ügyelj arra, hogy az elérési utat normál perjellel „/” add meg és ne fordított perjellel „\”.
A másik fontos dolog, hogy GDAL függvénnyel írtam meg a kódot. Ha erről többet szeretnél megtudni, akkor itt elolvashatod a részletes leírást.

A maximális VLOS távolságot (‘MAX_DISTANCE’) 100 méterre, az drón magasságát (‘TARGET_HEIGHT’) 50 méterre, míg az ‘OBSERVER_HEIGHT’ értékét 1.8 méterre állítottam be, azaz egy átlagos drónpilóta magasságát. 🙂

A GDAL viewshed függvényhez hozzáadhatod az atmoszférikus hatást is: ‘EXTRA’:’-cc 0.85714′, ezzel még pontosabb eredményt érhetsz el a VLOS számításakor.

import processing import numpy as np from osgeo import gdal i = 0 # Enter the name of the DEM layer rasterLayer = QgsProject.instance().mapLayersByName('dem')[0] # Enter the name of the Points layer pointlayer = QgsProject.instance().mapLayersByName('Random points')[0] # Enter the file path of the output raster outputFile = 'C:/Users/.../YOUR FOLDER/viewshed' new_column = pointlayer.dataProvider() new_column.addAttributes([QgsField('area', QVariant.Double)]) pointlayer.updateFields() iter = pointlayer.getFeatures() for feature in iter: outputFileTif = outputFile + str(i) + '.tif' geom = feature.geometry() observerxy = geom.asPoint() strobserverxy = str(observerxy[0]) + "," + str(observerxy[1]) processing.run("gdal:viewshed", { 'INPUT': rasterLayer, 'BAND':1, 'OUTPUT': outputFileTif, 'OBSERVER': strobserverxy, 'OBSERVER_HEIGHT': 1.8, 'MAX_DISTANCE': 100, 'TARGET_HEIGHT': 50 }) viewshedLayer = QgsRasterLayer(outputFileTif) pixel_size_x = viewshedLayer.rasterUnitsPerPixelX() pixel_size_y = viewshedLayer.rasterUnitsPerPixelY() hectare_per_cell = pixel_size_x * pixel_size_y / 10000 ds = gdal.Open(outputFileTif) raster = ds.ReadAsArray() all_pixels = np.where(raster != 255, np.nan, raster) total_pixel_area = np.nansum(all_pixels) total_area_raster = total_pixel_area * hectare_per_cell atts = {pointlayer.fields().lookupField('area'):float(total_area_raster)} new_column.changeAttributeValues({feature.id(): atts}) i += 1

Miután beállítottál mindent, nyomj rá a zöld háromszög gombra („Run Script”). A VLOS számítás pár másodperc alatt végbemegy.

Drone EVLOS BVLOS 05

Az OPTIMÁLIS HELY KIVÁLASZTÁSA

A szkript futtatása után az eredmény könnyen leolvasható a térképről, ha megnyitjuk a pontok attribútum tábláját. Ezt úgy teheted meg, ha jobb egérgombbal kattintasz a rétegre, majd kiválasztod az „Open Attribute Table” opciót.

Drone EVLOS BVLOS 06

Kattints kétszer az új „area” nevű oszlop fejlécére, így az értékeket csökkenő sorrendbe állíthatod. Így már csak a sor elején lévő számra kell kattintani, majd kiválaszthatjuk a legmagasabb értéket. Ez azt jelenti, hogy ebből a kiválasztott pontból látható be a legnagyobb terület. A kód megírása során a területegységeket hektárban határoztam meg.

A drónos térképező projekt tervének megosztása

Amennyiben valakivel szeretnéd megosztani a VLOS számítás eredményeit, úgy ezeket a térképeket könnyen megoszthatod a SurveyTransfer-rel. A repülés eredményeit ezután szintén feltöltheted a SurveyTransfer projektedbe, ahonnan elérhetővé válik a projekt összes tériformatikai adatkészlete.

Töltsd le, nézd meg a SurveyTransfer demo “VLOS számítás” projektet:

https://app.surveytransfer.net/view/7469f8e7-f24a-4e7a-83e5-db5b586dc1f4?shareKey=5ZSSJs9JQ3wKjBtHCp9YZ9BxcFvt0aSdYi8J_PQrSKQ

Ha nagyon-nagyon tetszett, amit olvastál, akkor meg is oszthatod az ismerőseiddel. Ne fogd vissza magad! 🙂

Tetszett, amit olvastál? Akarsz hasonlókat olvasni?