Narysowałem mapę przepływu OD przy użyciu generatora geometrii QGIS, używając następującego wyrażenia:
make_line( centroid( $geometry ),
centroid( geometry( get_feature( 'Layer2', 'Attribute1', attribute(
$currentfeature, 'Attribute2') ) ) ) )
Mam wszystko dobrze, określając szerokość moich linii według atrybutów.
Ale kiedy powiększam do „centrum”, linie połączone z miejscami poza obszarem mapy nie są wyświetlane. Chyba dlatego, że funkcje nie powinny pojawiać się na mapie.
Próbowałem odznaczyć opcję „Przycinaj funkcje do zasięgu obszaru roboczego” w menu zaawansowanym, zarówno w „Generatorze geometrii”, jak i na poziomach „Linia”, ale nadal nie pojawia się.
Chciałbym, aby wszystkie moje linie były wyświetlane, nawet po powiększeniu w centrum.
qgis
symbology
mapcanvas
geometry-generator
mamouthautapis
źródło
źródło
Odpowiedzi:
Problem polega na tym, że nie ma rzeczywistych danych mówiących „tu jest linia”. Twoje wyrażenie jest częścią Stylizacji warstw i jest spotykane w procesie renderowania tylko wtedy, gdy są renderowane dwa odpowiednie punkty.
Spróbuj użyć narzędzia Odległość do najbliższego centrum , znajdującego się w przyborniku przetwarzania w obszarze Narzędzia analizy wektorowej. Zauważ, że wybierasz określone wielokąty dla swoich szprych i stylizujesz linie zgodnie z innymi atrybutami. Jest to możliwe, ale musisz zrobić kilka rzeczy, aby się do tego przygotować. Na szczęście narzędzie automatycznie wykorzystuje centroidy po wybraniu danych wejściowych wielokąta.
Wynikowy wynik zachowuje wszystkie atrybuty wejścia warstwy „SPOKES”, więc atrybuty potrzebne do stylizacji linii będą nadal obecne. Jako osobna warstwa wektorowa linie pozostaną widoczne na wszystkich poziomach powiększenia, niezależnie od widoczności dowolnego punktu końcowego.
Jeśli nie masz nic przeciwko graficznemu modelerowi, możesz nawet wbudować te kroki w jeden proces, aby nie zaśmiecać przestrzeni roboczej niepotrzebnymi warstwami.
źródło
Znaleziono następujące obejście: Użyj dodatkowej warstwy wirtualnej zamiast generatora geometrii, aby wyświetlić linie.
Definicja warstwy wirtualnej:
(oryginalna geometria może być przywołana za pomocą
m.geometry
)Aby upewnić się, że warstwa wirtualna odświeża się podczas edycji my_layer, przejdź do właściwości warstwy | zależności i upewnij się, że my_layer jest zaznaczony (domyślnie jest wyszarzony).
źródło