QGIS calcule le rayon d'un arc aux attributs

9

J'ai QGIS 2.18.16 installé. Mon problème est de savoir comment calculer le rayon d'une entité arc / courbe (ligne)? Les lignes proviennent du fichier .dgn, que j'ai lu avec FME et écrit dans PostGis DB. J'ai créé des clés primaires, etc., et la table est entièrement modifiable. J'ai calculé les longueurs des arcs avec succès, mais je n'arrive pas à comprendre comment calculer le rayon de ces courbes. Cela ( https://www.mathopenref.com/arcradius.html ) pourrait donner une idée du côté mathématique, bien que je ne sache pas comment l'utiliser dans la calculatrice QGIS. J'ai donc besoin de calculer le "R" pour toutes les lignes que j'ai dans la base de données.

Ci-dessous est un exemple. Mes données ont des arcs / courbes sur une table différente de celles des polylignes "normales".

entrez la description de l'image ici

Sisuaski
la source
Lorsque je clique sur un arc avec l'outil Identifier, l'un des attributs dérivés répertoriés est le "rayon de sommet le plus proche". Il n'est donc pas nécessaire de calculer le rayon, il vous suffit de comprendre comment accéder à cette propriété dans la calculatrice de champ. Ou copiez-le simplement à partir de l'outil d'identification.
csk
Vous pouvez également afficher les propriétés d'un sommet lorsqu'un calque est en mode édition en sélectionnant des sommets avec l'outil Nœud. Les coordonnées des sommets (x, y, r) s'affichent ensuite dans le panneau Editeur de sommets.
csk
C'est bien de savoir qu'il est au moins possible de voir le rayon via l'outil d'identification. Avec seulement quelques arcs, le copier-coller serait une option, mais je prévois de l'utiliser pour l'ensemble des données que j'ai, qui a trop de fonctionnalités d'arc pour être effectuées manuellement. : /
Sisuaski
J'ai fait une petite recherche sur Google, et il semble que peu de gens utilisent les fonctionnalités de chaîne circulaire dans QGIS, il n'y a donc pas d'outil ni de fonction prête à l'emploi dans la calculatrice de terrain. Vous devrez peut-être définir une fonction Python personnalisée. Si vous souhaitez suivre cette voie, ajoutez la balise pygis à votre question.
csk
Combien de sommets avez-vous pour la fonction? Que voyez-vous dans le Vertex Editorlorsque vous cliquez sur le Node Tool?
Marco

Réponses:

6

Des formules légèrement testées suivent, alors soyez prudent. Mais en suivant un exemple ici: https://www.mathopenref.com/arcradius.html entrez la description de l'image ici

Si vos arcs circulaires ont un sommet au point médian le long de l'arc (ce que je dis est x1, y1 sur la figure), vous pouvez l'utiliser avec les points de début et de fin pour calculer la longueur de l'accord " W " et la hauteur " h " pour obtenir le rayon "R" en utilisant la formule suivante:

entrez la description de l'image ici

et dire

entrez la description de l'image ici

W =

sqrt(
     ( $x_at(-1) - $x_at(0) )^2 +
     ( $y_at(-1) - $y_at(0) )^2
    )

et

entrez la description de l'image ici

H =

sqrt(
    ( $x_at(1) - ( $x_at(-1) + $x_at(0) )/2 )^2
    + ( $y_at(1) - ( $y_at(-1) + $y_at(0) )/2 )^2
)

dans votre boîte de dialogue Expression de la calculatrice de champ, vous auriez cette longue équation pour le calcul du rayon:

entrez la description de l'image ici

R =

sqrt( 
    ( $x_at(1) - ($x_at(-1) + $x_at(0) )/2 )^2 
    + ( $y_at(1) - ($y_at(-1) + $y_at(0))/2 )^2
     ) /2
+
(   ( $x_at(-1) - $x_at(0) )^2 )  + 
    ( $y_at(-1) - $y_at(0) )^2 )  )
/ ( 8 * sqrt(
            ( ($x_at(1) - ($x_at(-1) + $x_at(0) )/2 )^2
            + ( $y_at(1) - ($y_at(-1) + $y_at(0) )/2 )^2
             )
   )
cm1
la source
1
Dans LaTe X $$W= \sqrt {(x_{-1} - x_0)^2 +(y_{-1}-y_0)^2}$$ $$H = \sqrt { (x_1- \frac {(x_{-1}+x_0)} 2 )^2 + (y_1- \frac {(y_{-1}+y_0)} 2 )^2}$$ et $$R = \frac {\sqrt { (x_1- \frac {(x_{-1}+x_0)} 2 )^2 + (y_1- \frac {(y_{-1}+y_0)} 2 )^2}} {2} + \frac {(x_{-1} - x_0)^2 +(y_{-1}-y_0)^2} {8 \sqrt { (x_1- \frac {(x_{-1}+x_0)} 2 )^2 + (y_1- \frac {(y_{-1}+y_0)} 2 )^2}}$$
Marco
Très bien! Je n'imaginais pas comment accéder aux sommets. Est-ce possible dans PostGIS?
Marco
1
Marco, je pense qu'il est possible d'extraire le sommet que vous recherchez. Voir le lien ici: postgis.net/docs/ST_PointN.html . Merci pour les ajouts et les modifications de formule les plus excellents.
cm1
En attendant que les développeurs ajoutent un bouton pour "calculer facilement le rayon", c'est la réponse la plus utile que je puisse espérer. Maintenant, j'ai (et peut-être d'autres aussi) au moins un moyen d'extraire le rayon. :) Je n'ai pas encore testé ça, mais je le ferai dans quelques jours quand j'aurai assez de temps. Merci beaucoup pour votre aide!
Sisuaski
1

Qu'en est-il de l'extraction du rayon lors de l'extraction des données avec FME? Vous avez là le transformateur ArcPropertyExtractor, qui devrait vous donner les valeurs de rayon dans les attributs prêts à définir dans votre PostGIS DB

fgiron
la source
Ce serait une façon possible de procéder, une bonne façon de gérer l'ensemble des données. Mon problème est qu'il n'y a pas suffisamment d'utilisateurs FME dans mon organisation et je dois rendre le processus aussi simple que possible. Cela signifie que l'ensemble du processus, y compris les arcs, les zones, les lignes, etc., devrait pouvoir être effectué avec Qgis. La capacité de mettre à jour le rayon de l'entité Arc vers de nouveaux objets est ce que je dois faire avec Qgis. Merci pour votre réponse, je mettrai à jour les attributs de rayon avec FME pour l'instant, mais j'espère qu'il y aura un moyen de le faire avec QGIS.
Sisuaski