Mam polilinię, która jest podzielona na wieloczęściowe, a te części nie są dobrze uporządkowane, więc identyfikator wierzchołka nie jest zgodny z wykreśleniem polilinii.
Ta polilinia reprezentuje linię autobusu i muszę mieć fabułę podążającą drogą autobusu. Chciałbym wiedzieć, jak połączyć wieloczęściowe elementy tej polilinii?
Próbowałem już podzielić i nie wyświetlać, a także wielu części na jedną część, połączenia, scalania itp., Ale nikt nie daje mi pożądanego rezultatu.
Odpowiedzi:
Z twoich tagów wynika, że korzystasz z ArcGIS 10. Użyłem następującej metody do podobnego zadania:
1) Użyj Multipart do pojedynczej części
2) Użyj Unsplit
Aby to zadziałało (tzn. Aby linie były we właściwej kolejności), może być konieczne rozbicie linii na punkty końcowe składowych, a następnie zmiana kierunku na podstawie atrybutu (np. 1 = początek, 2 = koniec) - możesz tego użyć, aby warunkowo połączyć tylko te punkty, które są różne (jeśli 1 + 2, a następnie utwórz linie łączące).
Jeśli pracujesz z IDE, kod do zrobienia tego jest dość długi, ale zrobię co w mojej mocy, aby pomóc, jeśli masz konkretne pytania.
źródło
Musiałem zrobić dokładnie to samo dość dawno temu, używając AV 3.x i Avenue. Szybko poszukałem kodu, ale nie mogłem go znaleźć. Jeśli dobrze pamiętam, logika wyglądała mniej więcej tak: (Miałem także przystanki autobusowe i terminale jako inny plik kształtu, więc mogłem określić części początkowe i końcowe):
Aby uzyskać pierwszą część:
2a. Zdobądź część, która jest najbliższa do uruchomienia terminala
2b. Uzyskaj odległości węzła początkowego i końcowego tej części do terminalu początkowego. Jeśli wierzchołek początkowy jest najbliższy, dodaj tę część do „posortowanej polilinii”. Jeśli to koniec - FLIP to, a następnie dodaj.
... czy jakoś tak! :-)
Daj mi znać, jeśli ma to dla Ciebie sens, a ja mogę poprosić o znalezienie mojego oryginalnego kodu Avenue.
źródło
Pracowałem w projekcie podobnym do tego, użyłem ArcObjects. Moim celem było połączenie dwóch sąsiadujących polilinii, jeśli jeden z jej punktów końcowych jest punktem początkowym innego, aby przekształcić dwie krótkie polilinie w jedną polilinię. Mój proces był:
Obie klasy zastępują metody „Równa się” i „GetHashCode”.
Dzięki tym procesom stworzyłem dwa słowniki. Po utworzeniu słowników sprawdzam, czy oba słowniki zawierają ten sam punkt, a w obu słownikach ten klucz ma tylko jedną cechę na liście funkcji, a następnie utworzyłem nową polilinię z tymi dwiema poliliniami i usuwam dwie krótkie polilinie.
Aby połączyć dwie polilinie w jedną:
źródło
Miałem dokładnie ten sam problem z powodu aktualizacji, które wprowadziłem na trasach autobusów za pomocą narzędzia „Zmień kształt”. Dissolve, Merge i Unsplit nie działały, ponieważ funkcje wieloczęściowe nie były przypadkowe.
Jeśli do tej pory tego nie zauważyłeś, przyjrzyj się bliżej wierzchołkom, które muszą pokrywać się między elementami wieloczęściowymi. W razie potrzeby rozszerz, przytnij lub zmień kształt, a następnie użyj dowolnego z wyżej wymienionych narzędzi.
źródło