【发布时间】:2013-11-19 06:10:40
【问题描述】:
我的输入是一个制表符分隔的文本文件,在 D-M-S 中带有 lat long。 我要求输出为十进制度 我在 php 中有代码,但这计算起来很慢。 这可以使用 awk 更快地完成吗?
node name id latitude longitude seq
nodex name1 70 N53-24-31.126 W6-20-46.982 59126
nodex name2 173 N53-20-28.885 W6-14-52.400 16190X
nodex name3 173 N53-20-28.885 W6-14-52.400 16191T
我的带有公式的 PHP 代码:
if ($dirLat == 'N') {$signLat = '+';} Else {$signLat = '-';}
if ($dirLat == 'E') {$signLon = '+';} Else {$signLon = '-';}
$latitudeDecimalDeg = $signLat . ($degLat + ($minLat/60) + ($secLat/3600));
$longitudeDecimalDeg = $signLon . ($degLon + ($minLon/60) + ($secLon/3600));
【问题讨论】:
-
awk 中的变量名称不使用前导
$符号,并且字符串连接不需要.。只是longDecDeg = signLon (degLon + (minLon/60) + (secLon/3600))将非常接近。然后是printf("%4.2fn\n", longDecDeg)。祝你好运。 -
这是我的 php 代码 :)
-
很难相信那个代码会导致你的性能问题。也许您的脚本中有其他内容,例如您在哪里分配上面使用的变量?
-
@EdMorton 该表非常大,有超过 10k 条记录。使用 php 更新每条记录可能是它速度慢的原因