Czy jest jakaś opcja w QGIS do rysowania równoległych linii, które są przyciągane do zewnętrznej części linii (linii sąsiednich), które są niezależne od skali?


12

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: Cel


Oto, co się stanie, gdy powiększę:

Zbliżenie

A kiedy pomniejszam:

Oddal

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.

Rozdzielać

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)


1
W QGIS 2.16 wprowadzono nowe opcje uproszczenia renderowania . Chociaż nie mogę potwierdzić, czy to pomoże w twojej sytuacji.
Joseph

Chciałbym to zrobić w ArcGIS na pulpicie, ustawiając skalę odniesienia w ramce danych .
PolyGeo

Cześć @PolyGeo, problemem z tym rozwiązaniem (które można zaimplementować w QGIS, zmieniając jednostki na „jednostkę mapy”) jest to, że potrzebuję linii do zmiany szerokości w zależności od skali, ale nie relacji między nimi. Wiem, że potrzebuję czegoś bardzo konkretnego i trudnego do wdrożenia. Coś bardziej odpowiedniego dla programu Illustrator niż dla oprogramowania GIS. Dzięki za pomoc!
Andreu Amoros

Czy wszystkie pliki kształtów linii leżą jeden na drugim, czy też istnieje już jakieś przesunięcie między nimi?
Joseph

W niektórych przypadkach leżą jedna na drugiej, aw innych nie. Co proponujesz?
Andreu Amoros

Odpowiedzi:


6

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):

wprowadź opis zdjęcia tutaj

We właściwościach dodaj kolejną warstwę symboli (aby zobaczyć dwie linie).

wprowadź opis zdjęcia tutaj

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:

wprowadź opis zdjęcia tutaj

Daje to wygląd, którego szukasz:

wprowadź opis zdjęcia tutaj

... i utrzymuje się w różnych skalach:

wprowadź opis zdjęcia tutaj


2
Myślałem o tym, ale trudno byłoby sobie z tym poradzić przy rozdzielaniu linii.
Victor

@Victor o separacji: możesz tworzyć różne atrybuty, takie jak „pojedyncza linia”, „podwójna linia” o wartości True / False i stosować etykietowanie oparte na regułach.
sweet.sugar.cola

1
@Victor zgodził się, potrzebuję uzyskać więcej informacji od OP na temat charakteru danych; to rozwiązanie może nie działać w zależności od sposobu łączenia i rozdzielania linii.
Simbamangu,

1
@Andreu, być może możesz kliknąć „edytuj” w swoim oryginalnym poście i dodać tę informację (i przykład, w którym to rozwiązanie nie zadziałałoby ) oraz (jeszcze lepiej) niektóre przykładowe dane?
Simbamangu

@Simbamangu Przede wszystkim dziękuję za wypróbowanie rozwiązania i udostępnienie go mi. Nawet jeśli to rozwiązanie może działać w niektórych przypadkach, jak powiedział Victor, trudno byłoby go używać, gdy linie oddzielają się od innych. W rzeczywistości dzieje się tak za każdym razem, gdy linie dzielą się na różne ulice. Dane działają w ten sposób: Mam wszystkie linie sieci Bus w różnych plikach kształtu. „Problem” polega na tym, że wszystkie są narysowane w sposób realistyczny, więc kiedy wybieram więcej niż jeden na raz, kolidują ze sobą. Więc moim celem jest stworzenie mapy, na której można wizualnie zobaczyć całą sieć. Zmienię mój post.
Andreu Amoros

3

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.


Dziękuję za Twoją odpowiedź. Mogę zmienić geometrię polilinii, ale ponieważ przecina się wiele linii i wiele różnych kombinacji, staje się to bardzo czasochłonne i żmudne. Wypróbowałem rozwiązanie buforowe, ale jest nawet trudniejsze niż edycja kształtu linii, ponieważ jeśli trzeba zdefiniować zależną wizualizację we wszystkich segmentach wszystkich linii.
Andreu Amoros

1
@AndreuAmoros. Właśnie to sugerowałem. Edycja linii (lub powiązanych z nimi „buforów”) jest rzeczywiście czasochłonna, ale jest to wymagane przez naturę twojego wymagania, aby te bufory się ze sobą łączyły.
tinlyx
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.