#1 Tue 26 July 2022 16:12
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1670
QGIS: orientation ligne electrique dans un atlas
Bonjour,
Je suis en train de faire un atlas par pylône sur lequel passe une ligne électrique. Cette ligne est orientée grosso modo nord-ouest - sud-est. Est-il possible de visualiser cette ligne de manière horizontale dans l'atlas, c'est orientée ouest-est (ou est-ouest)?
Merci.
Hors ligne
#2 Tue 26 July 2022 18:29
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 427
Re: QGIS: orientation ligne electrique dans un atlas
Bonjour,
Si l'orientation est fixe, il est possible d'utiliser l'option Rotation de la carte dans les propriétés de l'objet carte.
Sinon, il faut calculer la rotation à appliquer à chaque pylône selon la ligne.
Voir ces ressources que j'ai trouvé en faisant une recherche rapide :
https://gis.stackexchange.com/questions … line-layer
https://gis.stackexchange.com/questions … on-in-qgis
Il existe aussi une fonction azimuth dans QGIS, à voir si utilisable facilement.
Hors ligne
#3 Tue 26 July 2022 19:27
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1670
Re: QGIS: orientation ligne electrique dans un atlas
Il faudrait découper la ligne électrique par l'emprise de l'atlas, et calculer son orientation et sa ré-orientation à l'horizontale comme expliqué ici : https://georezo.net/forum/viewtopic.php … tion+atlas
Ensuite par une jointure spatiale rapatrier cette ré-orientation sur les pylones.
Mais comment découper la ligne électrique par l'emprise de l'atlas?
En pj un exemple d'atlas
Hors ligne
#4 Tue 26 July 2022 21:04
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 427
Re: QGIS: orientation ligne electrique dans un atlas
Hum... je ne comprends pas pourquoi vous avez fait un nouveau sujet sur le forum, votre besoin est toujours le même que dans l'autre sujet ?
Dans le premier sujet, il y avait un doute : orienter l'atlas selon la parcelle ou selon la ligne électrique ?
Ici vous parlez d'un atlas des pylônes et d'orienter selon la ligne électrique. Je suppose que votre couche de couverture pour l'atlas est la couche des pylônes ?
Si c'est bien le cas, je propose de calculer pour chaque pylône son orientation selon la ligne électrique la plus proche.
Pour ça on peut utiliser un champ virtuel dans lequel on calcule l'orientation avec l'expression suivante :
Code:
-- création de la variable geom qui sera utilisée juste après with_variable('geom', -- intersection entre le perimetre du buffer de 50m autour du pylône et la ligne électrique la plus proche intersection( --exterior ring permet de récupérer le périmètre du buffer exterior_ring(buffer($geometry,50)), -- overlay_nearest() récupère la valeur du champ id de la ligne la plus proche, ligne étant le nom de la couche -- get_feature() récupère l'entité ayant cette valeur de champ id -- geometry() récupère la géométrie de cette entité -- si vous avez déjà dans un champ des pylônes l'identifiant de la ligne électrique correspondante il est possible de se passer du overlay_nearest() geometry(get_feature('ligne','id',array_to_string(overlay_nearest('ligne',"id")))) ), -- calcul de l'orientation en degrés selon les deux points sur la ligne électrique à 50m autour du pylône round(degrees(azimuth( -- point_n() permet de récupérer le premier ou le deuxième point de la géométrie résultante de l'intersection (un multipoint) -- try() pour gérer le cas ou le pylône est en début ou fin de ligne électrique et donc l'intersection a donné seulement un unique point après le début/avant la fin, dans ce cas on prend le point lui-même pour premier point ou deuxième point try(point_n(@geom,1),$geometry), try(point_n(@geom,2),$geometry) ))) )
Ensuite dans le composeur d'impression (mise en page) il suffit d'utiliser 90 - la valeur de l'attribut orientation calculé :
Code:
90-orientation
Dernière modification par p.jeremie (Tue 26 July 2022 21:37)
Hors ligne
#5 Tue 26 July 2022 21:36
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 427
Re: QGIS: orientation ligne electrique dans un atlas
Il faudrait découper la ligne électrique par l'emprise de l'atlas, et calculer son orientation et sa ré-orientation à l'horizontale comme expliqué ici : https://georezo.net/forum/viewtopic.php … tion+atlas
Ensuite par une jointure spatiale rapatrier cette ré-orientation sur les pylones.
Mais comment découper la ligne électrique par l'emprise de l'atlas?
En pj un exemple d'atlas
Si votre couche de couverture est la parcelle et que vous voulez orienter l'atlas selon le morceau de ligne qui traverse la parcelle, alors il faut calculer l'orientation en fonction du point d'entrée et de sortie de la ligne dans la parcelle.
Je propose cette expression :
Code:
-- création de la variable geom qui sera utilisée juste après with_variable('geom', -- intersection entre la géométrie de la parcelle et la ligne électrique la plus proche intersection( $geometry, -- overlay_nearest() récupère la valeur du champ id de la ligne la plus proche, ligne étant le nom de la couche -- get_feature() récupère l'entité ayant cette valeur de champ id -- geometry() récupère la géométrie de cette entité -- si vous avez déjà dans un champ des pylônes l'identifiant de la ligne électrique correspondante il est possible de se passer du overlay_nearest() geometry(get_feature('ligne','id',array_to_string(overlay_nearest('ligne',"id")))) ), -- calcul de l'orientation en degrés selon le premier et le dernier point de la ligne intersectant la parcelle (donc le point d'entrée et de sortie de la ligne dans la parcelle) round(degrees(azimuth( -- utilisation des fonction start_point et end_point start_point(@geom), end_point(@geom) ))) )
Puis même chose dans le composeur d'impression (mise en page) il suffit d'utiliser 90 - la valeur de l'attribut orientation calculé.
Hors ligne
#6 Wed 27 July 2022 10:38
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1670
Re: QGIS: orientation ligne electrique dans un atlas
Je suppose que votre couche de couverture pour l'atlas est la couche des pylônes ?
Oui, par contre j'ai vraiment du mal à saisir l'expression dans Qgis. J'ai tenté ceci sans résultat.
with_variable('geom', exterior_ring(buffer($geometry,50)),geometry(get_feature('Ligne','id',array_to_string(overlay_nearest('Ligne',"id")))))
Désolé mais je n'arrive pas malgré vos explications
Hors ligne
#7 Wed 27 July 2022 12:05
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 427
Re: QGIS: orientation ligne electrique dans un atlas
Avez-vous pris le temps de lire mes commentaires dans l'expression proposée ?
Ce sont les lignes qui commencent par --
Et avez-vous essayé de reprendre telle quelle l'expression dans la calculatrice de champ en remplaçant id et ligne par vos valeurs dans cette partie de l'expression :
Code:
geometry(get_feature('ligne','id',array_to_string(overlay_nearest('ligne',"id"))))
Hors ligne
#8 Wed 27 July 2022 13:52
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1670
Re: QGIS: orientation ligne electrique dans un atlas
J'ai remplacé ligne par Ligne (nom de ma ligne) et id par Parcelle
geometry(get_feature('Ligne','Parcelle',array_to_string(overlay_nearest('Ligne',"Parcelle"))))
sans résultat
Hors ligne