Saya ingin menggunakan QGIS membuat titik di sepanjang garis, tetapi dalam jarak yang ditentukan. Saya menemukan dua alat GRASS di SEXTANTE Toolbox :
- v.to.points
- v.segment
Saya mencoba v.to.points , mengatur jarak maksimum antara titik dalam unit peta menjadi 100 dan mendapatkan ini :
Foto kedua menunjukkan tampilan dekat dari atas. Hasilnya adalah apa yang saya inginkan, tetapi saya ingin mendapatkan lebih sedikit poin , tetapi bahkan saya menetapkan jarak maksimum ke 1000, atau 1000000, hasilnya sama.
Saya mencoba menggunakan v.segment , tetapi saya tidak punya file yang berisi aturan segmen.
Underdark memberi saya beberapa saran, dan saya mencoba geometri Densify yang diberikan selang waktu . Pertama itu memberi saya polyline shapefile sama dengan yang saya input, dan kemudian saya menggunakan ekstrak node untuk mencoba mendapatkan poin-poin itu. Tapi hasilnya sama dengan saya menggunakan v.to.points , tidak peduli apa yang saya tetapkan interval jaraknya.
Bagaimana saya bisa membuat titik di sepanjang garis, dan dalam jarak yang ditentukan?
sumber
Jawaban:
Di konsol Python:
Anda dapat menggunakan modul Shapely (seperti pada Bagaimana cara membuat titik yang setara dalam QGIS? ) dengan fungsinya
point = line.interpolate (currentdistance)
API Python baru dari versi master (1.9) memiliki perintah yang setara (seperti dalam Menghasilkan node chainage (jarak) di QGIS dari Nathan Woodrow)
point = geom.interpolate (jarak saat ini)
atau Anda dapat menggunakan vektor aljabar dan arah cosinus (seperti dalam PyQGIS: geometri, vektor, aljabar vektor atau cosinus arah, contoh aplikasi , dalam bahasa Prancis)
1) membuat kelas lapisan memori (kelas lengkap (tanpa atribut) di crea_mem_layer.py )
2) fungsi aljabar vektor (dari algèbre_vect_PyQGIS.py )
3) arah cosinus
4) memproses garis atau segmen garis
Hasil
polyline, titik berjarak sama dengan Shapely atau PyQGIS2, dengan arah cosinus
Kemudian sesuaikan intervalnya
sumber
Sekarang ada sebuah plugin bernama QChainage yang melakukan apa yang Anda inginkan. Anda menentukan jarak interval dan plugin menciptakan titik di sepanjang garis Anda pada interval yang ditentukan.
sumber
Saya telah menulis sebuah skrip yang mengubah alat geometri Sextante Densify untuk menerima jarak tertentu. Itu disebut Densify geometri diberi interval .
Setelah menjalankan Densify, Anda dapat mengekstrak poin menggunakan alat Extract nodes .
Anda bisa mendapatkannya dari Github dan menginstal petunjuk ada di blog saya .
sumber
Jika Anda tidak ingin berkeliaran dengan skrip python, Anda cukup menginstal dan menggunakan plugin "Profile from line" dan mengabaikan / menghapus kolom nilai raster. Chainage akan menjadi apa pun yang Anda tetapkan untuk interval pengambilan sampel.
sumber
Yah tidak yakin apakah ini dalam rilis stabil, tetapi dalam kotak alat sextante pada 1,9 alpha di bawah Geoalgorithims-> Vector adalah opsi "Konversi Garis ke Poin". Bekerja memperlakukan, lebih baik jika menambahkan bidang untuk jarak di sepanjang garis juga.
Menariknya memang menambahkan bidang NAME dari lapisan vektor saya.
Saya mencoba membuat Script Python oleh Nathan Woodrow bekerja, tapi saya payah dengan python. Dan dengan kode pada umumnya sepertinya.
sumber
Saya menghabiskan banyak waktu berjuang dengan masalah ini, tetapi akhirnya mendapatkan lebih atau kurang apa yang saya cari menggunakan QChainage. Apa yang ingin saya bagikan adalah sesuatu yang dapat membantu orang lain. Saat menggunakan alat pelarut geoproses SAGA di telepon, QChainage menghasilkan hasil yang salah. Penggunaan alat pelarut yang berbeda menyebabkannya berfungsi dengan baik.
sumber