2013-08-28 3 views
1

은 MediaWiki에서 제공하는 Lua의 버전입니다.
나는 이것이 루아의 표준이라고 생각한다.Scribunto (MediaWiki-hosted Lua)의 "42 ° 33'N, 1 ° 33'E"을 "42.55 | 1.55"로 변환 하시려면

나는이 형식에서 convert geographic coordinates하려는 :

42°33'N, 1°33'E 

...이 형식에 :

42.55|1.55 

어떻게 Scribunto에서이 작업을 수행하려면?

+0

[Module : Coordinates] (http://en.wikipedia.org/wiki/Module:Coordinates)는 이미 그렇게하지 않았습니까? – svick

+0

@NicolBolas : Fixed –

+0

@svick : 감사합니다. 'convert_dec2dms'이 (가) 내가 찾고있는 것 같습니다! –

답변

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 
+0

아마도'S'와'W'에 대한 좌표를 무효로 할 필요가있을 것입니다. – lhf