【发布时间】:2016-06-01 07:29:54
【问题描述】:
我有一个非常简单的问题:我需要用地理坐标转换文件,比如
Lat Long
50 0 50 35 1 40
50 2 50 35 10 20
50 3 1 35 13 22
50 2 38 35 14 40
49 59 6 35 13 22
49 57 14 35 13 21
49 57 10 35 13 0
49 57 0 35 6 20
到
Lat Long
50.01389,35.02778
50.04722,35.17222
etc.
数学很简单:我们必须将分钟(在本例中为 0 和 1)除以 60,秒(50 和 40)除以 3600,然后将这些数字相加,我们将得到度数的余数(50 和 35)。
这是我的 numpy 脚本。我想,这样一个简单的转换看起来很大,但是我不知道如何更简单地做到这一点。另外我不知道如何结束这个脚本,所以它可以做它应该做的。现在它以添加分钟和秒结束。
import sys
import numpy as np
filename = input('Please enter the file\'s name: ')
with open(filename, "r") as f:
sys.stdout = open('%s (converted).txt' % f.name, 'a')
data = np.loadtxt(f)
degree_lat, degree_long = data[:, 0], data[:, 3]
min_lat, sec_lat, min_long, sec_long = \
(data[:, 1] / 60), (data[:, 2] / 3600), (data[:, 4] / 60), (data[:, 5] / 3600)
remainder_lat, remainder_long = min_lat + sec_lat, min_long + sec_long
degree_result_lat = degree_lat + remainder_lat
degree_result_long = degree_long + remainder_long
任何建议将不胜感激!感谢并为业余问题感到抱歉。
【问题讨论】:
-
你能贴几行你的输入文件吗?还有你想用
sys.stdout = open...实现什么? -
这是一个关于如何优化/最小化代码的问题吗?那么你可能想查看codereview。
-
@NilsWerner 我刚刚更新了这个主题。您可以在其顶部找到输入文件的示例。
-
@OliverW。谢谢你的链接,我会的)
-
那个脚本和你提供的数据没有运行,它失败了
ValueError: could not convert string to float: Lat。
标签: python numpy coordinates coordinate-systems coordinate-transformation