Di sini ada dua lapisan dengan representasi jalanan dan idenya adalah: Kami ingin memperbarui lapisan terbaru (dengan garis merah) dengan beberapa data disimpan di yang lain (biru muda), tetapi lapisan ini adalah serupa dalam posisi Geografis yang bisa sangat dekat dan sedikit lebih jauh tergantung pada tempat di peta dan hanya satu atribut yang cocok dalam kasus-kasus bahwa sebuah garis sama dengan yang lain (codlog x codlog5).
Sebagai contoh: Di tengah gambar, ada kotak di kedua lapisan, tetapi bagaimana saya lakukan di peta untuk mengenali yang biru sama dengan yang hijau dan memperbarui lapisan yang baru-baru ini?
Bagaimana saya bisa melakukannya? Apakah ada plugin atau alat yang membantu dengan itu?
qgis
layers
latitude-longitude
Jhonatan Oliveira
sumber
sumber
Jawaban:
Ini adalah pertanyaan yang bagus, saya harus melakukan sesuatu yang serupa baru-baru ini tetapi dengan dataset yang jauh lebih kecil, jadi saya dapat menggunakan persimpangan sederhana dengan beberapa pengecekan kualitas visual tambahan dan itu baik-baik saja.
Tapi ini ide untuk ini, walaupun saya tidak punya kode, dan ini semacam proses yang lumayan. Uji dengan sampel dari dataset lengkap terlebih dahulu. Anda mungkin dapat beberapa kode yang berguna di sekitar sini. (Lekukan agak aneh di bawah ini.):
ambil himpunan geometri yang baik (di mana Anda ingin atribut berakhir) dan buat buffernya *
beralih melalui masing-masing fitur buffer:
2a. menghitung orientasi umum fitur (max_y - min_y / max_x - min_x atau sesuatu seperti itu)
2b. buat kueri pemilihan lokasi berdasarkan pada layer lain menggunakan fitur tunggal ini
Anda akan memiliki lebih dari satu fitur yang cocok dengan kueri pemilihan lokasi, jadi ulangi melalui fitur yang dipilih ini dan hitung orientasi masing-masing
dapatkan atribut dari fitur mana saja yang memiliki orientasi paling dekat dengan fitur buffer.
* Saya akan mulai dengan jarak yang sangat kecil (satu unit peta atau sesuatu) dan kemudian jalankan proses ini dengan jarak yang semakin jauh, berhati-hati untuk tidak menimpa atribut apa pun yang telah Anda transfer.
** Anda sebenarnya bisa melupakan membuat fitur buffer, dan lakukan saja kueri pemilihan lokasi menurut jarak buffer di dalamnya. Saya tidak terlalu mengenal QGIS, tetapi saya yakin Anda akan dapat melakukannya.
Tidak mungkin ini akan bekerja dengan sempurna untuk semua fitur Anda, tetapi ini adalah permulaan, dan kemudian berkembang menjadi strategi QA / QC yang baik untuk memeriksa dan menyelesaikan transfer.
EDIT Memikirkan hal ini lebih lanjut, berikut adalah contoh dasar yang benar-benar akan merusak sistem jika Anda mulai dengan jarak buffer yang sangat kecil dan memilih fitur dengan orientasi paling cocok seperti yang saya rekomendasikan:
Atribut dari garis merah yang salah akan diambil. Untuk menghindari hal ini, Anda mungkin ingin membuat semacam toleransi, dan hanya mengambil atribut fitur jika orientasinya (bila dibandingkan dengan orientasi fitur biru asli) termasuk dalam toleransi itu.
EDIT 2 Ups, apakah ini poligon? Saya kira saya hanya berasumsi mereka garis pada latar belakang abu-abu. Jika mereka poligon, saya tidak benar-benar tahu apakah konsep orientasi ini bagus. Tapi Anda bisa memilih semua fitur berpotongan, dan mencari tahu yang memiliki paling tumpang tindih (menjalankan alat tipe Union, dan kemudian menggunakan poligon dengan area terbesar ...).
sumber
Jika Anda ingin menambahkan beberapa atribut dari lapisan merah ke lapisan biru dan satu atribut adalah umum di kedua lapisan, Anda harus menggunakan Add Vector Join .
Saya sudah menulis tentang itu di sini .
Itu dia.
Di sini Anda memiliki contoh dengan tangkapan layar.
sumber
Saya lebih suka jawaban dari @ dmh126 karena metodenya memungkinkan lapisan red_line Anda diperbarui dengan mudah.
Hanya untuk menambahkan alternatif, Anda bisa menggunakan alat tabel atribut Bergabung dari Pemrosesan Toolbox dan pilih layer Anda dengan bidang umum. Perhatikan bahwa metode ini membuat shapefile baru alih-alih memperbarui yang sudah ada:
sumber
Jika Anda memiliki ID unik di kedua lapisan yang dapat Anda gunakan untuk dengan mudah menggabungkan nilai ke lapisan baru dari yang lama, itu adalah sepotong kue. Tapi sepertinya bukan itu masalahnya.
Jika tidak, itu masalah yang cukup sulit. Saya bertanya-tanya mengapa komentar dari user30184 menyarankan untuk menggunakan OpenJUMP dan plugin http://www.vividsolutions.com/products.asp?catg=spaapp&code=roadmatcher tidak diposting sebagai jawaban karena kedengarannya benar-benar sah bagi saya dalam kasus ini.
Kalau tidak, saya tidak berpikir Anda bisa melakukan ini tanpa coding. Dengan QGIS Anda dapat menggunakan bentuk dan ketika menggabungkan buffering dan berpotongan Anda harus dapat melakukan beberapa pemeriksaan otomatis yang signifikan.
Salah satu pendekatan bisa dengan membandingkan beberapa penyangga garis merah yang cukup besar dengan garis biru dan mendapatkan atribut yang sesuai dan rasio berapa banyak yang cocok. Dalam pseudo-code:
sumber