Suite

Comment calculer l'azimut dans le calculateur de champ QGIS?


Existe-t-il un moyen de calculer l'azimut de deux points dans le calculateur de champ QGIS ? Les coordonnées sont stockées dans une table attributaire.

x1 | y1 | x2 | y2

Vous pouvez utiliser l'onglet de l'éditeur de fonction dans la calculatrice de champ et faire fonctionner votre azimut comme ceci :

de qgis.core import * de qgis.gui import * @qgsfunction(args="auto", group="Custom") def azimut(x1,y1,x2,y2,feature,parent): p1 = QgsPoint(x1,y1 ) p2 = QgsPoint(x2,y2) a = p1.azimut(p2) si a < 0 : a += 360 renvoie a

Une fois que vous l'avez exécuté/enregistré (et juste pour vous assurer de redémarrer la calculatrice), vous devriez pouvoir utiliser cette fonction dans l'onglet d'expression en la tapant ou en la sélectionnant dans la liste des fonctions sous personnalisé comme :

azimut(x1,y1,x2,y2) #ou variation azimut("x1","y1","x2","y2")

Tout le mérite en revient à Anita Graser et son Comment créer des contours illuminés, à la Tanaka.


Les nouvelles versions de QGIS sont livrées avec une fonction d'azimut prête à l'emploi :


Dans votre question d'origine, vous avez des points stockés sous X1, Y1 et X2, Y2. Cependant, vous pouvez également calculer automatiquement l'azimut sans nécessiter de points d'extrémité pour les lignes à l'aide de cette fonction :

azimut(start_point($geometry), end_point($geometry))

et si vous souhaitez l'arrondir, utilisez:

format_number(azimut(start_point($geometry), end_point($geometry)),3)

Ceci est très utile pour les fichiers polylignes en plusieurs parties, sans aucune obligation de calculer les extrémités des lignes (comme cela était requis dans les versions précédentes de QGIS et dans d'autres logiciels de CAO 3D).


Voir la vidéo: ArcGis calculate the distance between a starting point and a set of target points (Octobre 2021).