Czy zamiast tego rzutujesz obiekt wynikowy ArcPy z arcpy.GetCount_management () jako liczbę całkowitą?


18

Próbuję uzyskać liczbę, licząc, ile punktów jest w pliku kształtu. I to działa, z tym wyjątkiem, że mam problemy z użyciem tego numeru w innym miejscu. W końcu będę używał tej liczby do obliczeń matematycznych (kalkulator polowy), ale podczas debugowania napotykam błąd, który skończy się później problemami.

Ten kod:

TotalPoints = arcpy.GetCount_management(Path_Pts)
arcpy.AddMessage(">>>> PROCESS: COUNT PATH POINTS {" + TotalPoints + "}")

daje ten błąd:

TypeError: cannot concatenate 'str' and 'Result' objects

Próbowałem rzucić go jako int, który również NIE lubi:

TypeError: int() argument must be a string or a number, not 'Result'

Mam więc obiekt „Wynik” i muszę go przekształcić w liczbę.

Jak mogę to zrobić - czy korzystanie z funkcji ArcPy jest tutaj niepotrzebne lub nadmiernie skomplikowane?

Odpowiedzi:


45

Użyj następującej metody na obiekcie Result, a będziesz mógł rzutować jako int:

.getOutput (0) zwróci wartość w pierwszej pozycji indeksu narzędzia.

int(arcpy.GetCount_management(Path_Pts).getOutput(0))


3

GetCount zwraca obiekt wyniku, a nie liczbę całkowitą lub ciąg znaków.

Aby uzyskać ciąg, użyj metody getOuput obiektu wynikowego i wyciągnij jego pierwszą część. Aby zobaczyć inne części, spróbuj przełączyć 0 na 1, 2 itd.

Jeśli chcesz przekształcić ten ciąg w liczbę całkowitą, użyj funkcji int ().

Aby dowiedzieć się więcej o obiekcie Result i jego metodzie getOutput, należy skorzystać z pomocy online .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.