Вопрос, который вы задали, похоже, требует простой замены некоторого символа, а не реального преобразования координат. Благодаря комментариям я понял, что эта двусмысленность была связана с тем, что вы сами не понимали, как получить конверсию. Среди различных типов координат мы находим формат DDM (градусы, десятичные минуты). Когда вы спрашиваете «действительное число», вы на самом деле имеете в виду формат DD (формат десятичных градусов, например, 13,41 ° N). Таким образом, в DDM координата широта: 15 ° 41,13 N состоит из 3 значений и ссылки:
- D: градусы, здесь 15
- M: минуты, здесь 41
- S: секунды, здесь 13
- N или S: Север или Юг (по долготе мы имеем Восток или Запад)
Как Википедия говорит , формула для преобразования из DDM в DD:
decimal degrees = degrees + (minutes/60 + seconds/3600)
Я пробовал два онлайн-конвертера ( один и два ), и кажется, что записанные вами координаты находятся в Формат DMM. Единственная разница с форматом DDM заключается в том, что здесь секунды уже разделены на 60, поэтому мы можем перечислить:
- D: градусы, здесь 15
- M: минуты, здесь 41
- S: секунды / 60, здесь 13
- N или S: север или юг (по долготе у нас Восток или Запад)
Это означает, что формула от цифрового мультиметра до DD:
decimal degrees = degrees + (minutes/60 + seconds/60)
код
import pandas as pd
df_csv = pd.read_csv('file.dat',delimiter=';',encoding='UTF_8')
latitude = df_csv['Latitude'].astype('str')
for element in latitude:
degree= float(element[:element.find('°')])
minutes = float(element[(element.find('°')+1):(element.find('.'))])
seconds= float(element[element.find('.'):])
decimalDegrees=degree + minutes/60 + seconds/60
вход
Lat: 31°11.7765
выход
31.196275
В ваших координатах вы не говорите ни о каком кардинальном пункте. Правило таково: если это N или E, результат положительный, если S или W, результат отрицательный (-1 * выход)