QGIS calcula el radio de un arco a atributos

9

Tengo QGIS 2.18.16 instalado. Mi problema es, ¿cómo calcular el radio de una entidad de arco / curva (línea)? Las líneas se originan en el archivo .dgn, que leí con FME y escribí en PostGis DB. He creado claves principales, etc., y la tabla es totalmente editable. Calculé las longitudes de los arcos con éxito, pero no puedo entender cómo calcular el radio de estas curvas. Esto ( https://www.mathopenref.com/arcradius.html ) podría dar alguna idea sobre el lado matemático, aunque no puedo entender cómo usarlo en la calculadora QGIS. Entonces necesito calcular la "R" para todas las líneas que tengo en el DB.

Abajo es un ejemplo. Mis datos tienen arcos / curvas en una tabla diferente a las polilíneas "normales".

ingrese la descripción de la imagen aquí

Sisuaski
fuente
Cuando hago clic en un arco con la herramienta Identificar, uno de los atributos derivados enumerados es el "radio de vértice más cercano". Por lo tanto, no es necesario calcular el radio, solo tiene que descubrir cómo acceder a esta propiedad en la calculadora de campo. O simplemente cópielo desde la herramienta de identificación.
csk
También puede ver las propiedades de un vértice cuando una capa está en modo de edición seleccionando vértices con la herramienta Nodo. Luego, las coordenadas de vértice (x, y, r) se muestran en el panel Editor de vértices.
csk
Es bueno saber que al menos es posible ver el radio a través de la herramienta de identificación. Con solo unos pocos arcos, copiar-pegar sería una opción, pero planeo usar esto para toda la información que tengo, que tiene demasiadas funciones de arco para hacerlas manualmente. : /
Sisuaski
Busqué en Google un poco, y parece que no muchas personas usan funciones de cadena circular en QGIS, por lo que no hay una herramienta o función preparada en la calculadora de campo. Es posible que deba definir una función personalizada de Python. Si desea seguir esa ruta, agregue la etiqueta de pygis a su pregunta.
csk
¿Cuántos vértices tienes para la función? ¿Qué ves en el Vertex Editorcuando haces clic en Node Tool?
Marco

Respuestas:

6

Le siguen fórmulas ligeramente probadas, así que proceda con precaución. Pero siguiendo con un ejemplo aquí: https://www.mathopenref.com/arcradius.html ingrese la descripción de la imagen aquí

Si sus arcos circulares tienen un vértice en el punto medio a lo largo del arco (que digo es x1, y1 en la figura), podría usarlo junto con los puntos de inicio y finalización para calcular la longitud del acorde " W " y la altura " h " para obtener el radio "R" con la siguiente fórmula:

ingrese la descripción de la imagen aquí

y diciendo

ingrese la descripción de la imagen aquí

W =

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

y

ingrese la descripción de la imagen aquí

H =

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

en su cuadro de diálogo de expresión de la calculadora de campo, tendría esta ecuación larga para el cálculo del radio:

ingrese la descripción de la imagen aquí

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
fuente
1
En 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}$$ y $$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
¡Muy bien! No imaginé cómo acceder a los vértices. ¿Es posible en PostGIS?
Marco
1
Marco, creo que es posible extraer cualquier vértice que estés buscando. Vea el enlace aquí: postgis.net/docs/ST_PointN.html . Gracias por las excelentes adiciones y ediciones de fórmulas.
cm1
Mientras espero que los desarrolladores agreguen un botón para "calcular fácilmente el radio", esta es la respuesta más útil que podría esperar. Ahora yo (y posiblemente otros también) tengo al menos alguna forma de extraer el radio. :) Todavía no he probado esto, pero lo haré en unos días cuando tenga suficiente tiempo. ¡Muchas gracias por su ayuda!
Sisuaski
1

¿Qué pasa con la extracción del radio mientras se extraen los datos con FME? Ahí tienes el transformador ArcPropertyExtractor, que debería darte los valores de radio en atributos listos para establecer en tu DB PostGIS

fgiron
fuente
Esa sería una forma posible de proceder, una buena manera de manejar todos los datos. Mi problema es que no hay suficientes usuarios de FME en mi organización y necesito hacer que el proceso sea lo más fácil posible. Eso significa que todo el proceso, incluidos arcos, áreas, líneas, etc., debería poder realizarse con Qgis. La capacidad de actualizar el radio de la entidad Arc a nuevos objetos es lo que necesito hacer con Qgis. Sin embargo, gracias por su respuesta, actualizaré los atributos de radio con FME por ahora, pero espero que haya una manera de hacerlo con QGIS.
Sisuaski