如何在Scribunto(MediaWiki-hosted Lua)中将“42°33'N,1°33'E”转换为“42.55 | 1.55”

时间:2013-08-28 07:34:33

标签: lua mediawiki gis scribunto

Scribunto是一个MediaWiki托管的Lua版本 我相信这是相当标准的Lua。

我希望convert geographic coordinates采用以下格式:

42°33'N, 1°33'E

...以这种格式:

42.55|1.55

如何在Scribunto中执行此操作?

1 个答案:

答案 0 :(得分:2)

这假定输入字符串严格地符合帖子中的表格。如果存在任何可变性,例如它可以省略分钟,包括秒,纬度和经度可以不同的方式分开,或者其他什么,模式需要改变。

function translate_coords(str)
    assert(type(str)=="string")
    local patt = "(%d+)°(%d+)'([NS]), (%d+)°(%d+)'([WE])"
    local latd,latm,latdir,lngd,lngm,lngdir = string.match(str,patt)
    assert(latd and latm and latdir)
    assert(lngd and lngm and lngdir)
    latd = latdir=="S" and -latd or latd
    lngd = lngdir=="W" and -lngd or lngd
    return ""..(latd+latm/60).."|"..(lngd+lngm/60)

end