Связать пространственные точки с линией пересечения меридиана 180 °? - PullRequest
0 голосов
/ 11 июня 2018

Я рисую несколько траекторий полета на интерактивной карте через пакет tmap.И я хочу создать буфет на 5 морских миль одновременно вокруг траектории полета.

Но когда эти точки расположены вокруг меридиана 180 °, линия будет связана с другой ориентацией.

The map outcome sample is here

Как я могу переместить интерактивную карту в подходящий центр и избежать неправильной привязки трека?

У меня есть данные о полете в направлении на запад, а также некоторые в направлении на восток.Теперь полет, который направляется на запад, составлен правильно, как показано ниже.

The map outcome sample 2

Я хочу, чтобы R всегда мог построить карту с правильным центром.

Образцы данных CSVздесь

data sample on google drive

И мой код, как показано ниже

library(tmap)
library(rgeos)
library(sp)
temp<-read.csv("demo1.csv")

sp.data <- SpatialPointsDataFrame(temp[,c("LONGITUDE","LATITUDE")],temp,proj4string=CRS("+init=epsg:4326"))  

tmap_mode("view")
ls1 <- Lines(Line(temp[,c("LONGITUDE","LATITUDE")]),ID=as.character("demo1"))  
OFPtrack <- SpatialLines(list(ls1),proj4string=CRS("+init=epsg:4326"))
OFPtrack.moll <- sp::spTransform(OFPtrack, CRSobj = "+proj=moll")
  #create buffer polygon
  line_buffers <- rgeos::gBuffer(OFPtrack.moll,width=9260,byid=T) 
#9260meters=5 Nautical Miles  
  m <- tm_shape(OFPtrack)+tm_lines()+
   tm_shape(line_buffers)+tm_borders(alpha=0.4)+tm_fill(col="grey",alpha=0.4)+
   tm_shape(sp.data)+tm_dots(col="grey",border.lwd=0.1)
...