Mam punkty reprezentujące przykładowe lokalizacje. Często wiele próbek zostanie pobranych w tej samej lokalizacji: wiele punktów o tej samej lokalizacji, ale różne identyfikatory próbek i inne atrybuty. Chciałbym oznaczyć wszystkie punkty, które znajdują się w tej samej etykiecie, a tekst w stosie zawiera wszystkie identyfikatory próbek wszystkich punktów w tym miejscu.
Czy jest to możliwe w ArcGIS przy użyciu zwykłego silnika do etykietowania lub Maplex? Wiem, że mogłem obejść ten problem, tworząc nową warstwę ze wszystkimi przykładowymi identyfikatorami dla każdej lokalizacji w jednej wartości atrybutu, ale chciałbym uniknąć tworzenia nowych danych tylko na potrzeby etykietowania.
Zasadniczo chcę od tego zacząć:
Do tego (najwyższy punkt):
Bez ręcznej edycji etykiet.
Odpowiedzi:
Jednym ze sposobów na to jest klonowanie warstwy, używanie zapytań definicji i etykietowanie ich osobno, przy użyciu pozycji etykiety tylko w lewym górnym rogu dla pierwszej warstwy i lewej dolnej dla drugiej.
Dodaj liczbę całkowitą typu THEFIELD do warstwy i wypełnij ją, używając wyrażenia poniżej:
Nazwij to:
Utwórz kopię warstwy w spisie treści, zastosuj zapytanie definicji THEFIELD = 1.
Zastosuj zapytanie definicji THEFIELD = 2 dla oryginalnej warstwy.
Zastosuj inne ustalone położenie etykiety
AKTUALIZACJA na podstawie komentarzy do oryginalnego rozwiązania:
Dodaj pole COORD i wypełnij je, używając
Podsumuj to pole, używając pierwszego i ostatniego dla etykiety. Dołącz tę tabelę z powrotem do oryginału, używając pola COORD. Wybierz rekordy, w których jodły <> trwają, i połącz pierwszą i ostatnią etykietę w nowym polu za pomocą
Użyj Count_COORD i THEFIELD, aby zdefiniować 2 „różne warstwy” i pola do ich oznaczenia:
Aktualizacja nr 2 inspirowana rozwiązaniem @Hornbydd:
AKTUALIZACJA Listopad 2016, mam nadzieję, że będzie trwał.
Poniżej wyrażenia przetestowanego na 2000 duplikatach, działa jak urok:
źródło
Poniżej znajduje się częściowe rozwiązanie.
Jest to zgodne z wyrażeniem Advance. To niezbyt wydajne, dlatego pytam o liczbę punktów w twoim zestawie danych. Tak więc dla każdego wiersza, który zostanie oznaczony, buduje 2 słowniki, w
d
których kluczem jest XY, a wartością jest tekst, ad2
który jest objectID i XY. Korzystając z tej kombinacji słowników, jest w stanie zwrócić pojedynczą etykietę, która jest konkatenacją ze znakami nowego wiersza, w moim przykładzie jest to konkatenacja TARGET_FID. „sj” to nazwa warstwy w spisie treści.Dlaczego jest to częściowe rozwiązanie, ponieważ robi się to za każdym razem, nie byłem w stanie wymyślić, jak wyłączyć wszystkie pozostałe punkty. To dlatego myślę, że ostatecznym rozwiązaniem jest jakiś python, który buduje nową warstwę pojedynczych punktów z pojedynczą etykietą zbudowaną ze stosu punktów.
Poniżej przedstawiono wynik 3 ułożonych w stos punktów, jak widać, że etykieta jest tworzona dla każdego punktu, ponieważ wszystkie one istnieją w tym samym miejscu.
źródło