Suite

Géoréférencer des cartes de coupes géologiques inclinées dans QGIS ?


Est-il possible de géoréférencer ce type de coupe en angle, de préférence dans QGIS (Section-II sur l'image) ?

Je suis très novice dans ce type de géoréférencement.

Googlé et n'a pas pu trouver de piste appropriée


Je propose de décomposer le problème en plusieurs aspects.

D'abord: Images de géoréférencement de coupes transversales

L'image d'une coupe n'est qu'une image, comme les autres aussi. Vous pouvez le géoréférencer par rapport à des paires de coordonnées avec des composants de profondeur et de longueur. Par exemple 0,0 dans le coin supérieur gauche, ou quelle que soit la profondeur et la position le long de la ligne de coupe de ce point. Cela conduit à un plan déplié et exagéré avec Y correspondant au vrai z (profondeur) et X correspondant à une certaine position dans le vrai x, y plan (sol).

Cela conduit à la question : comment convertir les coordonnées de l'image X,Y en x, y z. Comme dit plus haut, Y correspond à z divisé par l'exagération du croquis dans l'image.

Deuxième: Transformez les polylignes numérisées en espace 3D avec les coordonnées x,y,z

Pour convertir X en x, y vous avez besoin des coordonnées x, y du point de départ et du point d'arrivée de la ligne de coupe, et de chaque sommet, où la direction de la ligne de coupe change. Vous disposez déjà de cette information, si vous avez numérisé la ligne de coupe. Pour rassembler tout ce dont vous avez besoin quelque chose pour lier la ligne de coupe à la coupe numérisée. Cela pourrait être modélisé en ajoutant simplement un attribut à la classe d'entités, contenant la coupe transversale, qui contient l'ID de la ligne de coupe.

Ce qui reste à faire est très similaire au référencement linéaire : choisissez une position le long d'une polyligne (la position correspond à X de la section transversale), et retournez sa coordonnée x,y. Pour faire ça:

  1. obtenir la ligne de coupe

  2. pour chaque sommet, déterminer sa distance par rapport au sommet précédent

    sqrt((x2-x1)**2 + (y2-y1)**2)

  3. enregistrer cette distance avec ses coordonnées et le sommet précédent dans un dictionnaire avec un tuple des distances comme clé et une liste de 2 tuples de coordonnées comme valeur

Maintenant, faites la transformation :

  1. obtenir le dictionnaire approprié (celui correspondant à l'attribut des entités de section transversale)

  2. pour chaque polyligne de la coupe numérisée, pour chaque sommet de la polyligne

  3. obtenir cette entrée de dictionnaire ayant une clé dont le premier composant est égal ou supérieur à X, et dont le deuxième composant est égal ou inférieur à X commeposition

  4. appliquer la règle de proportion : obtenir la relation deX-pos[0]àpos[1]-pos[0]

  5. obtenir la valeur du dictionnaire (rappel : coordonnées des extrémités d'un segment de ligne de section droite), multiplier les différences en x et y des deux tuples avec la relation de 4., et ajouter le résultat au premier tuple (coordonnée du point de départ du segment )

La troisième: Générer des classes d'entités 3D

Cet algorithme peut être implémenté en tant que script Python qui crée une classe d'entités 3D, transforme chaque polyligne et l'ajoute avec des attributs utiles.

Ces 3 étapes sont faciles à réaliser avec QGIS et certains scripts.

Quatrième: Visualisation

Pour simplement visualiser et explorer des formes 3D (vecteurs et images uniquement), je préfère un environnement CAO (SketchUp ou Rhinoceros3d) qui permet beaucoup plus d'interactivité et de capacités de rendu que les SIG. Il y a quelques fils de discussion sur les techniques de visualisation dans QGIS/GRASS (ici ou ici).


Voir la vidéo: Vehklemine (Octobre 2021).