Suite

Comment utiliser la triangulation de Delaunay dans QGIS ?


Je dois créer un polygone de Thiessen pour un site du New Jersey et tout ce que j'ai pour le moment, ce sont les concentrations des échantillons que nous avons prélevés dans la région. De quoi d'autre ai-je besoin et comment puis-je le saisir dans QGIS pour obtenir le résultat souhaité ? Qu'est-ce qui divise l'excavation totale en polygones en fonction des concentrations ? Toute information sera une aide.


Le moyen le plus simple de préparer vos données pour les importer dans QGIS est généralement de créer un fichier CSV similaire à

x,y,concentration 1,2,12,5 1,3,20,7 2,2,30.1

Une fois que vous avez chargé le fichier CSV, vous pouvez utiliser la couche résultante comme entrée pour la triangulation, l'interpolation ou toute autre analyse de votre choix.


CGAL : triangulation de Delaunay vs triangulation dans l'exemple CGAL

Dans mon travail, j'ai besoin d'obtenir une première couche de voisins de Voronoï pour une particule focale. Pour cela, j'utilise la triangulation de Delaunay qui est le graphe dual de la tessellation de Voronoi. La version de CGAL que j'utilise est la 4.7. J'ai toujours utilisé le code de base de CGAL manual_4.7 comme modèle pour créer la triangulation de Delaunay. Mon problème concerne les en-têtes et les définitions de type dans cet exemple, car j'ai récemment découvert qu'ils sont différents de CGAL 4.14 qui est la dernière version disponible. Dans CGAL 4.7 :

puis j'ai revérifié le manuel pour voir si les explications sont différentes ou non. Pour autant que je sache, Software Design 4.14 et Software Design 4.7 sont identiques et correspondent au deuxième exemple. Puisque j'ai besoin d'une triangulation avec une propriété de cercle vide et que j'ai juste besoin de récupérer les indices des sommets voisins dans la triangulation de Delaunay, la première conduit-elle également aux mêmes résultats ? Je peux les vérifier pour certains points, mais je doute juste que s'ils produisent les mêmes résultats pour chaque ensemble de points ?


Est-il possible de créer une triangulation de Delaunay uniquement en vertical (dimension Z) ?

Je travaille sur un plugin dans QGIS qui crée un modèle 3D à partir de données raster. Dans ce cas, je dois créer une triangulation uniquement dans le plan vertical (pas de connexions de faces verticales avec des points voisins).

Ceci est mon code et mon exemple avec l'effet actuel.

Après la fonction Delaunay, je crée un fichier stl à partir de points et de faces. Vous trouverez ci-dessous ce dont j'ai besoin, mais l'algorithme ne fonctionne correctement que lorsque j'ai une ligne droite. J'en ai besoin pour tous les points.

J'ai essayé ton idée mais ça n'a pas fonctionné.

C'est mon code de fonction d'itération où j'itére à travers tous les pixels et lorsque le pixel a de la valeur, mon algorithme l'ajoute à la liste. Après cela, j'utilise cette liste dans la triangulation de Delaunay.

Ceci est un exemple de raster que je voudrais convertir en MODÈLE STL 3D. 1 pixel a une valeur X, Y et une valeur d'élévation (dans le code, il s'agit de block.value)

Edit2 : J'ai besoin de faire des grimaces entre ça. Il s'agit d'une meilleure visualisation réalisée dans ArcScene.


3 réponses 3

Après quelques essais, la solution semble simple (ce post a été très utile):

La méthode clé à comprendre est la transformation, qui est brièvement documentée, mais la documentation dit tout ce qu'il faut dire. Pour chaque simplexe, transform[. n,:n] contient la matrice de transformation et transform[:,n,:] contient le vecteur r auquel la matrice est liée. Il semble que le vecteur r soit choisi comme dernier sommet du simplexe.

Un autre point délicat est de savoir comment obtenir b , car ce que je veux faire est quelque chose comme

