Python將經緯度資料轉換成浮點資料

Zzzpiu發表於2020-11-05


前言

最近遇到一個事情,領導讓我將一個excel中的經緯度格式的檔案轉成浮點數的格式,例如:將 東經130°22′33″緯度30°22′33″ 這種資料轉換成數值型別,保留六位小數,由於當時時間緊,只能手改了,但是手改的話,excel中的經緯度格式卻又不統一,有的分用的是搜狗輸入法的′,有的用的是英文符號的單引號,秒有的用的是英文雙引號,有的用的搜狗輸入法的″,有的還用的兩個中文單引號,害,真是害死人,我就只有先格式化資料,再改,但是使用excel中的函式mid擷取的資料又需要統一位數,否則擷取的資料有問題。最後用python算了下資料複製到excel中。今天寫了一個python程式可以用來將制定格式的經緯度資料TXT檔案轉換成浮點數儲存在txt檔案中。


一、資料格式

首先還是需要將資料格式化,可以用文字編輯器中的替換來修改資料格式。要求格式如下:

125°44′20″,44°51′0″
125°25′4″,45°25′51″
125°14′45″,45°34′7″
125°52′13″,45°59′36″
124°1′54″,45°42′45″
124°0′16″,45°44′20″
123°52′30″,46°17′53″
125°39′23″,45°27′1″
124°49′40″,45°25′12″
123°45′5″,45°43′57″
123°36′4″,45°51′57″
123°5′51″,45°24′22″
123°14′41″,45°37′18″
123°2′49″,44°51′27″
123°3′47″,44°50′30″
123°5′59″,44°50′26″

二、程式碼

程式碼如下(示例):

import re
#經緯度陣列檔案
file = open('C:\\Users\\curse\\Desktop\\test.txt',encoding='utf-8')
#經緯度陣列,儲存後的格式為:["'129°35′7″','42°54′6″',", "'129°36′26″','42°54′00″'"]
lon=[]
for line in file.readlines():
    line = line.strip('\n')
    lon.append(line)

f2 = open('C:\\Users\\curse\\Desktop\\test1.txt','w')
#遍歷經緯度
for i in range(len(lon)):
    #處理經緯度
    ln = re.split(u"°|′|″", lon[i].split(",")[0])
    ln_num = round((float(ln[0]) + float(ln[1]) / 60 + float(ln[2]) / 3600),6)
    f2.write(str(ln_num))
    lt = re.split(u"°|′|″", lon[i].split(",")[1])
    lt_num = round((float(lt[0]) + float(lt[1]) / 60 + float(lt[2]) / 3600),6)
    f2.write(','+str(lt_num)+'\n')
f2.close()

總結

圖個方便

相關文章