#1 Wed 29 July 2020 10:04
- Lemat
- Juste Inscrit !
- Date d'inscription: 21 Dec 2017
- Messages: 3
QGIS: Angles aux intersections
Bonjour à tous,
Je travaille actuellement sur une problématique de sécurité routière. Je fabrique des indicateurs composites qui tendent à mettre en lumière les routes accidentogènes, ça fonctionne plutôt bien pour le moment, j'en suis content.
Cependant, dans un soucis d'optimiser mon SIG, j'aimerai faire ressortir les intersections selon leur angle.
Mais je sèche de plus en plus...
Pour faciliter les calculs, je me suis créé un fichier de formes qui ne prend en compte que les intersections (j'ai découpé le fichier route d'OSM dans des buffers de 3m) et chacune d'entre elles a un ID qui lui est propre (ce qui permet de fusionner les routes par ID au besoin).
Ma question est la suivante : comment créer une entité qui mette en lumière ces angles ?
J'ai eu plusieurs approches pour l'instant, la première était de découper mes buffers en fonction des routes, cependant cela ne fonctionne que pour les carrefours en X (cela me donne un camembert en 4 parts).
Pour les carrefours en T rien ne se passe. Mon intuition est que le segment de route qui ne représente qu'un rayon du buffer ne le coupe pas car Qgis ne prend en compte que les polylignes traversant le polygone en totalité.
Dans l'idéal j'aimerai que les angles aux intersections apparaissent dans ma table attributaire mais n'importe quelle solution ferait l'affaire.
Des idées ?
Hors ligne
#2 Wed 12 August 2020 15:42
Re: QGIS: Angles aux intersections
Bonjour,
Pour le calcul des angles, il est important que la couche de lignes soit de type ligne et non polyligne, selon moi, sinon, le calcul des angles sera compliqué
Soit :
- une couche de tronçons
- une couche de noeuds d'intersections
Cette expression peut faire l'affaire :
Code:
array_to_string( array_foreach( generate_series(1,aggregate('lignes', 'count', fid)), with_variable( 'feat', get_feature_by_id('lignes', @element) , case when intersects($geometry, geometry(@feat)) = 1 then atan2( (y_max(geometry(@feat)) - y_min(geometry(@feat))), (x_max(geometry(@feat)) - x_min(geometry(@feat))) ) end ) ) )
Elle permet en un point donné de récupérer la liste des angles
L'expression sera sans doute à affiner et personnaliser !
En PJ, un projet test
geodata au cerema et petits billets en géomatique
Hors ligne
#3 Mon 24 August 2020 10:11
- Lemat
- Juste Inscrit !
- Date d'inscription: 21 Dec 2017
- Messages: 3
Re: QGIS: Angles aux intersections
Merci d'avoir pris le temps de me répondre, je vais essayer ça au plus vite !
PS : je suis aussi au Cerema, le monde de la géomatique est décidément très petit
Hors ligne