Essentiellement, j'ai besoin d'un tableau de produits scalaires, tandis que dot donne un produit de deux tableaux. La boucle sur les simplex individuels comme ci-dessus fonctionnerait, mais cela peut être fait plus rapidement en une seule étape, pour laquelle il existe numpy.einsum :

Maintenant, v contient des indices de points de sommet pour chaque simplexe et w contient les poids correspondants. Pour obtenir les valeurs interpolées p_values ​​à l'ensemble des points p , nous le faisons (remarque : les valeurs doivent être un tableau NumPy pour cela) :

Ou nous pouvons le faire en une seule étape en utilisant à nouveau `np.einsum' :

Certaines précautions doivent être prises dans les situations où certains des points interpolés se trouvent en dehors de la grille. Dans ce cas, find_simplex(p) renvoie -1 pour ces points et vous devrez ensuite les masquer (en utilisant peut-être des tableaux masqués).


Réclamer. Ce n'est pas possible en général.

Preuve. Si quatre points de votre ensemble de points ne sont pas cocirculaires, alors la triangulation de Delaunay est unique. Donc tant que le polygone d'obstacle contient au moins une arête non-Delaunay, vous ne pourrez pas arriver à l'unique triangulation de Delaunay de l'ensemble de points. C'est assez facile à voir : Considérons, comme dans l'algorithme de retournement, un quadrilatère en position générale dont la diagonale doit être retournée pour être Delaunay. Soit maintenant l'un des mauvais triangles l'obstacle et l'ensemble des quatre sommets du quadrilatère l'ensemble des points. Alors clairement, on ne peut jamais arriver à une triangulation de Delaunay.

Mettre à jour: Le problème que vous avez décrit est un cas particulier du problème de triangulation de Delaunay contrainte. Dans votre cas, les bords contraints ne sont que les bords des limites de vos obstacles. Il existe un certain nombre de bibliothèques python qui peuvent le faire. Par example


1 réponse 1

Votre exemple est un modèle 3D. Vous voyez qu'il n'y a pas de nœud de connexion à chaque croisement. Les surfaces qui ne sont pas droites devant votre visage ont un réseau triangulaire apparemment plus dense.

Il existe de nombreux logiciels 3D qui présentent les surfaces sous forme de triangles. Certains d'entre eux permettent des exportations filaires 2D qui ont les projections des triangles comme vecteurs. Malheureusement, je n'ai pas ce logiciel. Dans chaque pièce que j'ai, l'exportation d'un maillage triangulaire en tant qu'image vectorielle 2D est désactivée.

Sans passer en 3D, vous pouvez trianguler une forme. Cela peut être fait manuellement ou en utilisant un logiciel de triangulation. La triangulation de Delaunay est une méthode connue pour le faire de manière optimale. Cette méthode est une règle mathématique vieille d'environ 90 ans et elle est programmée dans de nombreux logiciels graphiques.

Si vous avez une image raster qui utilise un ombrage pour présenter des formes 3D, vous pouvez la vectoriser (= tracer le bitmap) en un nombre limité de nuances de gris ou de couleurs. Ensuite, trianguler différentes zones à différentes densités de triangles. De cette façon, vous pouvez simuler l'ombrage avec densité comme dans votre exemple.

Supposons que vous ayez enfin des triangles. Voici comment ajouter les nœuds et l'effet de lueur dans Inkscape :

Les triangulaires. S'il s'avère que ce sont des segments de ligne distincts, il n'est pas nécessaire de les casser. Ces triangles sont des formes fermées (en fait les polygones à 3 côtés d'Inkscape qui doivent d'abord être convertis en chemins)

Casser les triangles pour séparer les segments de ligne

  • tout sélectionner
  • si besoin, dissocier
  • si nécessaire, allez dans Chemin > Objet vers chemin
  • avec l'outil de nœud, sélectionnez tous les nœuds en faisant glisser sur les triangles et en maintenant la touche Maj enfoncée en même temps
  • dans la barre d'options de l'outil, cliquez sur "Briser le chemin aux nœuds sélectionnés". goto Path> Break apart Qui brise tous les triangles pour séparer les segments de ligne

Tout sélectionner, dans le panneau de style de trait, donnez des marqueurs de début de point à chaque ligne

Tout sélectionner, tout dupliquer, régler sur les doublons 3. 5% de flou

AJOUTER: Dans Illustrator, vous pouvez également diviser les triangles en lignes avec la fonction "Contour" dans le panneau Pathfinder. Le résultat est différent, vous aurez besoin de plus de travail manuel. Des chemins sont coupés à chaque point de passage. Les coins simples ont besoin de l'outil ciseaux. Le côté positif est que la duplication et le flou ne sont pas nécessaires. Vous pouvez insérer l'effet Styliser > Outer Glow. L'alignement des pointes de flèche nécessite un paramètre dans le panneau Traits pour éviter les groupes de points où plusieurs lignes se rencontrent au même point.

AJOUTER2 Un exemple simple qui démarre en 3D est lisible ici Quel programme est utilisé pour faire une illustration de maillage triangulaire ?. La recette donnée peut produire ceci en quelques minutes :


Étape 2 : Affichage des tables et des couches de données¶

Utiliser WPSBuilder¶

  • Le contenu de la base de données peut être consulté en utilisant Afficher_Base de données.
  • Une couche spatiale peut être visualisée en utilisant Table_Visualisation_Carte.
  • Un tableau de données peut être visualisé en utilisant Table_Visualisation_Données.

Consulter la base de données¶

Il est également possible d'exporter les tableaux via Exporter_Table au format Shapefile, CSV ou GeoJSON.

Importez ensuite ces tableaux dans votre système d'information géographique préféré (par exemple. OrbisGIS, QGIS). Vous pouvez alors visualiser graphiquement votre couche de données, mais aussi les données qu'elle contient. Prenez le temps de vous familiariser avec le SIG que vous avez choisi.

OrbisGIS/QGIS vous permet d'ajouter un fond de carte OSM : https://wiki.openstreetmap.org/wiki/QGIS

OrbisGIS/QGIS vous permet de changer les couleurs des calques (par exemple Surface_osm en vert, Buildings_OSM en gris, ROADS en rouge).


Réseau irrégulier triangulé

UNE Réseau irrégulier triangulé (ÉTAIN) (trianguler ['traɪæ ɳgjʊleɪt] verbo transitivo triangulaire) est une structure de données numériques utilisée dans un système d'information géographique (SIG) pour la représentation d'une surface. Un TIN est une représentation vectorielle de la surface terrestre physique ou du fond marin, composée de nœuds et de lignes irrégulièrement répartis avec des coordonnées tridimensionnelles (x, y et z) qui sont disposés dans un réseau de triangles non superposés. Les TIN sont souvent dérivés des données d'altitude d'un modèle numérique d'altitude (MNE) rastérisé. Un avantage de l'utilisation d'un TIN par rapport à un DEM dans la cartographie et l'analyse est que les points d'un TIN sont distribués de manière variable en fonction d'un algorithme qui détermine quels points sont les plus nécessaires pour une représentation précise du terrain. La saisie des données est donc flexible et moins de points doivent être stockés que dans un MNT avec des points régulièrement répartis. Alors qu'un TIN peut être moins adapté qu'un raster DEM pour certains types d'applications SIG, telles que l'analyse de la pente et de l'aspect d'une surface, les TIN ont l'avantage de pouvoir représenter le terrain en trois dimensions. Cependant, les NIF présentent des inconvénients et ne conviennent pas à tous les projets. Lors de l'utilisation de TIN, les détails sur les triangles réels peuvent être perdus. De plus, comme les TIN sont linéaires, de nombreux bords apparaîtront irréguliers, déformant l'image. [1]

Le réseau irrégulier triangulé représente une surface d'élévation topographique par un pavage de triangles ne se chevauchant pas, avec des élévations à leurs coins. Des visualisations tridimensionnelles sont facilement créées par le rendu des facettes triangulaires. Dans les régions où il y a peu de variation de hauteur de surface, les points peuvent être largement espacés alors que dans les zones de variation de hauteur plus intense, la densité de points est augmentée.

Un TIN est typiquement basé sur une triangulation de Delaunay mais son utilité sera limitée par la sélection de points de données d'entrée : des points bien choisis seront localisés de manière à capturer des changements significatifs de forme de surface, tels que des sommets topographiques, des ruptures de pente, des crêtes , fonds de vallée, fosses et cols.

Il est techniquement possible de générer un TIN avec des facettes qui se chevauchent. [2] De tels TIN peuvent être utiles pour modéliser certaines caractéristiques géographiques, y compris les surplombs et les grottes. Cependant, tous les packages SIG ne sont pas conçus pour gérer de tels TIN. La partie d'un TIN qui ne se chevauche pas est parfois appelée terrain fonctionnel.

Bien qu'ils soient généralement associés à des données tridimensionnelles (x, y et z) et à une topographie, les TIN sont également utiles pour la description et l'analyse des distributions et des relations horizontales (x et y).

Le premier programme de réseau irrégulier triangulé pour SIG a été écrit par Randolph Franklin à l'Université Simon Fraser en 1973. [3]


Syntaxe

Le jeu de données TIN qui sera généré.

La référence spatiale du TIN en sortie doit être définie sur un système de coordonnées projetées. Les systèmes de coordonnées géographiques ne sont pas recommandés car la triangulation de Delaunay ne peut pas être garantie lorsque les coordonnées XY sont exprimées en unités angulaires, ce qui pourrait avoir un impact négatif sur la précision des calculs basés sur la distance, tels que la pente, le volume et la ligne de visée.

Les entités en entrée et leurs propriétés associées qui contribueront à la définition du TIN.

  • in_features —L'entité dont la géométrie sera importée dans le TIN.
  • height_field : la source d'altitude pour les entités en entrée. Tout champ numérique de la table attributaire de l'entité en entrée peut être spécifié, ainsi que Shape.Z pour les valeurs Z des entités 3D et Shape.M pour les valeurs M stockées avec la géométrie. Le choix du mot-clé <None> entraînera l'interpolation de l'altitude de l'entité à partir de la surface environnante.
  • sf_type —Rôle de l'entité en entrée dans la définition de la surface TIN. Les options valides dépendent de la géométrie des entités en entrée. Les entités ponctuelles et multipoints peuvent être définies en tant que Mass_Points , qui contribuent aux valeurs d'altitude qui sont stockées en tant que nœuds de données TIN. Les entités linéaires peuvent être désignées comme Mass_Points ou lignes de rupture en spécifiant Hard_Line ou Soft_Line . Les entités polygonales peuvent représenter la limite d'interpolation en spécifiant Hard_Clip ou Soft_Clip , des portions intérieures sans données en choisissant Hard_Erase ou Soft_Erase , ou des zones de hauteur constante en spécifiant Hard_Replace ou Soft_Replace . De plus, les polygones peuvent également être utilisés pour attribuer des valeurs d'attributs entiers en spécifiant Hardvalue_Fill ou Softvalue_Fill .
  • tag_field : un attribut numérique dérivé d'un champ entier dans la table attributaire de l'entité en entrée dont les valeurs peuvent être utilisées pour attribuer une forme de base d'attribution aux éléments de données du TIN. Si vous spécifiez <None>, aucune valeur de balise n'est attribuée.

Spécifie la technique de triangulation utilisée le long des lignes de rupture du TIN.

  • DELAUNAY —Le TIN utilisera une triangulation conforme à Delaunay, qui peut densifier chaque segment des lignes de rupture pour produire plusieurs arêtes de triangle. C'est la valeur par défaut.
  • CONSTRAINED_DELAUNAY —Le TIN utilisera une triangulation de Delaunay contrainte, qui ajoutera chaque segment en tant qu'arête unique. Les règles de triangulation de Delaunay sont respectées partout sauf le long des lignes de rupture, qui ne seront pas densifiées.


Voir la vidéo: QGIS Basic 71: Delaunay Triangulation (Octobre 2021).