Muszę przekonwertować długość / długość wyrażoną w stopniach, minutach i sekundach w dane na stopnie dziesiętne. Na przykład w danych są one wymienione jako N335042.06 w kolumnie Szerokość i W86031.04 w kolumnie Długość. Zrobiłem ten problem wcześniej, kiedy stworzyłem skrypt, który przekonwertował DMS na DD i odwrotnie, więc myślę, że mógłbym z tego skorzystać. Ale mam problem z tym, jak zignorować (z braku lepszego słowa) „N” i „W” w danych? Czy mogę je pominąć? I DMS są wymienione razem bez symboli i spacji.
Czy mogę używać len()
, range()
, split()
aby określić, jaka część odczytać z wartości? Na przykład, czy można wykonać następujące czynności?
N335042.06 gdzie, 33 = stopnie 50 = minuty 42,06 = sekundy ...?
Natknąłem się na ten artykuł ESRI, ale jest w VB. Prawdopodobnie użyje go jako odniesienia, ale niektóre terminologie / składnie różnią się od Pythona.
Ostateczny kod, który działa!
# Pre-logic
def latDD(x):
D = int(x[1:3])
M = int(x[3:5])
S = float(x[5:])
DD = D + float(M)/60 + float(S)/3600
return DD
# Expression
latDD(!Latitude!)