Mengambil titik awal dan akhir untuk setiap garis di garis, membentuk dalam ArcGIS Desktop atau QGIS?


15

Saya memiliki shapefile vektor (polyline) dan saya perlu mengambil titik awal dan akhir (node) setiap baris dan membuat shapefile dengan titik-titik ini. Maka saya perlu menambahkan tabel atribut polyline titik awal dan akhir untuk setiap baris berdasarkan pada ID poin.

Bagaimana saya bisa melakukannya dengan cara sederhana di ArcGIS Desktop atau QGIS?


2
Di ArcGIS, jika Anda memiliki lisensi Lanjut, Anda dapat menggunakan Toolbox Manajemen Data-> Fitur Toolset-> Fitur Vertices ke Poin dengan opsi Kedua Berakhir. Semua atribut garis dipertahankan. Namun, Anda harus menambahkan bidang ke kelas fitur garis asli Anda dan menghitung ID fitur pada baris Anda agar nilai tersebut dipertahankan dalam poin. Jika Anda memiliki bidang nilai unik lain di baris Anda, Anda bisa bergabung dan menghitung FID setelah menjalankan alat. Opsi terakhir akan melibatkan melakukan Bergabung Spasial dengan opsi One To Many dan menghapus salinan dengan atribut buruk.
Richard Fairhurst

Apakah ini menjawab pertanyaan Anda? "Bagaimana cara mengambil koordinat titik awal dan akhir dengan Python / arcpy?" gis.stackexchange.com/q/31684/8104
Aaron

Saya mencoba pendekatan yang sama tetapi tersesat di sepanjang jalan. Saya akan mencoba untuk mengulanginya. Yang terbaik adalah membuat makro yang melakukan semua tugas ini untuk memastikan siapa pun dapat membuat prosedur yang sama setelahnya. Bersulang!
user51651

Metode @RichardFairhurst, yang mungkin harus disarankan sebagai jawaban juga. Begitulah cara saya melakukannya secara historis
bwp8nt

Jawaban:


8

Itu adalah satu-baris untuk GDAL. Perintah ini membuat shapefile dari node awal dengan atribut yang dipilih:

ogr2ogr -f "ESRI Shapefile" -dialect sqlite output.shp -sql "select ST_StartPoint(geometry), attribute_1, attribute_2, attribute_3 from input" input.shp

Gunakan ST_EndPoint untuk titik akhir.


Terima kasih banyak! Ini mungkin menyelesaikan pekerjaan, tetapi saya mencari sesuatu yang lebih sederhana (visual) sehingga orang lain tanpa keterampilan pemrograman dapat melakukan tugasnya.
user51651

Di mana Anda menulis perintah itu?
blue_chip

Ke baris perintah. Di Linux, gunakan shell normal. Di Windows gunakan jendela perintah tetapi berhati-hatilah karena lingkungan Anda memiliki jalur yang benar. Shell Osgeo4w melakukan itu secara otomatis.
user30184


6

Solusi QGIS: Dimungkinkan untuk mengekstrak awal dan akhir node (koordinat) dari file vektor garis, cukup dengan menggunakan xat dan yat dalam kalkulator bidang, dengan masing-masing indeks 0 (mulai) dan -1 (akhir).

xat(0)    
yat(0)
xat(-1)
yat(-1)

5

Untuk solusi ArcGIS, saya telah membuat alat geoprocessing yang menciptakan titik pada garis.

Anda dapat mengunduhnya, dan melihat kode di sini: Buat Poin di Baris

Untuk Jenis, Anda ingin memilih START / END POINTS. Ini akan membuat kelas fitur titik baru yang berisi titik awal dan akhir untuk setiap polyline.

Kelas fitur titik output juga akan memiliki bidang yang disebut LineOID, yang mencatat OID dari polyline tempat ia dibuat. Dengan begitu Anda dapat bergabung kembali dengan data atribut Anda.

Berikut screenshot dari bagaimana Anda mengatur parameter:

masukkan deskripsi gambar di sini


Ini bagus, Ian! Saya akan mengunduhnya dan mengujinya dan memberi Anda umpan balik secepatnya. Saya pikir alat ini akan berguna untuk apa yang saya butuhkan dan akan membantu mengotomatiskan proses dengan lebih baik! Terima kasih!
user51651

Hai Ian, Idk mengapa, tetapi saya tidak bisa mendapatkan alat Anda untuk bekerja di ArcGIS 10.0 atau 10.1 ... Saya menambahkannya ke toolbox tetapi tidak makan siang ... = /
user51651

@ user51651 Apakah Anda mendapatkan pesan kesalahan? Itu tidak akan bekerja dengan 10.0, tetapi harus bekerja dengan 10.1 dan di atas Jika Anda masuk ke menu Geoprocessing, dan kemudian Hasil. Apakah ada pesan di sana?
ianbroad

3

untuk menambahkan koordinat titik akhir dalam tabel atribut, menggunakan ArcGIS, Anda dapat menggunakan kalkulator bidang (tidak perlu membuat geometri). Klik nama bidang, bidang kalkulator, lalu gunakan sintaksis Python dengan satu baris di bawah ini (contoh dengan koordinat X):

!shape.firstPoint.X!

!shape.lastPoint.X!

perhatikan bahwa semuanya ada di dalam !!


Ini jawaban yang sangat bagus, saya tidak menyadari ini mungkin. Cuplikan itu di Kalkulator Bidang mungkin membantu orang yang kurang terbiasa dengan tugas. Saya berasumsi Anda bisa melakukan ini dengan nilai M juga?
bwp8nt

2

Dalam QGIS gunakan alat Extract Specific Vertices . Atur indeks Vertex ke 0 untuk mendapatkan poin awal dan -1 untuk mendapatkan poin akhir atau 0, -1 untuk mendapatkan keduanya.

QGIS Ekstrak Vertikal Tertentu

Perhatikan deskripsi:

Verteks pertama berkorespondensi dengan indeks 0, verteks kedua memiliki indeks 1, dll. Indeks negatif dapat digunakan untuk menemukan simpul pada akhir geometri, misalnya, indeks -1 terkait dengan titik terakhir, - 2 sesuai dengan simpul terakhir kedua, dll.


1

Di ArcGIS, jika Anda memiliki lisensi Lanjut, Anda dapat menggunakan Toolbox Manajemen Data-> Fitur Toolset-> Fitur Vertices ke Poin dengan opsi Kedua Berakhir. Semua atribut garis dipertahankan. Namun, Anda harus menambahkan bidang ke kelas fitur garis asli Anda dan menghitung ID fitur pada baris Anda agar nilai tersebut dipertahankan dalam poin. Jika Anda memiliki bidang nilai unik lain di baris Anda, Anda bisa bergabung dan menghitung FID setelah menjalankan alat. Opsi terakhir akan melibatkan melakukan Bergabung Spasial dengan opsi One To Many dan menghapus salinan dengan atribut buruk.

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.