#!mathjax#

Space Station Map Projections

library('mapmisc', quietly=TRUE)
library('terra')
if(!exists('fact'))
  fact = 1
# uncomment for nicer images
# fact = 2 
## [1] "/var/folders/1s/zkmc02qn4k18r6jdtbb459hc0000gn/T//RtmpmPTDOX"
## [1] FALSE
worldMap = unwrap(worldMap)
x = vect(cbind(130,15), crs=crsLL)

if(FALSE) {
  okinawa = geocode("Okinawa, Japan")
  hk =  geocode("Hong Kong, China")
  guam = geocode("Guam")
} else {
okinawa = unwrap(new("PackedSpatVector", type = "points", crs = crsLL, 
    coordinates = structure(c(127.911468664084, 26.4748948), dim = 1:2, dimnames = list(
        NULL, c("x", "y"))), index = structure(c(1, 1, 0, 1), dim = c(1L, 
    4L), dimnames = list(NULL, c("geom", "part", "hole", "start"
    ))), attributes = structure(list(name = "Okinawa Island", 
        orig = "Okinawa, Japan", type = "island", category = "place", 
        importance = 0.544839401260831, place_id = 298674558L, 
        osm_type = "relation", osm_id = 4098955L, display_name = "沖縄本島, 沖縄県, 日本", 
        place_rank = 17L), class = "data.frame", row.names = c(NA, -1L))))
hk=unwrap(new("PackedSpatVector", type = "points", crs = crsLL, 
    coordinates = structure(c(114.1849161, 22.350627), dim = 1:2, dimnames = list(
        NULL, c("x", "y"))), index = structure(c(1, 1, 0, 1), dim = c(1L, 
    4L), dimnames = list(NULL, c("geom", "part", "hole", "start"
    ))), attributes = structure(list(name = "Hong Kong", orig = "Hong Kong, China", 
        type = "administrative", category = "boundary", importance = 0.964301726010044, 
        place_id = 368735620L, osm_type = "relation", osm_id = 913110L, 
        display_name = "香港 Hong Kong, 中国", place_rank = 6L), class = "data.frame", row.names = c(NA, -1L))))
guam = unwrap(new("PackedSpatVector", type = "points", crs = crsLL, 
    coordinates = structure(c(144.757551029721, 13.4501257), dim = 1:2, dimnames = list(
        NULL, c("x", "y"))), index = structure(c(1, 1, 0, 1), dim = c(1L, 
    4L), dimnames = list(NULL, c("geom", "part", "hole", "start"
    ))), attributes = structure(list(name = "Guam", orig = "Guam", 
        type = "island", category = "place", importance = 0.799784943797409, 
        place_id = 298225988L, osm_type = "relation", osm_id = 1152532L, 
        display_name = "Guam, Chalan Pago-Ordot Municipality, Guam, United States", 
        place_rank = 17L), class = "data.frame", row.names = c(NA, -1L))))
}
myProj = tpers(x=vect(c(x,hk)), hKm = 2*1000, tilt =-15, axis='seu')
## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)
## Warning: Reprojection failed, err = 2050, further errors will be suppressed on
## the transform object. (GDAL error 1)
## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)
## Warning: Reprojection failed, err = 2050, further errors will be suppressed on
## the transform object. (GDAL error 1)
map.new(attributes(myProj)$regionLL, buffer=2)
plot(attributes(myProj)$crop, add=TRUE, col='red')
plot(project(worldMap, crsLL), add=TRUE)
text(guam, 'guam')
text(hk, 'hk')
text(okinawa, 'Okinawa')

plot of chunk mapLL

  xProj = project(guam, myProj)
  yProj = project(hk, myProj)
  okinawaProj = project(okinawa, myProj)
myMap = openmap(myProj,  zoom=2,fact=2)
map.new(myProj, lwd=3)
plot(myMap, add=TRUE)
plot(wrapPoly(worldMap, myProj), add=TRUE)

plot of chunk background

