QGIS calcola il raggio di un arco in base agli attributi


9

Ho installato QGIS 2.18.16. Il mio problema è, come calcolare il raggio di una caratteristica arco / curva (linea)? Le righe sono originate dal file .dgn, che ho letto con FME e scritto su PostGis DB. Ho creato chiavi primarie ecc. E la tabella è completamente modificabile. Ho calcolato con successo le lunghezze degli archi, ma non riesco a capire come calcolare il raggio per queste curve. Questo ( https://www.mathopenref.com/arcradius.html ) potrebbe dare qualche idea sul lato matematico, anche se non riesco a capire come usarlo nel calcolatore QGIS. Quindi ho bisogno di calcolare la "R" per tutte le linee che ho nel DB.

Bellow è un esempio. I miei dati hanno Archi / Curve su una tabella diversa rispetto alle polilinee "normali".

inserisci qui la descrizione dell'immagine


Quando faccio clic su un arco con lo strumento Identifica, uno degli attributi derivati ​​elencati è il "raggio del vertice più vicino". Quindi non è necessario calcolare il raggio, devi solo capire come accedere a questa proprietà nel calcolatore di campo. O semplicemente copiarlo dallo strumento di identificazione.
csk

Puoi anche visualizzare le proprietà di un vertice quando un livello è in modalità di modifica selezionando i vertici con lo strumento Nodo. Quindi le coordinate del vertice (x, y, r) vengono visualizzate nel pannello Editor vertici.
csk

Bello sapere che è almeno possibile vedere il raggio tramite lo strumento di identificazione. Con pochi archi copia-incolla sarebbe un'opzione, ma ho intenzione di usarlo per tutti i dati che ho, che ha troppe funzioni di arco per essere fatto manualmente. : /
Sisuaski,

Ho cercato su Google un po ', e sembra che non molte persone utilizzino le funzionalità di stringa circolare in QGIS, quindi non c'è uno strumento o una funzione già pronti nel calcolatore di campo. Potrebbe essere necessario definire una funzione Python personalizzata. Se vuoi seguire questa strada, aggiungi il tag pygis alla tua domanda.
csk

Quanti vertici hai per funzione? Cosa vedi in Vertex Editorquando fai clic su Node Tool?
Marco,

Risposte:


6

Seguono formule leggermente testate, quindi procedi con cautela. Ma seguendo insieme un esempio qui: https://www.mathopenref.com/arcradius.html inserisci qui la descrizione dell'immagine

Se i tuoi archi circolari hanno un vertice nel punto medio lungo l'arco (che sto dicendo è x1, y1 nella figura), potresti usarlo insieme ai punti iniziale e finale per calcolare la lunghezza della corda " W " e l'altezza " h " per ottenere il raggio "R" utilizzando la seguente formula:

inserisci qui la descrizione dell'immagine

e dicendo

inserisci qui la descrizione dell'immagine

W =

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

e

inserisci qui la descrizione dell'immagine

H =

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

nella tua finestra di dialogo Expression of the Field Calculator avresti questa equazione lunga per il calcolo del raggio:

inserisci qui la descrizione dell'immagine

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
In 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}$$ e $$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,

Molto bene! Non immaginavo come accedere ai vertici. È possibile in PostGIS?
Marco,

1
Marco, credo che sia possibile estrarre qualunque vertice che stai cercando. Vedi il link qui: postgis.net/docs/ST_PointN.html . Grazie per le aggiunte e le modifiche alla formula più eccellenti.
cm1

In attesa che gli sviluppatori aggiungano un pulsante per "calcolare facilmente il raggio", questa è la risposta più utile che potessi sperare. Ora io (e forse anche altri) ho almeno un modo per estrarre il raggio. :) Non l'ho ancora testato, ma lo farò tra qualche giorno quando avrò abbastanza tempo. Grazie mille per il tuo aiuto!
Sisuaski,

1

Che dire dell'estrazione del raggio durante l'estrazione dei dati con FME? Lì hai il trasformatore ArcPropertyExtractor, che dovrebbe darti i valori del raggio negli attributi pronti per essere impostati nel tuo DB PostGIS


Sarebbe un modo possibile per procedere, un buon modo per gestire tutti i dati. Il mio problema è che non ci sono abbastanza utenti FME nella mia organizzazione e devo rendere il processo il più semplice possibile. Ciò significa che l'intero processo, inclusi archi, aree, linee, ecc., Dovrebbe essere in grado di essere eseguito con Qgis. La capacità di aggiornare il raggio della funzione Arc a nuovi oggetti è ciò che devo fare con Qgis. Grazie per la tua risposta, per ora aggiornerò gli attributi radius con FME, ma spero che ci sarà un modo per farlo con QGIS.
Sisuaski,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.