Проблема с расположением точек на карте Google с помощью R - PullRequest
0 голосов
/ 02 сентября 2018

Я столкнулся с проблемой при создании карты. Я скачал файл формы из -

ссылка на место: "https://data.humdata.org/dataset/80920682-bbb5-421e-b7ac-f89b7b640a5c/resource/c545d196-bc2c-44ed-9028-316ab080a41c"

ссылка на zip-файл: https://data.humdata.org/dataset/80920682-bbb5-421e-b7ac-f89b7b640a5c/resource/c545d196-bc2c-44ed-9028-316ab080a41c/download/bgd_poi_healthfacilities_lged.zip

После извлечения данных я нашел файл формы. Я пытаюсь нанести этот файл формы на карту Google с помощью кода R. Но это ничего не показывает?

library(maptools)
library(ggmap)

counties.mpl <- readShapePoints("bgd_poi_healthfacilities_lged")

#Coordinates looks like:

counties.mpl@coords

       coords.x1 coords.x2
    0  531533.8   2524464
    1  531004.7   2531410
    2  533228.5   2525061
    3  531723.1   2488972
    4  532347.8   2492098
    5  518104.8   2520361

#map code:
mymap <- get_map(location="Bangladesh", zoom=6)
ggmap(mymap)+
  geom_point(data=counties.mpl@coords, 
             aes(x=counties.mpl@coords[,1], y=counties.mpl@coords[,2]))

Может ли кто-нибудь помочь мне решить эту проблему? Заранее спасибо.

1 Ответ

0 голосов
/ 03 сентября 2018

Как уже отмечали другие, ваш шейп-файл использует другую систему координат, и вам нужно будет преобразовать его в широту / долготу, прежде чем слой 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)

plot

...