Forum QGIS

Pełna wersja: Atlas kontrolowany przez dwie warstwy
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Cześć,

Proszę o pomoc. Chciałabym stworzyć atlas kontrolowany przez dwie warstwy. Największy widok mapy jest kontrolowany przez warstwę punktową i to jest ok. Natomiast mam problem z mini mapkami zlokalizowanymi w lewym dolnym rogu (podgląd w załączniku). Chciałabym, aby wyświetlał się wyłącznie dystrykt, na którym znajduje się punkt, a nie cała okolica. Próbowałam filtrować poligony dystryktów przez polecenie $id = $atlasfeatureid, ale wyświetlają się wtedy losowe dystrykty, niekompatybilne z punktami. Możliwe, że problem tkwi w układzie współrzędnych: punkty są w 4326, a poligony w 2180. Nie mogę zmienić ich układu, gdyż w przeciwnym razie warstwy te nie nakładają się na siebie (nie wiem z czego to wynika, ale tak jest). 

Drugi problem dotyczy mapy wszystkich dystryktów. Chciałabym, aby w mapie podglądu wyświetlał się dokładny kontur aktualnego dystryktu, a nie kwadrat obejmujący mniej więcej jego powierzchnię. Czy jest coś takiego możliwe? Zaznaczam, że w mapie wszystkich dystryktów geometria została uproszczona, a w pojedynczych wyświetlanych dystryktach nie. Mimo to nie sądzę, żeby to bardzo wpływało na estetykę dużej mapy, ponieważ jest stosunkowo mała i tego typu szczegóły nie powinny przykuwać wzroku.
Przepraszam, przypadkowo zduplikowałam post. Proszę o usunięcie.
Cześć, odpowiadając na Twoje pytanie:
1. W pierwszej kolejności musisz wiedzieć w jakim dystrykcie leży dany punkt w warstwie punktowej. Możesz do tego wykorzystać narzędzie "Złącz atrybuty według lokalizacji" i w ten sposób opisać warstwę punktową. Dzięki temu warstwa punktowa "zdobędzie" unikalne id danego dystryktu.
2. Następnie należy użyć unikalnego filtrowania w warstwie z dystryktami tak, aby warstwa stylizowała obiekt aktualnego dystryktu zgodnie z Twoim zamierzeniem, czyli:
- włączasz w warstwie z dystryktami styl na wartość unikalną i wpisujesz ręcznie wartości 0 i 1,
[Obrazek: ecc4bcee5fe51fccmed.jpg]
- następnie w pasku wybory kolumny klikasz na wyrażenie i wpisujesz:
[Obrazek: 56872ea96d6825bcmed.jpg]

case when
@atlas_pagename  =    "jpt_nazwa_" 
then 1
else 0
end

gdzie "@atlas_pagename" musi być zdefiniowany jako nazwa Twojego dystryktu a "jpt_nazwa_"  to nazwa kolumny w której znajduje się nazwa dystryktu użytego do nazwania strony atlasu.

Efekt końcowy:

[Obrazek: b604d6ed0b2c6a4cmed.jpg]

Z drugą mapą należy postąpić podobnie.
> Przepraszam, przypadkowo zduplikowałam post. Proszę o usunięcie.

Nie ma problemu, ale dzięki za jasną informację. Post usunięty.
Dziękuję za odpowiedź. Mam jednak nadal problem z tym tematem i chciałabym prosić o dalszą pomoc. Czy na te działania, które opisałeś, mogą mieć wpływ różny układ współrzędnych punktów i dystryktów? Punkty są w 4326, a dystrykty w 2180 i zastanawiam się czy to z tego powodu nie działają prawidłowo opisane przez Ciebie funkcje. Drugie pytanie: czy mogę ręcznie określić numery id dystryktów i również ręcznie dodać kolumnę z id dystryktów do tabeli atrybutów punktów zamiast wykonywać złączenia wg lokalizacji? Ta funkcja również nie działa prawdopodobnie z powodu odmiennych układów współrzędnych.
Odpowiadając na Twoje pytanie dotyczące układów - muszą być w tym samym SRID (odwzorowaniu), inaczej złączenie atrybutów według lokalizacji nie zadziała. Jeżeli chodzi o drugie pytanie dotyczące id - to tak możesz zrobić to ręcznie. Zasada jest taka, że mając dla przykładu teryt gminy wiesz w jakim jest ona powiecie i województwie. Podejrzewam, że Twoje ID dystryktu również może opierać się na podobnej zasadzie. Najmniejszy obiekt danej jednostki ( w moim przykładzie gmina) musi "wiedzieć" o id jednostki nadrzędnej, dzięki temu będzie można wyświetlić ją na mapie. Jeżeli nazwa id jest złożona tak jak w przypadku terytu należy posłużyć się funkcją do fragmentu tekstu "substr()".
Dziękuję za odpowiedź i pomoc, wszystko działa! Pojawił się jednakże kolejny problem. Mianowicie: dystrykty z mini mapki środkują się w obrębie swojego obszaru pod względem położenia punktu. Tzn. nie są wyśrodkowane przez wzgląd na swoje rozmiary i swój centroid, tylko na fakt, w którym miejscu tego dystryktu znajduje się punkt (miejsce na dystrykcie, w którym zlokalizowany jest punkt, znajduje się w środku obszaru przeznaczonego dla mini dystryktu). Widoki poglądowe w załączniku. Psuje to całą estetykę mapy: dystrykty "wędrują" po różnych krańcach swojego obszaru, nieraz się ucinają. Czy jest możliwość wyśrodkowania tych dystryktów z mini mapki przez wzgląd na ich rozmiar/centroid?