toute personne qui peut aider. je veux juste ajouter la direction (relèvement: ie N 25 35 E) et la distance (longueur: 125 mètres) comme mon nouveau champ dans les données de polyligne / ligne. existe-t-il un plug-in pour générer ces champs? J'ai essayé d'utiliser "exporter / ajouter des colonnes de géométrie" dans mes données de ligne, mais seule la valeur "Longueur" a été ajoutée.
18
Réponses:
Vous pouvez calculer le relèvement dans le calculateur de champ dans QGIS. Cela fonctionne en coordonnées UTM (métriques) sur de petites distances (centaines de km), mais quelque chose de plus sophistiqué serait nécessaire pour les grandes distances ou pour les degrés décimaux.
Ouvrez la table attributaire de votre calque de ligne, basculez l'édition et cliquez sur le bouton Calculatrice de champ pour ouvrir la boîte de dialogue:
Créez un nouveau champ décimal avec une précision de 1 ou 2.
Collez ce code dans la case "Expression" et cliquez sur "OK":
(atan((xat(-1)-xat(0))/(yat(-1)-yat(0)))) * 180/3.14159 + (180 *(((yat(-1)-yat(0)) < 0) + (((xat(-1)-xat(0)) < 0 AND (yat(-1) - yat(0)) >0)*2)))
La première partie calcule la tangente inverse des différences x et y et la convertit en degrés (180 / pi). La deuxième partie ajoute 180 ou 360 à la figure résultante pour donner un relèvement de 0 à 360 °.
la source
Vous n'avez pas besoin d'un plugin. Tout est dans la classe QgsPoint de PyQGIS
Si vous examinez le contenu d'une classe de points QGIS avec la fonction intégrée Python dir () dans la console Python.
Vous pouvez voir qu'il existe des fonctions azimut et sqrDist et après quelques essais:
Le problème
Donc, dans la console Python
maintenant xy contient tous les nœuds (points) de la ligne
En utilisant tous les points nodaux de la ligne:
1) point d'azimut i au point i + 1 (+/- 180 °) (nœuds d'une ligne)
2) Distance euclidienne entre le point i et le point i + 1
Après, il n'est pas très difficile d'ajouter ces valeurs à la table attributaire.
J'utilise cette technique pour analyser les linéaments (géologie) avec matplotlib et le plugin Script Runner
la source
La solution fournie par @Simbamangu est assez efficace mais ne couvre pas tous les cas. Par exemple, l'application de la formule avec un déplacement horizontal NULL le résultat, vous devez donc utiliser cette formule dans Field Calculator of QGIS
la source