W QGIS istnieją dwa pliki kształtów reprezentujące ruchome dane między komórkami i jedną dodatkową warstwą, patrz zdjęcie poniżej
Przenoszenie danych zdefiniowane przez:
Wielokąt
"LayerA"
(przezroczyste kwadraty z czerwonym konturem). Poza tym odnosi się również do kręgów reprezentujących ruchy w komórkach, wizualizowane na pozycji"LayerA"
geocentroidów.Warstwa polilinii
"Flows"
(żółte / szare strzałki), przekazuje wartości poprzez połączenia między geocentroidami"LayerA"
obiektów
Warstwa docelowa:
Dodatkowo, już przeniesione "FLUX"
i wartości ruchu w komórkach od "LayerA"
do "LayerB"
wielokątów, patrz moje poprzednie pytanie: dziedziczone wartości pomiędzy wielokątów w QGIS? . Stało się to za pomocą %
z $area
obliczeń.
Może istnieć sensowne rozwiązanie / podejście do przesyłania / przesyłania / przekształcania połączeń przepływowych reprezentowanych przez "Flows"
i jego wartości z relacji "LayerA"
do relacji "LayerB"
.
Jak mogę uzyskać te połączenia jako polilinie?
Ponadto nowe przepływy odziedziczą podobny styl "Flows"
.
Na żądanie mogę podać próbkę danych.
Przepływy będą istniały nie między cechami "LayerA"
, ale między cechami "LayerB"
. Głównym celem jest uzyskanie atrybutu "FLUX"
(tj. Z / do) dla połączeń między "LayerB"
możliwymi jako tabela / matryca początkowa-docelowa.
Istnieje kilka wymagań / kryteriów, których należy przestrzegać:
1. Brak połączeń przepływowych między częściami elementów (zaznaczonymi na żółto) w tej samej komórce
2. Nie ma połączeń między tą samą funkcją, nawet jej części znajdują się w różnych komórkach
3. Istnieją połączenia między częściami elementów "LayerB"
(na podstawie "Union"
danych wyjściowych), jeśli są one całkowicie w obrębie dwóch odrębnych "LayerA"
elementów komórki
4. Nowa "FLUX"
wartość, która jest przenoszona, zostanie obliczona, jak pokazano na obrazku poniżej.
Na przykład istnieje połączenie między dwiema komórkami I
i II
, gdzie "FLUX"
jest 100
. Zakładając inne wartości, "NEW_FLUX"
pomiędzy A'
i B''
będą wokół 1.5625
. 100
to tylko jeden przykład.
Bibliografia:
- Dziedziczone wartości między wielokątami w QGIS?
- Dostosowywanie stylów mapy przepływu w QGIS 2
- Oblicz proporcjonalną powierzchnię wielokąta w obrębie wielokąta innej warstwy
- Darmowe i otwarte oprogramowanie GIS Ramblings | Dane o ruchu w GIS: problemy i pomysły
- Zachowanie geometrii za pomocą Virtual Layer w QGIS 2
źródło
Odpowiedzi:
Z Wirtualnymi Warstwami teoretycznie jest to możliwe (w przypadku plików kształtów proces będzie wyjątkowo długi, ale jeśli warstwy znajdują się w Przestrzennej bazie danych, myślę, że jest to o wiele szybsze).
Oto kod:
Będzie wyglądać wyjście graficzne
Wynik został przetestowany ręcznie. Różnica
"FLUX"
wartości jest pomijalna.Ostateczne wyjście odziedziczy style
"Flow"
i będzie wyglądaćPolecam przetestować go z kilkoma danymi, a jeśli zajmuje to zbyt dużo czasu dla dużych zestawów danych, wykonaj krok po kroku zapytania (
"inter_ab"
,"new_flux"
) i zapisz wynik i wykonaj następne zapytanie.źródło
Polygon_b
warstwy, a jej kluczowym polem jestid_geofla
. Dokonałem korekty.Możesz wykonać połączenie między trzema warstwami, a następnie agregować według
layerB
. Prawdopodobnie można zastosować warstwy wirtualne. Nie jestem pewien, czy ważne dane są w warstwie,layerA
czy wflow
warstwie. Oto (niesprawdzona) możliwość:źródło
"Flows"
.sum(f.flow_var)
lub nawetsum(fl.flow_var * a.poly_var)