那位大神帮小弟看下这段代码有什么需要改进的没有。程序要求为:程序主要内容是:大地坐标经纬度的格式转换问题,例如120°30′30″转换为120.50833333°,并且可以互换,这样的程序。...
那位大神帮小弟看下这段代码有什么需要改进的没有。
程序要求为:
程序主要内容是 :大地坐标经纬度的格式转换问题,例如120°30′30″ 转换为120.50833333° ,并且可以互换, 这样的程序。
具体实现为:度分秒与十进制的度 单个坐标互换,而且最重要的是可以调用本地的txt文件批量转换,并保存成txt文档。
公式:
1.度分秒转换成十进制度公式:
例如 原数据 a°b′c″
要得到的数据为: {a+[(b+c/60)/60]}°
2.十进制度转换成度分秒公式:
例如 原数据 A.B°
要得到的数据为: A° [取整(B*60)]′ {[B*60-取整(B*60)]*60}″
具体代码为:
from __future__ import division
import string
import math
def transferDuFenMiao(fileContentList):
changedList = []
for item in fileContentList:
print item
gpsList=str(item).split("'")
print gpsList
if len(gpsList) < 3:
print "data item is not corrct"
else:
du = gpsList[0]
print du
fen = gpsList[1]
print fen
miao = gpsList[2]
print miao
#{a+[(b+c/60)/60]}°
print string.atof(miao)
print string.atof(fen)/60
print (string.atof(miao)+string.atof(fen)/60)/60
data = string.atof(du) +(string.atof(miao)+string.atof(fen)/60)/60
print data
changedList.append(data)
return changedList
#120.50833333°
def transferDecimal(fileContentList):
changedList = []
for i in fileContentList:
gpsList = str(i).split(".")
if len(gpsList) != 2:
print "data i is not corrct"
else:
a = gpsList[0]
b = gpsList[1]
#A° [取整(B*60)]′ {[B*60-取整(B*60)]*60}″
du = gpsList[0]
fen = math.ceil((string.atof(gpsList[1])*60)/60)
miao = (string.atof(gpsList[1])*60-fen)*60
data = du+"'"+str(fen)+"'"+str(miao)+"'"
changedList.append(data)
return changedList
def readFile(fileName):
print "begin read file"
fp=open(fileName)
arr=[]
for lines in fp.readlines():
#lines=lines.replace("\n","").split(",")
print lines
arr.append(lines)
fp.close()
return arr
def writeFile(toBeWrittenList,fileName):
fl=open(fileName, 'w')
for i in toBeWrittenList:
fl.write(str(i))
fl.write("\n")
fl.close()
def main():
print "please choose your model,1:present du-fen-miao model,2:present decimal model"
flag = input()
print "please input the file you want fo parse"
fileName = raw_input()
print flag
print fileName
arrayList = readFile(fileName)
print "here"
if flag == 1:
print "begin tranfer based on du_fen_miao"
writeFile(transferDuFenMiao(arrayList),"output1.txt")
elif flag == 2:
print "begin transfer based on decimal"
writeFile(transferDecimal(arrayList),"output2.txt")
if __name__ == '__main__':
main()
展开