如何使用perl更改坐标格式?

时间:2015-12-16 18:15:09

标签: perl

我是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;

1 个答案:

答案 0 :(得分:4)

我建议您使用Geo::Coordinates::Transform之类的内容。它支持几种坐标格式:

  • DMS度:分钟:秒(48 30 30,-117 30' 30")
  • DM Degrees:Decimal-Minutes(48 30.5,-117 30.5'),
  • DD Decimal-Degrees(48.5083333,-17.5083333)

如果你自己进行计算,如果你不太挑剔就不会太难。如果您的输入坐标是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