[英]Converting degrees-minutes to radians from data in a text file
例如在我的文本文件Data.txt中 :
AB N05-30-00E 495.85
BC N46-02-00E 850.62
CD S67-38-00E 855.45
DE S12-25-00E 1020.87
EF S83-44-00W 1117.26
FA N55-09-00W 660.08
這些分別是側面,方位和長度/距離。 如何將其轉換為弧度? (此后,我將獲得緯度和緯度,但是如果我只能先獲得該緯度和緯度,則稍后再做)。然后,我將結果寫入txt文件,第四個和第五個是緯度和緯度。
import math
fileread = open("Data.txt","r")
data = fileread.read
#missing code, convert the string to degrees decimal?
print "%.3f" % math.cos(math.radians())
我不確定我是否理解您的數據顯示什么,因此這只是字符串轉換部分的粗略提示:
# s = "05-30-00"
(degrees, minutes, seconds) = \
map(float, re.match("(\d+)-(\d+)-(\d+)", s).groups())
獲得degrees
, minutes
和seconds
,就可以將它們“展平”為一個值:
degrees = degrees + minutes / 60.0 + seconds / 3600.0
最后,
rads = math.radians(degrees)
如您所提示,將完成該轉換。
根據您的操作方式,您可能需要根據指南針的方向翻轉標志,例如:
if compass in ('W', 'S'):
degrees = -degrees
有關轉換的更多詳細信息,請查找“ 地理坐標轉換 ”。
是的,Jay Kominek是對的。
只需添加他的答案即可。
CSV
模塊讀取輸入文件,因為文件結構良好。 輸入 :
AB N05-30-00E 495.85
BC N46-02-00E 850.62
CD S67-38-00E 855.45
DE S12-25-00E 1020.87
EF S83-44-00W 1117.26
FA N55-09-00W 660.08
演示 :
import csv
import math
import re
def convertRedis(format_input):
"""
Coordinate format conversion
degrees minutes seconds:
decimal degrees = degrees + minutes}/60 + seconds/3600.
"""
degrees, minutes, seconds = map(float, re.match("\w(\d+)-(\d+)-(\d+)\w", format_input).groups())
degrees = degrees + minutes/60 + seconds/3600
return math.radians(degrees)
with open("Technical Description.txt") as fp:
root_r = csv.reader(fp)
root_r = csv.reader(fp, delimiter='\t')
with open("output.txt", "wb+") as fp2:
root_w = csv.writer(fp2, delimiter='\t')
for row in root_r:
rads = convertRedis(row[1])
new_row = list(row)
distance = float(row[2])
if "S" in row[1]:
d_cos = "%.2f"%(distance*math.cos(rads) * -1, )
else:
d_cos = "%.2f"%(distance*math.cos(rads), )
if "W" in row[1]:
d_sin = "%.2f"%(distance*math.sin(rads) * -1, )
else:
d_sin = "%.2f"%(distance*math.sin(rads), )
new_row.extend([d_sin, d_cos])
root_w.writerow(new_row)
輸出:
AB N05-30-00E 495.85 47.53 493.57
BC N46-02-00E 850.62 612.23 590.53
CD S67-38-00E 855.45 791.09 -325.53
DE S12-25-00E 1020.87 219.51 -996.99
EF S83-44-00W 1117.26 -1110.58 -121.96
FA N55-09-00W 660.08 -541.70 377.19
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.