Używanie dynamicznego tekstu do wyświetlania kredytów warstw

9

Szukam sposobu na zaktualizowanie „napisów warstwy” w dynamicznym polu tekstowym. Znalazłem tutaj sposoby korzystania z kredytów map lub kredytów ramek danych , ale nie mogę wydawać się sposobem na uzyskanie informacji pochodzących z warstwy.

Wydaje mi się, że za każdym razem produkuję pusty ciąg. Czy ktoś to zrobił lub znalazł rozwiązanie? Wydaje się, że jest to bardzo przydatny sposób aktualizowania kredytów na mapie przy niewielkich lub zerowych zasobach.

Właściwości warstwy pochodnej

Slevy
źródło
Nie ma możliwości zrobienia tego dynamicznie, ponieważ wszystkie wbudowane dynamiczne teksty są oparte na dokumencie lub ramce danych. Jest to jednak zdecydowanie możliwe, jeśli chcesz uruchomić skrypt wypełniający pole tekstowe za każdym razem, gdy tworzysz mapę. Lub nawet wypełnij kredyty map ze wszystkich kredytów warstw. Jeśli właśnie o to ci chodzi, mogę podać kod, który by to zrobił.
Fezter

Odpowiedzi:

17

Jak wspomniano w moim komentarzu powyżej, nie ma sposobu, aby to zrobić za pomocą dynamicznego tekstu. Możesz jednak napisać skrypt, aby to zrobić i dołączyć go do przycisku dodatku do Pythona lub uruchomić po zapisaniu MXD lub czegoś takiego. Musisz utworzyć element tekstowy, aby przechowywać kredyty i nazwać go tak, jak „KREDYTY”, ponieważ:

wprowadź opis zdjęcia tutaj

Podstawowy kod wyglądałby mniej więcej tak:

mxd = arcpy.mapping.MapDocument("current")
credit_text = ""
for layer in arcpy.mapping.ListLayers(mxd):
    credit_text += (layer.credits + "\n") # separate each line with a carriage return
for el in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"):
    if el.name == "CREDITS":
        el.text = credit_text
Fezter
źródło
2
+1 Właśnie tak bym to zrobił - odpowiedziałbym tym samym kodem.
Midavalo