Terrain¶
La forme des terrains est un élément principal contrôlant la propagation des trajectoires. C’est pourquoi la préparation des données de terrain est très importante et doit être traitée avec soin. Cette étape requiert d’ailleurs une bonne part du temps à consacrer aux projets de simulations de chute de pierres. En général, elle se résume à préparer les données d’élévation sous forme de points répartis de façon relativement homogène, exempts de trou et d’artéfact, et ne correspondant qu’au sol sans les infrastructures et la végétation. Ces manipulations sont détaillées dans les différentes sections de ce manuel concernant le terrain.
Aussi, l’emprise du terrain doit être suffisamment grande pour contenir l’ensemble des trajectoires (de la source à la position d’arrêt). Si ça n’est pas possible, le terrain doit être découpé pour former une tuile rectangulaire orientée selon les dimensions en X et Y. Autrement, il faut se méfier des résultats près des limites irrégulières du terrain. En effet, certaines trajectoires pourraient y avoir été omises, ayant été considérées comme étant passées au travers du terrain plutôt qu’ayant atteint les limites du terrain.
Lorsque des blocs passent au travers du terrain en tombant dans des trous qui n’auraient pas été comblés (ou en continuant au-delà de limites du terrain irrégulières), stnParabel recommence leur simulation sans enregistrer la précédente tentative. Après deux tentatives infructueuses, la position de la source est déplacée d’un quart de diamètre maximal (d1) pour introduire de la variabilité en s’éloignant légèrement de la paroi. Cela est répété à chaque deux tentatives infructueuses supplémentaires (pour une limite de ¾ du d1, ou 8 tentatives par source).
Avec ce mécanisme, il est possible de faire des simulations préliminaires sur des données brutes avec artéfacts et/ou végétation et quelques trous pour avoir un aperçu rapide de la situation pour un site. Dans ce cas, les données de terrain peuvent être rapidement préparées selon la méthode décrite à la section « Dernier prérequis », avec idéalement un sous-échantillonnage des points s’ils sont très nombreux. L’orientation des surfaces doit aussi être approximée avec les données, ce qui est généralement le cas par défaut avec des données issues de photogrammétrie. Les blocs simulés vont rebondir sur tous points rencontrés comme si ceux-ci étaient part du terrain (et donc avec un comportement d’impact contre le sol).
Aussi, encore pour un aperçu de la situation pour un site, des simulations préliminaires peuvent être générées sans avoir une densité de point du terrain suffisante par rapport à la taille des blocs (d1 plus petit que 4x l’espacement des points), tant que les points du terrain sont répartis de façon relativement homogène. Dans ce cas, le terrain est interpolé pour chaque impact en utilisant un voisinage fixé à un rayon de 2x l’espacement moyen minimum des points. La rugosité des données d’élévation relative à la taille de l’impactant n’est alors pas aussi bien prise en compte, ce qui peut engendrer de plus longs runouts et un peu moins de déviation. La rugosité artificielle peut tout de même être ajoutée correctement. Aussi, des erreurs d’interpolation peuvent parfois survenir lorsque le terrain est interpolé de cette manière au niveau des arêtes nettes, ce qui peut affecter les impacts.
Ces erreurs n’affectent pas les simulations normales, avec un espacement des points inférieur à ¼ du diamètre maximal (d1) de la plus petite particule à simuler. En effet, stnParabel bascule à des impacts directement contre les points du terrain si le RMS de l’interpolation par rapport aux points du voisinage est trop grand (mauvais fit). C’est pourquoi il est recommandé d’utiliser une densité des points du terrain appropriée pour la préparation du terrain pour les simulations, tel qu’il l’est décrit dans les sections suivantes concernant le terrain. Le logiciel CloudCompare est principalement utilisé pour les démonstrations, libre à vous d’utiliser d’autres solutions si elles vous permettent d’arriver aux mêmes résultats.
CloudCompare¶
CloudCompare est un logiciel open source très utile pour la préparation du projet et pour la visualisation des résultats. La présente section montre d'abord comment l'obtenir et accéder à sa documentation, puis comment le configurer pour le projet.
Obtenir CloudCompare et sa documentation¶
Pour le télécharger et accéder à sa documentation, on peut effectuer une simple recherche sur le web et accéder à leur page. On y trouve une description du logiciel, les liens pour télécharger les dernières versions, des tutoriels et la documentation complète de l’ensemble des outils disponibles. Les exemples dans cette version du manuel sont réalisés à partir de la version 2.11 bêta, qui est la plus récente au moment d’éditer le manuel.
CloudCompare est particulièrement adapté au traitement des nuages de points, mais est aussi compatible avec une foulée de formats, tels les shapefiles et rasters (ASCII, LAS, PLY, OBJ, DXF, GeoTIFF, etc). La description de l’ensemble des outils disponibles et plugins se trouve dans la section Tools and algorithms. De là, on retrouve la liste exhaustive des nombreux outils… Et des plugins, comme par exemple CANUPO, pour la classification automatique des nuages de points.
Si CloudCompare devient une partie intégrante de votre workflow, peut-être considérer à contribuer au projet open source!
Configurer CloudCompare¶
Il est possible de réinitialiser l’interface à partir des réglages d’affichage (display settings) avant de commencer. Les réglages à modifier par la suite sont les suivants :
S’assurer que le panneau DB Tree à gauche de l’interface soit suffisamment large pour afficher l’ensemble des propriétés de chaque couche;
Activer le filtre EDL (eye-dome lighting shader) pour avoir un aperçu de l’ombrage pour une meilleure perception 3D de la scène.
À moins de découper le nuage de point avec l’outil Interactive Segmentation Tool, ou de vouloir produire des figures à échelle constante (les objets éloignés sont de la même taille que les objets rapprochés, ce qui permet l’utilisation d’une barre d’échelle unique), la perception 3D de la scène est facilitée par un affichage naturel avec perspective. Le rendu des ombrages avec le filtre EDL est aussi plus contrasté lorsque la perspective est activée, via l’option Object-centered perspective.
Activer la prise d’un point de rotation automatique autour du point à proximité du centre de l’écran (auto-pick rotation center).
Dans les réglages d’affichage, la taille du texte peut être ajusté en fonction des figures à produire. Un à deux chiffres significatifs sont en général suffisant pour le projet, la précision des nombres affichés (displayed number precision) peut dont être ajustée en conséquence.
Toujours dans les réglages d’affichage, l’option de simplifier les nuages de points lorsque déplacés peut-être désactivée. Les déplacements peuvent être un peu plus lent selon la performance de l’ordinateur utilisé, mais l’affichage du nuage de point est instantané après le déplacement.
L’option d’afficher les points en rond au lieu des points carrés peut-être explorée. Le rendu des figures finales en est généralement amélioré, mais la navigation peut être ralentie du fait des ressources utilisées plus importantes.
Le calcul automatique des octrees peut être placé à always.
LiDAR aéroporté (ALS)¶
Préparer le terrain à partir de donnée LiDAR aéroportées ALS est probablement la chose la plus simple à faire pour le projet si de telles données sont disponibles.
Ces données peuvent être facilement importée dans CloudCompare par un simple glissé-déposé du/des fichier(s) LAS/LAZ dans la vue active du logiciel. Les informations attribuées aux points qui sont jugées inutiles au projet peuvent être décochées à cette étape pour sauver de la mémoire vive. La classification, si présente, sera cependant bien utile par la suite. S’il n’y a pas de classification, les plugins CANUPO et CSF peuvent être de bons points de départ pour nettoyer les données. Hors CloudCompare, la suite d’outil commerciaux LAStools de rapidlasso GmbH, et particulièrement l’outil lasground, peuvent être une piste à explorer (payante).
Ensuite, il faut s’assurer que les coordonnées locales soient près de zéro. Il faut autrement appliquer une transformation pour passer des coordonnées originales vers des coordonnées locales qui sont près du zéro.
Les couleurs affichées du nuage de point importé devraient correspondre à la classification, à moins d’avoir conservé d’autres informations attribuées aux points importés. Pour extraire les points correspondant au sol, il faut activer le Scalar field de classification s’il n’est pas déjà actif.
Il faut ensuite utiliser la fonction Filter by value pour extraire les points du sol, et fixer les bornes minimales et maximales à la valeur correspondant à la catégorie sol/terrain/ground (ex. 2).
Le Scalar field de classification peut ensuite être effacé pour les points du sol exportés, puisqu’ils ont tous la même valeur de classification.
Autres sources¶
Grille d'élévation (raster)¶
Il est recommandé de préparer votre terrain pour le projet à partir de donnée sous forme de nuage de point. Cependant, si seules des données au format matriciel (raster) sont disponibles, il est possible de les convertir en nuage de point pour être utilisées comme terrain.
Pour se faire, c’est important d’utiliser les données de terrain (MNT/DTM) et non pas les données de surface (MNS/DSM).
Lors de l’importation dans CloudCompare, il faut s’assurer que la transformation permet de générer des coordonnées locales près de zéro.
Les cellules avec des no_data_values, si présentes, ne sont pas éliminées par défaut. Pour extraire les valeurs d’élévation à conserver, il faut utiliser la fonction Filter by value et extraire les valeurs d’élévation à l’intérieur d’une plage qui exclue les no_data_values.
Aussi, Les points exportés s’affichent en 2D, car l’information de chaque cellule du raster n’est pas attribuée à la coordonnée Z par défaut. Il faut utiliser la fonction Set SF to coordinate(s) pour associer les valeurs d’élévation aux coordonnées en Z.
Le Scalar field contenant l’information des cellules du raster importé peut maintenant être effacé, puisque cette information a été transférée aux coordonnées en Z.
LiDAR terrestre (TLS)¶
La préparation des terrains à partir des données acquises avec un LiDAR terrestre (TLS) diffère légèrement de celle à partir de LiDAR aéroporté (ALS) ou de modèle numérique de terrain matriciel (raster). En l’absence de végétation, d’artéfact et de grandes zones d’occlusion (absence de données formant de larges trous), le traitement des données est relativement simple. Il consiste à sous-échantillonner le jeu de donnée avec l’outil Subsample à l’espacement de points souhaité (voir la section « Combler les trous »). Il peut aussi être intéressant de combiner les données TLS à celles provenant d’autres sources. Par exemple, des données ALS sont souvent complémentaires, car elles couvrent les terrains relativement peu abrupts, alors que les données TLS couvrent mieux les falaises et surplombs.
Cependant, le traitement des données TLS peut rapidement devenir complexe s’il y a des trous à combler et/ou présence d’artéfacts. En effet, les artéfacts liés à la présence d’insectes, oiseaux, poussières ou précipitations doivent alors être nettoyés, et la végétation filtrée/classifiée. Les outils Interactive Segmentation Tool, SOR filter, Noise filter, Density, Curvature et Roughness, et plugins CANUPO, CSF et Virtual broom (pour bruit sur surface plane) peuvent être de bons points de départ pour nettoyer les données.
La présence de surplombs dans les jeux de données va aussi complexifier les étapes subséquentes en nécessitant la détermination de l’orientation des surfaces pour ensuite faire un mesh 3D afin de combler les trous. Il peut être avantageux de segmenter le terrain pour isoler les zones comportant des surplombs. Les trous de la section sans surplomb peuvent alors être comblés directement avec la méthode de la section « Combler les trous / Pour l’ensemble du terrain ». Et l’autre section, avec surplombs cette fois, peut voir ses trous comblés localement selon l’autre méthode « Combler les trous / Localement », avec une estimation de l’orientation des surfaces au préalable. Dans ce cas, il faudra faire attention à ne pas introduire d’artéfacts au niveau des limites des segments.
Photogrammétrie (SfM)¶
Générer le terrain à partir de données d’élévation issue de la photogrammétrie s’apparente grandement à le faire à partir de données TLS. Les données viennent cependant généralement avec la texture provenant des photographies utilisées pour faire le modèle 3D, ainsi qu’avec une estimation de l’orientation de surface. Si elles sont exemptes de végétation, artéfact et trous, les données peuvent être presque directement utilisées comme terrain pour les simulations. Un sous-échantillonnage des points peut accélérer les simulations s’ils sont présents en trop grand nombre et la texture devra être retirée des points tel que décrit à la section « Derniers prérequis ».
Si les points comportent des artéfacts et/ou des trous à combler, le traitement peut rapidement devenir complexe, mais reste similaire à celui nécessaire pour les données TLS. Se référer donc à la description pour les données TLS pour préparer le terrain à partir de données SfM. La vidéo tutorielle suivante montre comment générer un modèle 3D SfM avec le logiciel commercial Agisoft Metashape Professional (en anglais):
Orienter les surfaces¶
Une fois le nuage de point correspondant au terrain importé, il peut être nécessaire de calculer l’orientation des surfaces si le nuage de point comporte des surplombs. Ça n’est cependant généralement pas le cas s’il provient de données LiDAR aéroporté ou de modèle numérique de terrain au format matriciel (raster). Alors, il n’est pas nécessaire d’évaluer l’orientation de surface à cette étape, puisque ça sera fait à l’étape suivante en comblant les trous pour l’ensemble du site.
Pour un jeu de donnée comportant des surplombs, il faut évaluer l’orientation des surfaces si cette information est absente du jeu de donnée, ou de mauvaise qualité (des données produites par photogrammétrie comprennent généralement déjà l’orientation de surface).
Cela peut être fait en utilisant l’outil Normals/Compute puis en s’assurant que les normales soient correctement orientées (qu’elles ne s’affichent pas en noir dans CloudCompare).
Combler les trous¶
Pour les simulations, le terrain doit être exempt de trous et les points espacées de façon relativement homogène. L’espacement des points doit correspondre à environ 20-25% du diamètre maximal (d1) des plus petits blocs à simuler (au maximum).
Comme cela peut nécessiter un nombre important de points, il peut être utile à cette étape de générer plusieurs terrains avec des espacements de points adaptés aux différents scénario (les simulations avec de gros blocs vont être beaucoup plus rapides si le terrain leur est adapté plutôt que d’utiliser le même terrain que pour les petits blocs).
Pour l'ensemble du terrain¶
Pour ajuster la densité de point et combler les trous, un mesh peut d’abord être créé, puis reconverti en point à la densité souhaitée. Si les données de terrain ne comportent pas de surplomb, l’approche par triangulation 2.5D est la plus rapide à utiliser, et ne nécessite pas d’orientation de surface au préalable, car celle-ci est déterminée lors de la création du mesh. (Le plugin Poisson Surface Reconstruction peut être utilisé au lieu de l’outil Mesh/Delaunay 2.5D si le terrain comporte des surplombs afin de générer un mesh triangulé en 3D.)
Cette étape peut grandement solliciter les ressources de l’ordinateur, particulièrement la mémoire vive, à cause du nombre potentiellement élevé de point à générer à partir du mesh, avant que ceux-ci ne soient sous-échantillonnés à l’espacement souhaité avec l’outil Edit/Subsample. Il faut compter environ 3 à 4 Go de mémoire vive occupée par tranche de 100 millions de points.
Le nombre de point à générer par l’outil Mesh/Sample points peut être estimé au préalable en fonction de la surface du terrain afin d’évaluer si la mémoire vive de l’ordinateur sera suffisante. La surface du terrain peut être évaluée avec l’outil Mesh/Measure surface. Il faudra segmenter le mesh si la mémoire n’est pas suffisante, traiter chaque segment individuellement, les sous-échantillonner avec l’outil Edit/Subsample et fusionner leurs terrains générés.
Mesh to points and subsampling settings for CloudCompare¶
Localement¶
Pour combler les trous localement, il faut découper (avec l’outil Interactive Segmentation Tool) une portion du terrain légèrement plus grande que la portion à combler. Ensuite, la portion à combler segmentée peut être traitée de la même manière que pour l’ensemble du terrain (voir la section « Pour l’ensemble du terrain »).
Pour ajouter les points ainsi générés au reste du terrain, il faut d’abord les segmenter pour retirer l’excès due à la découpe précédente de la portion du terrain légèrement plus grande et retirer les artéfacts d’interpolation près du pourtour de la zone. Mais avant de sélectionner l’option segment In (I) et d’exclure les points hors de la zone avec l’option Confirm and delete hidden point (Del), il faut enregistrer la zone sélectionnée (juste après avoir fait le clic droit permettant de se détacher de la ligne polygonale verte de segmentation).
Les points originaux du terrain segmentés doivent aussi être découpés en utilisant la même découpe préalablement enregistrée en utilisant l’option Import polyline from DB for segmentation. Cette fois, il faut conserver les points à l’extérieur du périmètre avec segment out (O) puis Confirm and delete hidden point (Del).
À cette étape, trois segments de points devraient avoir été créés depuis le début : 1) la part du terrain originale hors de la première découpe; 2) la part locale de terrain interpolée afin de combler le trou, sans l’excès de points préalablement sélectionnés en son pourtour; et 3) la part du terrain originale couvrant cette bande en excès. Ces trois parts devraient se compléter sans se superposer puisque les mêmes lignes polygonales de découpes leur ont été appliquées, soit en conservant la part intérieur ou extérieur du périmètre de découpe.
Les deux parts du terrain original peuvent être fusionnées et sous-échantillonnées à l’espacement de point souhaité pour accélérer les simulations (voir le graphique de la section « Pour l’ensemble du terrain »). Le segment interpolé peut finalement être fusionné aux deux autres segments déjà fusionnés pour reformer un terrain uniforme, dont le trou a localement été comblé par interpolation.
Derniers prérequis¶
Finalement, il faut s’assurer de n’avoir que la position des points pour le terrain et leur orientations : [ X, Y, Z, Nx, Ny, Nz ].
Les éventuelles couleurs [ R, V, B ] et scalar fields doivent être retirés avant l’export des points du terrain au format ASCII.
Le fichier ASCII doit être nommé « mnt.txt » ou « dtm.txt » afin d’être correctement pris en compte pour les simulations.