我是Perl的初学者,我有一个文本文件,其中包含一些地方(约400个坐标)的坐标,以十进制度表示,我将它们更改为度,分,秒。我的如下:
060305 1932 36.72 27.7853N 56.5446E 19.27 0.19
在这个“27.7853”和“56.5446”分别是纬度和经度。我用它来提取lat。和lon。但我无法改变循环中所有数据的格式。
my @latitude = $event =~ /\s+(\d+\.\d+)[N]{1}\s/mg;
my @longitude = $event =~ /\s(\d+\.\d+)[E]{1}\s/mg;
答案 0 :(得分:4)
我建议您使用Geo::Coordinates::Transform之类的内容。它支持几种坐标格式:
如果你自己进行计算,如果你不太挑剔就不会太难。如果您的输入坐标是0到360度(如格林威治小时角),并且您认为那是地球的周长(注意地球不是一个完美的球体)是360度,每个度数是60分钟,每分钟是60秒......然后......
my $decdeg = 187.645221;
my $deg = int($decdeg);
my $min = int(($decdeg - $deg) * 60);
my $sec = int(((($decdeg - $deg) * 60) - $min) * 60);
print "$deg degrees\n";
print "$min minutes\n";
print "$sec seconds\n";
会得到你:
187 degrees
38 minutes
42 seconds