# calculate geographical positions of 3rd level meshcode # input: keycode: 3rd level meshcode (integer) # output: latitude_s, longitude_w, latitude_n, longitude_e (float) meshcode3_to_latlong <- function(keycode){ p <- floor(keycode/1000000) keycode <- keycode-p*1000000 u <- floor(keycode/10000) keycode <- keycode-u*10000 q <- floor(keycode/1000) keycode <- keycode-q*1000 v <- floor(keycode/100) keycode <- keycode-v*100 r <- floor(keycode/10) keycode <- keycode-r*10 w <- floor(keycode) latitude_s <- p*40/60+q*5/60+r*30/3600 longitude_w <- 100+u+v*7.5/60+w*45/3600 latitude_n <- latitude_s + 30/3600 longitude_e <- longitude_w + 45/3600 res<-data.frame(latitude_s=latitude_s,longitude_w=longitude_w,latitude_n=latitude_n,longitude_e=longitude_e) return(res) } keycode=c(52351502) for(k in keycode){ res <- meshcode3_to_latlong(k) cat(sprintf("%d,%f,%f,%f,%f\n",k,res$latitude_s,res$longitude_w,res$latitude_n,res$longitude_e)) }