Created
August 22, 2017 08:39
-
-
Save ymattu/c0605328b6c151bc41b6c258a98253ec to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# http://www.fttsus.jp/worldgrids/ja/our_library/ | |
# calculate 3rd mesh code | |
cal_meshcode <- function(latitude, longitude){ | |
return(cal_meshcode3(latitude,longitude)) | |
} | |
# calculate 1st mesh code | |
cal_meshcode1 <- function(latitude, longitude){ | |
if(latitude < 0){ | |
o <- 4 | |
} | |
else{ | |
o <- 0 | |
} | |
if(longitude < 0){ | |
o <- o + 2 | |
} | |
if(abs(longitude) >= 100) o <- o + 1 | |
z <- o %% 2 | |
y <- ((o - z)/2) %% 2 | |
x <- (o - 2*y - z)/4 | |
# | |
o <- o + 1 | |
# | |
latitude <- (1-2*x)*latitude | |
longitude <- (1-2*y)*longitude | |
# | |
p <- floor(latitude*60/40) | |
u <- floor(longitude-100*z) | |
# | |
if(u < 10){ | |
if(p < 10){ | |
mesh <- paste(o,"00",p,"0",u,sep="") | |
}else{ | |
if(p < 100){ | |
mesh <- paste(o,"0",p,"0",u,sep="") | |
} | |
else{ | |
mesh <- paste(o,p,"0",u,sep="") | |
} | |
} | |
} | |
else{ | |
if(p < 10){ | |
mesh <- paste(o,"00",p,u,sep="") | |
}else{ | |
if(p < 100){ | |
mesh <- paste(o,"0",p,u,sep="") | |
} | |
else{ | |
mesh <- paste(o,p,u,sep="") | |
} | |
} | |
} | |
return(mesh) | |
} | |
# calculate 2nd mesh code | |
cal_meshcode2 <- function(latitude, longitude){ | |
if(latitude < 0){ | |
o <- 4 | |
} | |
else{ | |
o <- 0 | |
} | |
if(longitude < 0){ | |
o <- o + 2 | |
} | |
if(abs(longitude) >= 100) o <- o + 1 | |
z <- o %% 2 | |
y <- ((o - z)/2) %% 2 | |
x <- (o - 2*y - z)/4 | |
# | |
o <- o + 1 | |
# | |
latitude <- (1-2*x)*latitude | |
longitude <- (1-2*y)*longitude | |
# | |
p <- floor(latitude*60/40) | |
a <- (latitude*60/40-p)*40 | |
q <- floor(a/5) | |
u <- floor(longitude-100*z) | |
f <- longitude-100*z-u | |
v <- floor(f*60/7.5) | |
# | |
if(u < 10){ | |
if(p < 10){ | |
mesh <- paste(o,"00",p,"0",u,q,v,sep="") | |
}else{ | |
if(p < 100){ | |
mesh <- paste(o,"0",p,"0",u,q,v,sep="") | |
} | |
else{ | |
mesh <- paste(o,p,"0",u,q,v,sep="") | |
} | |
} | |
} | |
else{ | |
if(p < 10){ | |
mesh <- paste(o,"00",p,u,q,v,sep="") | |
}else{ | |
if(p < 100){ | |
mesh <- paste(o,"0",p,u,q,v,sep="") | |
} | |
else{ | |
mesh <- paste(o,p,u,q,v,sep="") | |
} | |
} | |
} | |
return(mesh) | |
} | |
# calculate 3rd mesh code | |
cal_meshcode3 <- function(latitude, longitude){ | |
if(latitude < 0){ | |
o <- 4 | |
} | |
else{ | |
o <- 0 | |
} | |
if(longitude < 0){ | |
o <- o + 2 | |
} | |
if(abs(longitude) >= 100) o <- o + 1 | |
z <- o %% 2 | |
y <- ((o - z)/2) %% 2 | |
x <- (o - 2*y - z)/4 | |
# | |
o <- o + 1 | |
# | |
latitude <- (1-2*x)*latitude | |
longitude <- (1-2*y)*longitude | |
# | |
p <- floor(latitude*60/40) | |
a <- (latitude*60/40-p)*40 | |
q <- floor(a/5) | |
b <- (a/5-q)*5 | |
r <- floor(b*60/30) | |
c <- (b*60/30-r)*30 | |
u <- floor(longitude-100*z) | |
f <- longitude-100*z-u | |
v <- floor(f*60/7.5) | |
g <- (f*60/7.5-v)*7.5 | |
w <- floor(g*60/45) | |
h <- (g*60/45-w)*45 | |
# | |
if(u < 10){ | |
if(p < 10){ | |
mesh <- paste(o,"00",p,"0",u,q,v,r,w,sep="") | |
}else{ | |
if(p < 100){ | |
mesh <- paste(o,"0",p,"0",u,q,v,r,w,sep="") | |
} | |
else{ | |
mesh <- paste(o,p,"0",u,q,v,r,w,sep="") | |
} | |
} | |
} | |
else{ | |
if(p < 10){ | |
mesh <- paste(o,"00",p,u,q,v,r,w,sep="") | |
}else{ | |
if(p < 100){ | |
mesh <- paste(o,"0",p,u,q,v,r,w,sep="") | |
} | |
else{ | |
mesh <- paste(o,p,u,q,v,r,w,sep="") | |
} | |
} | |
} | |
return(mesh) | |
} | |
# calculate 4th mesh code | |
cal_meshcode4 <- function(latitude, longitude){ | |
if(latitude < 0){ | |
o <- 4 | |
} | |
else{ | |
o <- 0 | |
} | |
if(longitude < 0){ | |
o <- o + 2 | |
} | |
if(abs(longitude) >= 100) o <- o + 1 | |
z <- o %% 2 | |
y <- ((o - z)/2) %% 2 | |
x <- (o - 2*y - z)/4 | |
# | |
o <- o + 1 | |
# | |
latitude <- (1-2*x)*latitude | |
longitude <- (1-2*y)*longitude | |
# | |
p <- floor(latitude*60/40) | |
a <- (latitude*60/40-p)*40 | |
q <- floor(a/5) | |
b <- (a/5-q)*5 | |
r <- floor(b*60/30) | |
c <- (b*60/30-r)*30 | |
s2u <- floor(c/15) | |
u <- floor(longitude-100*z) | |
f <- longitude-100*z-u | |
v <- floor(f*60/7.5) | |
g <- (f*60/7.5-v)*7.5 | |
w <- floor(g*60/45) | |
h <- (g*60/45-w)*45 | |
s2l <- floor(h/22.5) | |
s2 <- s2u*2+s2l+1 | |
# | |
if(u < 10){ | |
if(p < 10){ | |
mesh <- paste(o,"00",p,"0",u,q,v,r,w,s2,sep="") | |
}else{ | |
if(p < 100){ | |
mesh <- paste(o,"0",p,"0",u,q,v,r,w,s2,sep="") | |
} | |
else{ | |
mesh <- paste(o,p,"0",u,q,v,r,w,s2,sep="") | |
} | |
} | |
} | |
else{ | |
if(p < 10){ | |
mesh <- paste(o,"00",p,u,q,v,r,w,s2,sep="") | |
}else{ | |
if(p < 100){ | |
mesh <- paste(o,"0",p,u,q,v,r,w,s2,sep="") | |
} | |
else{ | |
mesh <- paste(o,p,u,q,v,r,w,s2,sep="") | |
} | |
} | |
} | |
return(mesh) | |
} | |
# calculate 5rd mesh code | |
cal_meshcode5 <- function(latitude, longitude){ | |
if(latitude < 0){ | |
o <- 4 | |
} | |
else{ | |
o <- 0 | |
} | |
if(longitude < 0){ | |
o <- o + 2 | |
} | |
if(abs(longitude) >= 100) o <- o + 1 | |
z <- o %% 2 | |
y <- ((o - z)/2) %% 2 | |
x <- (o - 2*y - z)/4 | |
# | |
o <- o + 1 | |
# | |
latitude <- (1-2*x)*latitude | |
longitude <- (1-2*y)*longitude | |
# | |
p <- floor(latitude*60/40) | |
a <- (latitude*60/40-p)*40 | |
q <- floor(a/5) | |
b <- (a/5-q)*5 | |
r <- floor(b*60/30) | |
c <- (b*60/30-r)*30 | |
s2u <- floor(c/15) | |
d <- (c/15-s2u)*15 | |
s4u <- floor(d/7.5) | |
u <- floor(longitude-100*z) | |
f <- longitude-100*z-u | |
v <- floor(f*60/7.5) | |
g <- (f*60/7.5-v)*7.5 | |
w <- floor(g*60/45) | |
h <- (g*60/45-w)*45 | |
s2l <- floor(h/22.5) | |
i <- (h/22.5-s2l)*22.5 | |
s4l <- floor(i/11.25) | |
s2 <- s2u*2+s2l+1 | |
s4 <- s4u*2+s4l+1 | |
# | |
if(u < 10){ | |
if(p < 10){ | |
mesh <- paste(o,"00",p,"0",u,q,v,r,w,s2,s4,sep="") | |
}else{ | |
if(p < 100){ | |
mesh <- paste(o,"0",p,"0",u,q,v,r,w,s2,s4,sep="") | |
} | |
else{ | |
mesh <- paste(o,p,"0",u,q,v,r,w,s2,s4,sep="") | |
} | |
} | |
} | |
else{ | |
if(p < 10){ | |
mesh <- paste(o,"00",p,u,q,v,r,w,s2,s4,sep="") | |
}else{ | |
if(p < 100){ | |
mesh <- paste(o,"0",p,u,q,v,r,w,s2,s4,sep="") | |
} | |
else{ | |
mesh <- paste(o,p,u,q,v,r,w,s2,s4,sep="") | |
} | |
} | |
} | |
return(mesh) | |
} | |
# calculate 6rd mesh code | |
cal_meshcode6 <- function(latitude, longitude){ | |
if(latitude < 0){ | |
o <- 4 | |
} | |
else{ | |
o <- 0 | |
} | |
if(longitude < 0){ | |
o <- o + 2 | |
} | |
if(abs(longitude) >= 100) o <- o + 1 | |
z <- o %% 2 | |
y <- ((o - z)/2) %% 2 | |
x <- (o - 2*y - z)/4 | |
# | |
o <- o + 1 | |
# | |
latitude <- (1-2*x)*latitude | |
longitude <- (1-2*y)*longitude | |
# | |
p <- floor(latitude*60/40) | |
a <- (latitude*60/40-p)*40 | |
q <- floor(a/5) | |
b <- (a/5-q)*5 | |
r <- floor(b*60/30) | |
c <- (b*60/30-r)*30 | |
s2u <- floor(c/15) | |
d <- (c/15-s2u)*15 | |
s4u <- floor(d/7.5) | |
e <- (d/7.5-s4u)*7.5 | |
s8u <- floor(e/3.75) | |
u <- floor(longitude-100*z) | |
f <- longitude-100*z-u | |
v <- floor(f*60/7.5) | |
g <- (f*60/7.5-v)*7.5 | |
w <- floor(g*60/45) | |
h <- (g*60/45-w)*45 | |
s2l <- floor(h/22.5) | |
i <- (h/22.5-s2l)*22.5 | |
s4l <- floor(i/11.25) | |
j <- (i/11.25-s4l)*11.25 | |
s8l <- floor(j/5.625) | |
s2 <- s2u*2+s2l+1 | |
s4 <- s4u*2+s4l+1 | |
s8 <- s8u*2+s8l+1 | |
# | |
if(u < 10){ | |
if(p < 10){ | |
mesh <- paste(o,"00",p,"0",u,q,v,r,w,s2,s4,s8,sep="") | |
}else{ | |
if(p < 100){ | |
mesh <- paste(o,"0",p,"0",u,q,v,r,w,s2,s4,s8,sep="") | |
} | |
else{ | |
mesh <- paste(o,p,"0",u,q,v,r,w,s2,s4,s8,sep="") | |
} | |
} | |
} | |
else{ | |
if(p < 10){ | |
mesh <- paste(o,"00",p,u,q,v,r,w,s2,s4,s8,sep="") | |
}else{ | |
if(p < 100){ | |
mesh <- paste(o,"0",p,u,q,v,r,w,s2,s4,s8,sep="") | |
} | |
else{ | |
mesh <- paste(o,p,u,q,v,r,w,s2,s4,s8,sep="") | |
} | |
} | |
} | |
return(mesh) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment