Tworzenie linii równoległych w określonej odległości od linii, które są częścią pliku kształtu

11

Używam QGIS 2.18. Mam plik kształtu, który zawiera wiele wierszy. Po przetworzeniu określonego przetwarzania danych muszę narysować linie równoległe w różnych odległościach od linii istniejących. Na przykład mam 32 linie w istniejącym pliku shapefile. Chcę narysować równoległe linie w odległości 50, 100, 170, 500,400 od linii o numerze identyfikacyjnym. 3, 6,20,25,31 za jednym razem. Czy istnieje jakakolwiek metoda lub wtyczka w QGIS do robienia tego samego?

Jitendra
źródło

Odpowiedzi:

6

Możesz użyć wtyczki QAD , która oferuje polecenia podobne do CAD w QGIS.

Działa tylko z rzutowanymi układami współrzędnych (więc musisz rzutować swoje dane przed użyciem) i z włączonym trybem edycji (kliknij warstwę prawym przyciskiem myszy i wybierz Toggle Editing).

W twoim przypadku musisz kliknąć przycisk Offset :

wprowadź opis zdjęcia tutaj

i postępuj zgodnie z instrukcjami, które pojawią się w oknie tekstowym QAD (dokładnie tak jak w AutoCAD):

wprowadź opis zdjęcia tutaj

Na przykład jest to wynik, gdy używasz innego przesunięcia dla dwóch różnych funkcji:

wprowadź opis zdjęcia tutaj

mgri
źródło
Dzięki za odpowiedź. Czy jest jakaś inna metoda lub wtyczka do wykonania tego zadania bez wyświetlania danych?
Jitendra
Zastosowałem podejście z wyświetlanymi danymi, ponieważ wydawało się, że masz do czynienia z licznikami ( odległości 50, 100, 170, 500,400 .. ). Zmiana rzutowania jest bardzo prosta: kliknij warstwę prawym przyciskiem myszy, a następnie Save aswybierz projektowany układ współrzędnych. Po wykonaniu przesunięcia możesz wrócić do Geograficznego Układu Współrzędnych z operacją odwrotną ... Powinno być poprawne.
mgri
Bez wyświetlania danych musisz poradzić sobie z kątami zamiast z miernikami i nie wiem, czy stanie się to łatwiejsze ...
mgri
Narzędzie QAD działa dobrze. Ale muszę ręcznie powtórzyć zadanie dla wszystkich linii w pliku shapefile. Czy jest jakaś metoda automatycznego odczytu line_ID i odległości do linii z tabeli atrybutów lub pliku exel lub CSV i narysowania wszystkich równoległych linii jednocześnie.
Jitendra
Nie znam narzędzia, które spełnia to zadanie, ale mogę spróbować podać rozwiązanie za pomocą PyQGIS ... Czy może to być dla Ciebie interesujące?
mgri
6

Jeśli masz kolumnę w tabeli atrybutów, która określa odległość między liniami równoległymi, następująca metoda powinna być w stanie to zrobić za jednym razem -

Możesz użyć Single sided buffers (and offset lines) for linesalgorytmu GDAL/OGR > [OGR] Geoprocessingw przyborniku Przetwarzanie. Będziesz musiał ustawić Operację jako Krzywą Przesunięcia i wprowadzić nazwę kolumny zawierającej odległość w Odstęp buforowy (w moim przypadku nazwa kolumny to szerokość ). Możesz także ustawić, po której stronie linii powinna być narysowana linia równoległa, wybierając opcję Buforuj jako prawą lub lewą.

wprowadź opis zdjęcia tutaj

nash
źródło
Dzięki za odpowiedź. Używam narzędzia OGR zgodnie z twoją sugestią, ale nic nie zostało pokazane w nowym wyjściowym pliku kształtowym.
Jitendra
Czy możesz udostępnić system projekcji, w którym znajduje się plik kształtu? Pomocne mogą być zrzuty ekranu tabeli atrybutów warstwy wyjściowej.
nash
System projekcji pliku kształtu to EPSG 4326
Jitendra
Rozumiesz więc, że nowe linie są tworzone w odległości 50 100,170,500 i 400, co jest w jednostkach Stopnie, a nie metry (co zakładam, że chcesz?)
nash
Zakładając, że potrzebujesz odległości w metrach - będziesz musiał przekonwertować plik shapefile w systemie projekcji z jednostkami w metrach (na przykład system projekcji UTM odpowiedniej strefy). Następnie uruchom algorytm.
nash
6

Możesz użyć „v.parallel”, możesz znaleźć to narzędzie w zestawie narzędzi do przetwarzania QGIS.

  1. Wybierz linię o numerze identyfikacyjnym linii. 3, 6,20,25,31 Wybierz linie

  2. Użyj „v.parallel”, utwórz linię równoległą z wybranych linii. Ale musisz zrobić wiele razy, aby uzyskać różne odległości przesunięcia (50, 100, 170, 500,400). Istnieje opcja „Side”, możesz przypisać lokalizację linii równoległych. „v.parallel”

  3. Wynik: równoległe linie (w kolorze niebieskim) po lewej stronie wybranych linii wynik
Cy T
źródło
Dzięki Cy Y za odpowiedź. Użyłem polecenia v.parallel, ale nic nie zostało pokazane w nowym wyjściowym pliku kształtowym.
Jitendra
1
p / s: polecenie „v.parallel” działa tylko z liniami zakrzywionymi, nie może działać z liniami prostymi, które mają tylko dwa linie wierzchołków.
Cy T