QGIS计算圆弧半径到属性


9

我已经安装了QGIS 2.18.16。我的问题是,如何计算圆弧/曲线特征(线)的半径?这些行源自.dgn文件,我使用FME读取该文件并将其写入PostGis DB。我已经创建了主键等,并且该表是完全可编辑的。我成功计算了圆弧的长度,但无法弄清楚如何计算这些曲线的半径。这个(https://www.mathopenref.com/arcradius.html)可能在数学方面给出了一些想法,尽管我不知道如何在QGIS计算器中使用它。因此,我需要为数据库中的所有行计算“ R”。

贝娄就是一个例子。我的数据在与“正常”折线不同的表上具有“弧线/曲线”。

在此处输入图片说明


当我使用“识别”工具单击圆弧时,列出的派生属性之一是“最近的顶点半径”。因此,无需计算半径,您只需要弄清楚如何在字段计算器中访问此属性。或者直接从识别工具复制它。
csk

当图层处于编辑模式时,还可以通过使用“节点工具”选择顶点来查看顶点的属性。然后,顶点坐标(x,y,r)显示在“顶点编辑器”面板中。
csk

很高兴知道至少可以通过识别工具查看半径。如果只有很少的弧,则可以选择复制粘贴,但是我计划将其用于我拥有的所有数据,因为它具有太多的弧功能,无法手动完成。:/
Sisuaski

我在Google上搜索了一下,似乎没有多少人在QGIS中使用圆形字符串功能,因此字段计算器中没有现成的工具或函数。您可能需要定义一个自定义Python函数。如果您想走那条路,请将pygis标记添加到您的问题中。
csk

您有多少个特征顶点?Vertex Editor当您单击时,您会看到什么Node Tool
马可(Marco)

Answers:


6

遵循经过严格测试的公式,因此请谨慎操作。但是,这里有一个例子:https : //www.mathopenref.com/arcradius.html 在此处输入图片说明

如果圆弧在圆弧的中间点有一个顶点(我说的是图中的x1,y1),则可以将其与起点和终点一起使用,以计算和弦长度“ W ”和高度“ h ”使用以下公式获得半径“ R”:

在此处输入图片说明

在此处输入图片说明

W =

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

在此处输入图片说明

=

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

在字段计算器的“表达式”对话框中,您将具有以下用于计算半径的长方程:

在此处输入图片说明

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
             )
   )

1
在乳胶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}$$$$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 Marco

很好!我没有想到如何访问顶点。在PostGIS中可以吗?
马可(Marco)

1
Marco,我相信可以提取您要查找的任何顶点。请参阅此处的链接:postgis.net/docs/ST_PointN.html。感谢您最出色的公式添加和编辑。
cm1

在等待开发人员向“轻松计算半径”添加按钮时,这是我希望得到的最有用的答案。现在,我(可能还有其他人)至少有某种方法可以提取半径。:)我还没有测试过,但是几天后我会测试的。非常感谢您的帮助!
西苏阿斯基

1

用FME提取数据时提取半径又如何呢?那里有ArcPropertyExtractor转换器,它可以为您提供准备在PostGIS DB中设置的属性中的半径值


那将是一种可能的处理方式,一种处理整个数据的好方法。我的问题是,我的组织中没有足够的FME用户,我需要使过程尽可能地容易。这意味着,整个过程,包括圆弧,区域,直线等,都应该能够通过Qgis完成。我需要使用Qgis将Arc特征半径更新为新对象的能力。不过,感谢您的答复,我现在将使用FME更新半径属性,但是希望将有一种使用QGIS进行更新的方法。
Sisuaski
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.