Dalam QGIS ada dua shapefile yang mewakili data bergerak antara sel dan satu lapisan tambahan, lihat gambar di bawah ini
Memindahkan data yang didefinisikan oleh:
Poligon
"LayerA"
(kotak transparan dengan garis merah). Selain itu juga berhubungan dengan lingkaran yang mewakili gerakan di dalam sel, divisualisasikan pada posisi"LayerA"
geocentroid.Lapisan polyline
"Flows"
(panah kuning / abu-abu), menyampaikan nilai melalui koneksi antara"LayerA"
fitur geocentroid
Lapisan target:
Selain itu, saya telah mentransfer "FLUX"
dan memindahkan nilai dalam sel dari "LayerA"
ke dalam "LayerB"
poligon, lihat pertanyaan saya sebelumnya: Nilai yang diwariskan antara poligon di QGIS? . Itu dilakukan menggunakan%
dari $area
perhitungan.
Mungkin ada solusi / pendekatan yang berarti untuk mentransfer / mentransmisikan / mengubah koneksi aliran yang diwakili oleh"Flows"
dan nilai-nilainya dari hubungan "LayerA"
ke dalam hubungan "LayerB"
.
Bagaimana saya bisa mencapai koneksi tersebut sebagai polyline?
Selain itu, aliran baru akan mewarisi gaya yang mirip dengan "Flows"
.
Dengan permintaan, saya dapat memberikan sampel data.
Aliran tidak akan ada antara fitur "LayerA"
, tetapi antara fitur "LayerB"
. Tujuan utamanya adalah untuk mencapai atribut "FLUX"
(yaitu dari / ke) untuk koneksi antara "LayerB"
kemungkinan sebagai tabel / Asal-Tujuan Matriks.
Ada beberapa persyaratan / kriteria yang harus dipatuhi:
1. Tidak ada koneksi aliran antara bagian fitur (dipilih dengan warna kuning) di sel yang sama
2. Tidak ada koneksi antara fitur yang sama bahkan bagian-bagiannya ada di sel yang berbeda
3. Koneksi ada di antara bagian-bagian fitur "LayerB"
(berdasarkan "Union"
output) jika mereka sepenuhnya dalam dua "LayerA"
fitur sel yang berbeda
4. Baru"FLUX"
yang disampaikan, akan dihitung seperti yang ditunjukkan pada gambar di bawah ini.
Misalnya, ada hubungan antara dua sel I
dan II
, di mana "FLUX"
ada 100
. Dengan asumsi nilai-nilai lain, "NEW_FLUX"
antara A'
dan B''
akan ada 1.5625
. 100
hanya satu contoh.
Referensi:
sumber
Jawaban:
Dengan Virtual Layers, secara teoritis, itu mungkin (dengan shapefile, prosesnya akan ekstra panjang, tetapi jika lapisannya ada dalam Database Spasial, saya pikir ini jauh lebih cepat).
Berikut kodenya:
Output grafis akan terlihat seperti
Hasilnya diuji secara manual. Perbedaan
"FLUX"
nilai diabaikan.Hasil akhir akan mewarisi gaya dari
"Flow"
dan terlihat sepertiSaya merekomendasikan untuk mengujinya dengan beberapa data, dan jika terlalu lama untuk set data yang besar, jalankan langkah demi langkah kueri (
"inter_ab"
,"new_flux"
) dan simpan hasilnya dan jalankan kueri berikutnya.sumber
Polygon_b
lapisan, dan bidang utamanya adalahid_geofla
. Saya melakukan koreksi.Anda bisa melakukan gabungan antara tiga lapisan, lalu digabungkan dengan
layerB
. Lapisan virtual kemungkinan dapat digunakan. Saya tidak yakin apakah data penting ada dilayerA
atau di dalamflow
lapisan .. Berikut ini adalah kemungkinan (yang belum diuji):sumber
"Flows"
.sum(f.flow_var)
atau bahkansum(fl.flow_var * a.poly_var)