Wyświetlanie wygenerowanych linii poza zasięgiem mapy za pomocą QGIS?

12

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ę.

Po powiększeniu na piaście

Kiedy unzoomed

Chciałbym, aby wszystkie moje linie były wyświetlane, nawet po powiększeniu w centrum.

mamouthautapis
źródło
To nie będzie pomocne ... ale mam ten sam problem z podejściem mapowania przepływu w Podmroku. To musi być coś w sposobie, w jaki renderowana jest gęsta geometria ... jedyną sugestią jest gra z szerokością atrybutu dla mapy poziomu lokalnego ... zmniejszyć szerokości?
Andrew Tice,
Być może możesz przesłać swoje dane (shp ...), aby móc powielić kroki i spróbować uzyskać odpowiedź.
César Arquero
1
Stąd pochodzi Shapefile: IGN i połączony stół od INSEE
mamouthautapis
Może segmentacja linii może być włamaniem, aby pojawiła się na mapie, jeśli linie są pokazane tylko ib, oba końce są zbliżone do zasięgu mapy. Narzędzie do trawy „v.split.length” może zadziałać.
Julian
1
Czy to ten sam problem, jaki miałem (jeśli to daje prosty sposób na zrozumienie tego problemu - jeśli nie, zignoruj ​​mnie): Chciałem pokazać zestaw danych punktów z całym zestawem wygenerowanych punktów przesuniętych o 300 km na wschód i 600 km północ w porównaniu do rzeczywistych punktów. Działa - ale tylko po zmniejszeniu, tak aby oryginalne punkty znajdowały się w obszarze mapy. Po powiększeniu zestawu wygenerowanych punktów (przeniesienie rzeczywistych lokalizacji punktów poza obszar roboczy) wygenerowane punkty znikają. (QGIS 2.14)
Rostranimin

Odpowiedzi:

2

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.

  1. Narzędzia wyboru wektorów > Wyodrębnij według atrybutu
    • Warstwa wejściowa: „LAYER_1”
    • Atrybut wyboru: „ATTRIBUTE_1”
    • Operator: =
    • Wartość: „wartość odnosząca się do wielokąta piasty”
    • Wyodrębniono (atrybut): „HUB”

  2. Narzędzia wyboru wektorów > Wyodrębnij według atrybutu
    • Warstwa wejściowa: „LAYER_1”
    • Atrybut wyboru: „ATTRIBUTE_2”
    • Operator: wybrany w razie potrzeby
    • Wartość: „wartości odnoszące się do wielokątów szprychowych”
    • Wyodrębniono (atrybut): „SPOKES”

  3. Narzędzia analizy wektorowej > Odległość do najbliższego piasty
    • Warstwa punktów źródłowych: „SPOKES”
    • Warstwa węzłów docelowych: „HUB”
    • Atrybut nazwy warstwy koncentrującej: tworzy pole wyjściowe w polu „Nazwa koncentratora” na podstawie wybranego atrybutu, w przypadku gdy w warstwie wejściowej określono wiele koncentratorów
    • Typ kształtu wyjściowego: od linii do piasty
    • Jednostka miary: metry
    • Odległość piasty: „OUTPUT_LAYER_NAME”

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.

JoshC
źródło
3

Znaleziono następujące obejście: Użyj dodatkowej warstwy wirtualnej zamiast generatora geometrii, aby wyświetlić linie.

Definicja warstwy wirtualnej:

select m.FID, make_line(.....) as geometry from my_layer m

(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).

Mesa
źródło