Forum QGIS

Pełna wersja: Jeden obiekt z kilku odcinków.
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam.
Chciałbym spytać czy znacie sposób na połączenie obiektu liniowego, składającego się z kilku odcinków, tak aby powstał jeden obiekt, połączony ze sobą "przerwanymi" wierzchołkami? Dostałem dość sporo tego typu wektorów i chciałbym je uporządkować. Jest to eksport z innego systemu, który zapisując do SHP robi takie rzeczy z jednego obiektu...
W załączniku przedstawiam kilka odcinków, które są jednym obiektem (zaznaczone narzędziem selekcji).
Dzięki i pozdrawiam.
PS. Dodam, ze obiekty mogą być zarówno w shp bądź w PostGIS.
Wciąż nie mogę tego rozgryźć :/ Czy ktoś wie co to w ogóle za typ obiektu. Nasuwa mi się skojarzenie z celkami czy blokami w Bentleyu i AutoCadzie. Jeżeli to coś na ten wzór, to ciężko to widzę. Chyba, że jakaś funkcja PostGISa, która potrafiłaby coś z tym zrobić...
Pozdrawiam.
Nie jestem pewien, czy dobrze zrozumiałem problem, ale może pomoże narzędzie 'Połącz zaznaczone obiekty' z paska narzędziowego 'Zaawansowana digitalizacja'.
No właśnie to jest jeden obiekt zawierający wiele linii, a wspomniane narzędzie wymaga zaznaczenie co najmniej 2 obiektów. Chodzi o coś dokładnie odwrotnego. Z połączonych linii w jeden obiekt, zrobić osobne tak aby były złączone "rozdzielonymi" wierzchołkami... masło maślane Wink Być może się nie da ... tak jak powiedziałem dane to otrzymałem jako eksport z zewnątrz i zdziwił mnie brak ciągłości linii w jednym obiekcie...
Próbuje z PostGISem (ST_LineMerge) i GRASSem (v.clean.snap) ale końcowy efekt nie zawsze jest zgodny z oczekiwaniami.
Dzięki i pozdrawiam...
Menu Wektor/Narzędzia geometrii/Rozbij obiekt wieloczęściowy na jednoczęściowe

Ale to nie załatwi połączenia tych "maślanych" wierzchołków Smile
No właśnie... Smile
Dzięki!
Do takich celów jest konsola Pajtona. Jeśli wierzchołki są kolejno, to powinno to być kilka linijek skryptu: iteracja po kolejnych wierzchołkach i (o ile nie jest zdublowany) składanie nowego multipoligonu. W QGISie 1.9.90 to by wyglądało tak (trzeba pamiętać o włączeniu trybu edycji najpierw). W starszych jest niestety nieco inny sposób dostępu do obiektu. Niech no ktoś tam przerobi, bo już nie pamiętam jak to się robiło, a nie mam nic pod ręką, żeby przetestować.

Kod:
f = iface.activeLayer().dataProvider.getFeatures().next()
pl = []
for line in f.geometry().asMultiPolyline():
  for vertex in line:
    if not len(pl) or vertex != pl[len(pl)-1]:
        pl += [vertex]
f.setGeometry(QgsGeometry.fromMultiPolyline([ln]))
iface.activeLayer().updateFeature(f)

Jeśli wierzchołki nie są kolejno, to trzeba kombinować z wyszukaniem najbliższego, albo wspomaganiem przez operatora. Może ktoś z naszych Pytonowców zechciałby taką wtykę machnąć?