Muszę narysować mapę publicznej sieci transportu autobusowego i mam problem z drogami, na których przebiega wiele linii. Moim celem jest stworzenie wizualnej mapy, w której linie w tych alejach są równoległe jedna do drugiej i bez odstępów między nimi, aby widzieć je wszystkie jednocześnie, niezależnie od skali.
Próbowałem opcji przyciągania i rysowania równoległego (narzędzia CAD), ale problem polega na tym, że kiedy zmieniam skalę, zmieniają się odległości między liniami, które zderzają się lub odgradzają od siebie, psując wszystko.
Więc moje pytanie brzmi:
- Czy jest jakaś opcja, aby narysować sąsiednie linie, które pozostają w sąsiedztwie niezależnie od skali wizualizacji?
Uwaga: nie wiem, czy dla tego, co mam na myśli, używane jest sąsiednie, więc tutaj kopiuję przykład tego, czego szukam:
Oto, co się stanie, gdy powiększę:
A kiedy pomniejszam:
EDYCJA: Tutaj dzielę się sytuacją, w której sugerowane rozwiązanie nie zadziałałoby dla mnie. Trzy linie przez chwilę dzielą tę samą ulicę, ale potem dzielą się na trzy różne ulice.
Nie mogę użyć jednej linii z kilkoma symbolami, ponieważ w całej sieci linie się rozdzielają i łączą ponownie (jest więcej niż 15 linii autobusowych).
Dane zawarte w danych atrybutów mi nie pomagają, ponieważ jest to tylko warstwa pełna linii, bez atrybutu innego niż niektóre informacje sieciowe (liczba autobusów / godzina, pasażer / godzina itp.). (QGIS 2.8.6 działa na systemie Windows 7)
Odpowiedzi:
Nie jestem pewien, czy naprawdę tego chcesz, ale możesz użyć pojedynczej linii z inną symboliką, aby stworzyć wygląd dwóch równoległych linii.
Począwszy od linii o długości 1,1 km w CRS 3857 (metryczny, pseudo-Mercator według Google i innych usług internetowych):
We właściwościach dodaj kolejną warstwę symboli (aby zobaczyć dwie linie).
Ustaw szerokość każdej linii w jednostkach mapy - w tym przypadku jednostkami są metry, a ja wybrałem szerokość 50 metrów i ustawiłem przesunięcie każdej linii na połowę ich szerokości, przy czym jedna z nich ma równe, ale ujemne offsetowy:
Daje to wygląd, którego szukasz:
... i utrzymuje się w różnych skalach:
źródło
Jeśli przez „opcję przyciągania” masz na myśli, że nie możesz zmienić geometrii polilinii i możesz jedynie zmienić ich symbolikę, to to, co opisałeś, jest prawie niemożliwe.
Z twoich przykładów wydaje się, że chcesz renderować polilinie w taki sposób, aby równoległe części stykały się ze sobą bez nakładania się, np. Poprzez równe dzielenie granicy między dwiema równoległymi liniami. Jeśli widzimy reprezentacje polilinii jako ich bufory , możesz wymyślić przypadki (podobnie jak na ryc. 4), w których ta sama linia powinna mieć różne szerokości „bufora” w różnych częściach (podyktowane najbliższymi sąsiadującymi liniami). Innymi słowy, szerokość bufora zależy od innych polilinii i może różnić się w różnych segmentach polilinii. Ale zwykle symbolizacja wykorzystuje tylko informacje / atrybuty samej cechy.
Oczywiście zawsze możesz użyć „bufora” o stałym promieniu wokół linii i ręcznie manipulować wierzchołkami (lub edytować bufory), aby granice były przyciągane do siebie. Wtedy bufory pozostałyby „zatrzaśnięte” przy powiększaniu / pomniejszaniu, chociaż jest to dużo pracy ręcznej i może być wymagana regulacja, jeśli zostaną dodane nowe linie.
źródło