Mam narzędzie skryptowe Python w ArcGIS. Jednym z parametrów tego narzędzia jest wejściowy plik rastrowy, który ustawiłem (używając właściwości narzędzia w przyborniku), aby był warstwą rastrową. Oznacza to, że kiedy uruchamiam narzędzie, dostaję opcję wyboru tego parametru z listy rozwijanej aktualnie załadowanych warstw rastrowych lub nawigując, aby znaleźć nową warstwę rastrową w systemie plików.
Następnie używam standardowego arcpy.GetParameterAsText(0)
kodu, aby wprowadzić parametr do mojego skryptu Python. Działa to dobrze, gdy wybieram plik podczas przeglądania systemu plików, ponieważ tekst w oknie dialogowym jest pełną ścieżką do pliku, ale gdy wybieram z listy rozwijanej, tekst, który otrzymuję, jest tylko nazwą pliku (np. file.tif
) .
Kod, który uruchamiam, musi znać pełną ścieżkę do pliku - jak go zdobyć?
Gdybym mógł założyć, że plik zawsze znajdował się w obszarze roboczym, mógłbym dołączyć do niego nazwę pliku arcpy.env.workspace
, ale nie mogę tego założyć. Czy muszę iterować wszystkie załadowane warstwy, dopóki nie znajdę jednej o tej samej nazwie, a następnie nie znajdę jej pełnej ścieżki, czy też istnieje łatwiejszy sposób?
źródło
Odpowiedzi:
Jakiś czas temu miałem ten sam problem. Jest to dość łatwa poprawka, wystarczy użyć narzędzia opisz.
Otrzymujesz już nazwę warstwy na podstawie swoich parametrów. Więc wszystko, co musisz zrobić, to opisać warstwę, znaleźć ścieżkę, a następnie połączyć obie.
To nie powinno stanowić problemu.
Mam nadzieję że to pomoże
źródło
Jeśli chcesz uwzględnić możliwość określenia przez użytkownika rastra w systemie plików:
źródło
Jest to również nieco krótszy sposób. Opis obiektów danych ma właściwość catalogPath, która jest pełną ścieżką do pliku.
Dzięki używanej przez nas wersji 10.1 możesz:
źródło
Możesz użyć
arcpy.GetParameter(0)
zamiastarcpy.GetParameterAsText(0)
tego, ponieważ otrzyma obiekt warstwy, a nie tylko ciąg z nazwą warstwy.Jeśli możesz uzyskać obiekt warstwy, możesz uzyskać
Layer
właściwości bezpośrednio i oszczędza to konieczności robieniaDescribe
.Coś takiego może dać ci to, czego chcesz:
źródło
Oto, czego użyłem. To działa jak urok.
źródło