myProjDateLine = tpers(x=c(175,75), azi=40, hKm = 2*1000, tilt =-15, axis='seu')
## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)
## Warning: Reprojection failed, err = 2050, further errors will be suppressed on
## the transform object. (GDAL error 1)
myMapDateLine = openmap(myProjDateLine, zoom=2, fact=1)
map.new(myProjDateLine)
plot(myMapDateLine, add=TRUE)
plot(wrapPoly(worldMap, myProjDateLine), add=TRUE)

plot of chunk projOverDatelineNorth

myProjDateLine = tpers(x=c(-165,0), azi=-70, hKm = 30*1000, tilt =-15, axis='seu')
## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)
## Warning: Reprojection failed, err = 2050, further errors will be suppressed on
## the transform object. (GDAL error 1)
## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)
## Warning: Reprojection failed, err = 2050, further errors will be suppressed on
## the transform object. (GDAL error 1)
myMapDateLine = openmap(myProjDateLine, zoom=2, fact=1, verbose=TRUE)
## http://tile.openstreetmap.org/ 
## http://tile.openstreetmap.org/ 
## tile  /var/folders/1s/zkmc02qn4k18r6jdtbb459hc0000gn/T//RtmpmPTDOX/org/2/0/0.png  cached
## tile  /var/folders/1s/zkmc02qn4k18r6jdtbb459hc0000gn/T//RtmpmPTDOX/org/2/0/1.png  cached
## downloading  http://tile.openstreetmap.org/2/0/2.png 
## downloading  http://tile.openstreetmap.org/2/0/3.png 
## tile  /var/folders/1s/zkmc02qn4k18r6jdtbb459hc0000gn/T//RtmpmPTDOX/org/2/1/1.png  cached
## downloading  http://tile.openstreetmap.org/2/1/2.png 
## tile  /var/folders/1s/zkmc02qn4k18r6jdtbb459hc0000gn/T//RtmpmPTDOX/org/2/3/0.png  cached
## tile  /var/folders/1s/zkmc02qn4k18r6jdtbb459hc0000gn/T//RtmpmPTDOX/org/2/3/1.png  cached
## tile  /var/folders/1s/zkmc02qn4k18r6jdtbb459hc0000gn/T//RtmpmPTDOX/org/2/3/2.png  cached
## downloading  http://tile.openstreetmap.org/2/3/3.png 
## reprojecting
## reprojecting:   3  cycles:1  2  2
map.new(myProjDateLine)
plot(myMapDateLine, add=TRUE)
plot(wrapPoly(worldMap, myProjDateLine), add=TRUE)

plot of chunk projOverDateline

myProjDateLine = tpers(x=c(175,-85), azi=40, hKm = 20*1000, tilt =-15, axis='seu')
## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)

## Warning: Point outside of projection domain (GDAL error 1)
## Warning: Reprojection failed, err = 2050, further errors will be suppressed on
## the transform object. (GDAL error 1)
myMapDateLine = openmap(myProjDateLine, zoom=2)
map.new(myProjDateLine)
plot(myMapDateLine, add=TRUE)
plot(wrapPoly(worldMap, myProjDateLine), add=TRUE)

plot of chunk projOverDatelineSouth

  map.new(myProj, bg='black', buffer=2*100*1000)
  plot(myMap, add=TRUE)
  plot(wrapPoly(worldMap, myProj), add=TRUE)  

  gridlinesWrap(myProj, col='orange', 
      norths=seq(-40,40,by=10), easts=seq(-150,180,by=10),
      lty=2)
  
  points(xProj, col='red', pch=16, cex=2)
  text(xProj, 
      as.character(xProj$name),
      pos=2, col='red')
  
  points(okinawaProj, col='red', pch=16, cex=2)
  text(okinawaProj, 
      as.character(okinawaProj$name),
      pos=2, col='red')
  
  points(yProj, col='red', pch=16, cex=2)
  text(yProj, 
      as.character(yProj$name),
      pos=2, col='red')

plot of chunk map

h