Как уже отмечали другие, ваш шейп-файл использует другую систему координат, и вам нужно будет преобразовать его в широту / долготу, прежде чем слой geom_point()
сможет удобно расположиться над mymap
.
Файл .prj вашего шейп-файла начинается с:
PROJCS["BangladeshTM WGS1984",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984", ...
Ссылка здесь объясняет, что означает каждая часть, но для нашей цели вам просто нужно знать, что система координат проецируемого шейп-файла - "BangladeshTM WGS1984", то есть Bangladesh Transverse Mercator, закодированный как EPSG: 3106
.
Типичная система координат широта / долгота, которую ожидает ggmap()
, - WGS 84, закодированная как EPSG: 4326 .
TLDR: преобразование проекции ваших данных из EPSG: 3106 в EPSG: 4326 и построение графика соответственно.
counties.mpl <- readShapePoints("bgd_poi_healthfacilities_lged")
# define current projection
proj4string(counties.mpl) <- CRS("+init=epsg:3106") # Bangladesh Transverse Mercator system
# remap to lat / long projection
counties.mpl.remapped <- spTransform(counties.mpl, CRS("+init=epsg:4326"))
# extract the coordinates as a data frame.
df <- as.data.frame(counties.mpl.remapped@coords)
colnames(df) <- c("lon", "lat")
# plot results
mymap <- get_map(location="Bangladesh", zoom=6)
ggmap(mymap) +
geom_point(data = df)
