ArcMap ma możliwość wyświetlania rozszerzonego opisu każdego elementu na liście symboli. Jak wypełnić tę właściwość ze stołu? Celem jest uniknięcie konieczności edycji każdego symbolu jeden po drugim, aby dodać opis .
źródło
ArcMap ma możliwość wyświetlania rozszerzonego opisu każdego elementu na liście symboli. Jak wypełnić tę właściwość ze stołu? Celem jest uniknięcie konieczności edycji każdego symbolu jeden po drugim, aby dodać opis .
Zamiast próbować używać samej aplikacji ArcMap, umieściłem ArcPy na zdjęciu.
Właśnie przetestowałem i osiągnąłem to, co opisałeś za pomocą klasy UniqueValuesSymbology (arcpy.mapping), która ma zapisywalną właściwość classDescriptions, którą można ustawić na:
Lista ciągów lub liczb reprezentujących opisy każdej unikalnej wartości, która opcjonalnie może pojawić się w legendzie dokumentu mapy. Te wartości są dostępne tylko w interfejsie użytkownika ArcMap, klikając prawym przyciskiem myszy symbol wyświetlany na karcie Symbology w oknie dialogowym Właściwości warstwy i wybierając Edytuj opis. Lista classDescriptions musi mieć tę samą liczbę elementów i ułożoną w tej samej kolejności co właściwość classValues.
Kod korzysta z kursora wyszukiwania, aby wczytać tabelę wyszukiwania do listy , a następnie zapisuje tę listę we właściwości classDescriptions klasy symbology warstwy. Zauważ, że tablica przeglądowa MUSI mieć taką samą liczbę wierszy i być w tej samej kolejności, co wartości unikalnej klasyfikacji symboli . Mój kod musiałby zostać ulepszony, aby uwzględnić to, że tak nie jest, ale upewnienie się, że zamówienie to było łatwe w moim przypadku testowym.
import arcpy
vegDescList = []
vegCodes = arcpy.SearchCursor(r"C:\temp\test.gdb\LookupTable")
for vegCode in vegCodes:
vegDescList.append(vegCode.Description)
mxd = arcpy.mapping.MapDocument(r"C:\temp\test.mxd")
lyr = arcpy.mapping.ListLayers(mxd,"testFC")[0]
if lyr.symbologyType == "UNIQUE_VALUES":
lyr.symbology.classDescriptions = vegDescList
mxd.save()
del mxd
Czy możesz sklasyfikować swoje symbole za pomocą „Unikatowych wartości, wielu pól” i wybrać jedno pole dla kodu, a drugie dla dłuższego opisu? Powinno to oznaczać każdy element ciągiem w postaci „[Field1], [Field2]”
Działa z mniejszymi polami, wyobrażam sobie, że działałoby z dłuższymi łańcuchami, chyba że istnieją ograniczenia, których nie znam.
Jedyną irytującą częścią byłoby to, że będziesz musiał przejść i usunąć wartość kodu z początku wartości etykiety, ale nie byłoby to najgorsze, co się kiedykolwiek wydarzyło.
źródło
Pracując na podstawie kodu PolyGeo , oto, co wymyśliłem, aby obejść problem związany z koniecznością posiadania dokładnej liczby elementów i identycznej kolejności dopasowania między wartościami wyszukiwania a opisem. Pełny działający skrypt jest tutaj .
źródło