Liczba postów: 4
1
Dołączył: 06-12-2024
Reputacja:
0
Rozdzielanie obiektów na podstawie obiektu z innej warstwy
Cześć,
Jestem początkujący w Qgis.
Mam warstwę wektorową, która składa się z kilku dużych obiektów. Chciałbym w jednym z tych obiektów, wydzielić inny na podstawie obrysu działki, którą mam zaznaczoną w innej warstwie.
Próbowałem narzędziem do rozdzielania obiektów, ale działka jest bardzo nierówna i żadne opcje przyciągania nie pomagają mi w dokładnym dobraniu punktów, zawsze są gdzieś mikroskopijne dziury.
Doskonale działa za to wektor -> różnica, ale mam takich działek sporo i muszę je wycinać osobno.
Nie ma jakiejś funkcji typu "wytnij na podstawie zaznaczonego obiektu?"? Dzięki za wszelkie sugestie.
Liczba postów: 622
2
Dołączył: 27-08-2009
Reputacja:
2
RE: Rozdzielanie obiektów na podstawie obiektu z innej warstwy
Jest i właśnie ją znalazłeś - Różnica vel Difference Smile Można ją wywołać na wiele sposobów, a dostęp przez menu Warstwa jest chyba najbardziej pracochłonny.
Najprościej możesz ją ponownie wywołać z historii (menu Processing -> Historia lub Ctrl-Alt-H), wtedy powinna pamiętać parametry (i nie podstawiać aktualnie aktywnej warstwy jako źródłowej).
Możesz też zbudować model składający się z tą jedną funkcją (vel algorytmem), ale jako nazwy warstw wejściowych zdefiniować stałe teksty.
I chyba najwygodniejsza metoda, żeby wywoływać ją jednym kliknięciem, kiedy tylko potrzebujesz:
1. Menu Wtyczki -> Konsola Pythona.
2. W konsoli klawisz z notesikiem otworzy obok edytor.
3. Wklejasz weń poniższy kod (podmieniając nazwy tych 2 warstw; zwróć też uwagę na równe wcięcia).
4. Zapisujesz plik.
5. Uruchamiasz klawiszem z zieloną strzałką (tym nad edytorem).
Liczba postów: 4
1
Dołączył: 06-12-2024
Reputacja:
0
RE: Rozdzielanie obiektów na podstawie obiektu z innej warstwy
Ok dzięki, myślałem że jest jakiś oczywisty sposób, który nie tworzył by nowej warstwy tylko od razu wklejał kopiowane obiekty do warstwy, zastepując je.
Funkcja różnica jest spoko, ale powoduje często drobne problemy z geometrią.
Liczba postów: 622
2
Dołączył: 27-08-2009
Reputacja:
2
RE: Rozdzielanie obiektów na podstawie obiektu z innej warstwy
Zatem nie napisałeś, co dokładnie chcesz uzyskać. Wycinać czy kopiować i w której warstwie zapisywać wynik.
Problemy z geometrią prawie na pewno są spowodowane błędami w warstwie wejściowej. Może działki nie są topologicznie poprawne, a z błędnych danych trudno uzyskać dobry wynik Patrz menu Wektor -> Sprawdź geometrię.
Liczba postów: 4
1
Dołączył: 06-12-2024
Reputacja:
0
RE: Rozdzielanie obiektów na podstawie obiektu z innej warstwy
Mam jedną warstwę, w której są różne działki i każda z tych działek to osobny poligon. Chciałbym wkleić do tych działek budynki, które mam w innej warstwie, również będące poligonami.
Warstwa 1 - warstwa z działkami
Warstwa 2 - warstwa z budynkami
Kopiuję budynki z warstwy 2 do warstwy 1 wtaki sposób, że postaje dziura w poligonie działki którą zastępuje poligon wklejonego budynku.
Mam nadzieję, że teraz trochę lepiej się wyraziłem.
Liczba postów: 622
2
Dołączył: 27-08-2009
Reputacja:
2
RE: Rozdzielanie obiektów na podstawie obiektu z innej warstwy
Teraz tak
Zatem musisz uruchomić Różnicę w trybie Edytuj w warstwie źródłowej (zamiast tworzyć nową warstwę). Potem w osobnym kroku trzeba wkopiować budynki.
Ale jeśli nie interesują Cię atrybuty budynków i chcesz tylko geometrycznie podzielić działkę wzdłuż obrysu budynku (tj. na poligon pod budynkiem oraz otaczający), to można to zrobić w jednym kroku - zamiast Różnicy użyj algorytmu Podziel za pomocą linii. Czyli tak:
1. Zaznacz budynki, którymi chcesz wycinać.
2. Wybierz warstwę działek w panelu warstw (to jest konieczne do uruchomienia trybu Edytuj w warstwie źródłowej).
3. Otwórz Panel algorytmów (np. przez menu Processing).
4. Wciśnij przedostatnią ikonę na górze panelu algorytmów: Edytuj w warstwie źródłowej. Ona jest aktywna tylko wtedy, gdy w panelu warstw jest wybrana warstwa do edycji (patrz p. 2).
5. Teraz drzewo algorytmów jest mocno przetrzebione, bo tylko nieliczne działają w tym trybie. Wyszukaj algorytm Podziel za pomocą linii i voilà!
Liczba postów: 4
1
Dołączył: 06-12-2024
Reputacja:
0
RE: Rozdzielanie obiektów na podstawie obiektu z innej warstwy
Dzięki,
W jaki sposób mogę uruchodzmić różnicę w trybie edytuj w warstwie źródłowej? Nie tworzę nowej warstwy, ona mi się tworzy automatycznie po uruchomieniu algorytmu różnica. Nigdzie nie widzę opcji aby to pominąć, mogę jedynie zmienić na eksport do pliku itd.
Co do algorytmu "podziel za pomocą linii" - zrobiłem zgodnie z punktami, ale efektem jest tylko zaznaczenie całej warstwy, nic się nie wydzieliło. Próbowałem zarówno z budynkeim z innej warstwy jak z całą działką. Algorytm się uruchamia, ale po skończeniu po prostu zaznacza mi wszystko w warstwie.
Liczba postów: 622
2
Dołączył: 27-08-2009
Reputacja:
2
RE: Rozdzielanie obiektów na podstawie obiektu z innej warstwy
Cytat:W jaki sposób mogę uruchodzmić różnicę w trybie edytuj w warstwie źródłowej? Nie tworzę nowej warstwy, ona mi się tworzy automatycznie po uruchomieniu algorytmu różnica. Nigdzie nie widzę opcji aby to pominąć, mogę jedynie zmienić na eksport do pliku itd.
Cytat:Co do algorytmu "podziel za pomocą linii" - zrobiłem zgodnie z punktami, ale efektem jest tylko zaznaczenie całej warstwy, nic się nie wydzieliło. Próbowałem zarówno z budynkeim z innej warstwy jak z całą działką. Algorytm się uruchamia, ale po skończeniu po prostu zaznacza mi wszystko w warstwie.
Zaznaczenie wszystkich działek jest ok: w tym trybie algorytm działa na zaznaczonych obiektach, więc jeśli nic nie zaznaczyłeś, to zaznaczył wszystkie.
Następnie wykonuje operację (w tym wypadku podział działek za pomocą budynków, a dokładnie ich obrysów, bo obrys poligonu jest traktowany jako linia) i pozostawia warstwę działek w trybie edycji z niezapisanymi zmianami (żebyś mógł zdecydować, czy je zapisujesz, czy odrzucasz). Powinno to wyglądać jak w załączniku.
Jeśli to nie działa, to spróbuj uruchomić ten algorytm w zwykłym trybie - zobaczysz, czy problem jest z samym podziałem, czy wywołaniem w trybie "in situ". Możesz też zaznaczać zarówno budynki jak i działki albo nic nie zaznaczyć - wtedy wytnie wszystkie budynki na wszysktich działkach.