QGIS menghitung jari-jari busur ke atribut


9

Saya sudah menginstal QGIS 2.18.16. Masalah saya adalah, bagaimana cara menghitung radius fitur busur / kurva (garis)? Baris tersebut berasal dari file .dgn, yang saya baca dengan FME dan ditulis ke PostGis DB. Saya telah membuat kunci primer dll, dan tabelnya dapat diedit sepenuhnya. Saya berhasil menghitung panjang untuk busur, tetapi tidak tahu bagaimana cara menghitung radius untuk kurva ini. Ini ( https://www.mathopenref.com/arcradius.html ) mungkin memberikan beberapa gagasan di sisi matematika, meskipun saya tidak tahu cara menggunakannya dalam kalkulator QGIS. Jadi saya perlu menghitung "R" untuk semua baris yang saya miliki di DB.

Di bawah ini adalah contohnya. Data saya memiliki Arc / Kurva pada tabel yang berbeda dari polyline "normal".

masukkan deskripsi gambar di sini


Ketika saya mengklik pada busur dengan alat Identify, salah satu atribut turunan yang terdaftar adalah "radius vertex terdekat." Jadi tidak perlu menghitung jari-jari, Anda hanya perlu mengetahui cara mengakses properti ini di kalkulator bidang. Atau cukup salin dari alat identifikasi.
csk

Anda juga dapat melihat properti vertex ketika layer dalam mode edit dengan memilih simpul dengan Node Tool. Kemudian koordinat titik (x, y, r) ditampilkan di panel Editor Vertex.
csk

Senang mengetahui bahwa paling tidak mungkin untuk melihat radius melalui alat identifikasi. Dengan hanya sedikit busur, salin-tempel akan menjadi pilihan, tetapi saya berencana untuk menggunakan ini untuk seluruh data yang saya miliki, yang memiliki terlalu banyak fitur busur untuk dilakukan secara manual. : /
Sisuaski

Saya mencari-cari sedikit, dan sepertinya tidak banyak orang menggunakan fitur string melingkar di QGIS, jadi tidak ada alat atau fungsi yang siap pakai di kalkulator lapangan. Anda mungkin perlu mendefinisikan fungsi Python khusus. Jika Anda ingin pergi rute itu, tambahkan tag pygis ke pertanyaan Anda.
csk

Berapa banyak titik yang Anda miliki untuk fitur? Apa yang Anda lihat di Vertex Editorsaat Anda mengklik Node Tool?
Marco

Jawaban:


6

Ikuti rumus yang diuji ringan, jadi lanjutkan dengan hati-hati. Tetapi mengikuti dengan contoh di sini: https://www.mathopenref.com/arcradius.html masukkan deskripsi gambar di sini

Jika busur melingkar Anda memiliki simpul di titik tengah sepanjang busur (yang saya katakan adalah x1, y1 pada gambar), Anda bisa menggunakannya bersama dengan titik awal dan akhir untuk menghitung panjang akor " W " dan ketinggian " h " untuk mendapatkan jari-jari "R" menggunakan rumus berikut:

masukkan deskripsi gambar di sini

dan mengatakan

masukkan deskripsi gambar di sini

W =

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

dan

masukkan deskripsi gambar di sini

H =

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

dalam Dialog Ekspresi Kalkulator Bidang Anda akan memiliki persamaan panjang ini untuk perhitungan radius:

masukkan deskripsi gambar di sini

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
Dalam 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}$$ dan $$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

Baik sekali! Saya tidak membayangkan cara mengakses vertex. Apakah mungkin di PostGIS?
Marco

1
Marco, saya percaya adalah mungkin untuk mengekstrak simpul apa pun yang Anda cari. Lihat tautan di sini: postgis.net/docs/ST_PointN.html . Terima kasih atas penambahan dan pengeditan rumus yang paling bagus.
cm1

Sambil menunggu pengembang menambahkan tombol ke "jari-jari penghitungan mudah", ini adalah jawaban paling membantu yang bisa saya harapkan. Sekarang saya (dan mungkin yang lain juga) memiliki setidaknya beberapa cara untuk mengekstrak jari-jari. :) Saya belum menguji ini, tetapi saya akan dalam beberapa hari ketika saya punya cukup waktu. Terima kasih banyak atas bantuannya!
Sisuaski

1

Bagaimana dengan mengekstraksi jari-jari saat mengekstraksi data dengan FME? Di sana Anda memiliki trafo ArcPropertyExtractor, yang seharusnya memberi Anda nilai radius pada atribut yang siap diatur di PostGIS DB Anda


Itu akan menjadi salah satu cara yang mungkin untuk dilanjutkan, cara yang baik untuk menangani seluruh data. Masalah saya adalah, tidak ada cukup pengguna FME di organisasi saya dan saya harus membuat prosesnya semudah mungkin. Itu berarti, seluruh proses, termasuk busur, area, garis dll, harus dapat dilakukan dengan Qgis. Kemampuan untuk memperbarui radius fitur Arc ke objek baru adalah apa yang perlu saya lakukan dengan Qgis. Terima kasih atas balasan Anda, saya akan memperbarui atribut radius dengan FME untuk saat ini, tetapi harap ada cara untuk melakukannya dengan QGIS.
Sisuaski
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.