r-lidar-lab / ALSroads

Road corrections and measurements from ALS data
19 stars 4 forks source link

Que fait tile_conductivity ? #37

Closed Jean-Romain closed 2 years ago

Jean-Romain commented 2 years ago

Je pose la question parce que je crois que tu as réinventé mon moteur de traitement. En gros tu roules grid_conductivity sur un LAScatalog par chunk definis dans une liste de bbox puis tu écris les output dans des fichiers (en paralle en plus je crois avant que je te demande de retirer future). Donc en gros c'est la même chose de mon LAScatalog processing engine. On devrait pas plutôt faire ca ?

ctg = readLAScatalog("folder/", chunk_size = 500)
opt_output_files(ctg) <- paste0(outdir, "/conductivity_{XLEFT}_{YBOTTOM}")

library(future)
plan(multisession)
sigma = grid_conductivity(ctg, dtm = dtm, param = param)

Si oui je vais faire en sorte que grid_conductivity fonctionne avec un LAScatalog. De toute facon c'etait dans mes plans

jfbourdon commented 2 years ago

Tu as bien compris, mon idée était de pouvoir générer une série de tuiles imbriquées qui allaient pouvoir ensuite être utilisées à-la-volée comme quand on utilise un LAScatalog. Dans mon exemple, j'utilisais un VRT (créé à partir de toutes les tuiles produites) comme mosaïque virtuelle à la manière d'un LAScatalog pour un ensemble de tuiles LAZ.

Dans ta proposition, est-ce que sigma est un catalogue de conductivité ou simplement un vecteur de chemins d'accès à des TIF comme je le faisais pour créer ensuite un VRT?

À noter qu'il est important d'ajouter un buffer à chunk_size pour s'assurer que les valeurs de conductivité en bordure sont bien les bonnes. Dans mon exemple, j'ajoutais 5 pixels pour calculer la conductivité et je croppais ensuite selon la bbox originalement voulue. Ça me permettait d'avoir des transitions propres entre chaque tuile.

Jean-Romain commented 2 years ago

Dans ta proposition, est-ce que sigma est un catalogue de conductivité ou simplement un vecteur de chemins d'accès à des TIF comme je le faisais pour créer ensuite un VRT?

C'est le comportement par default du moteur de lidR. Il produit des fichiers et les combine en VRT. Comme pour un CHM, un DTM ou un output de ABA.

À noter qu'il est important d'ajouter un buffer à chunk_size pour s'assurer que les valeurs de conductivité en bordure sont bien les bonnes.

Le moteur de lidR se charge de ca et il n'y a pas besoin de buffer dans ce cas puisque nul part il n'y a d'interpolation. Il faut que les chunk soient alignés sur le raster de sortie mais ca c'est lidR qui s'en charge.

Jean-Romain commented 2 years ago

J'ai ajouté une nouvelle fonction rasterize_conductivity qui fait la job en utilisant le moteur inerne de lidR. J'ai donc supprimé tile_conductivity. grid_conductivity reste une fonction interne qui prend aussi en compte la centerline et les polygones de masquage