【问题标题】:Problem in positioning the location points in google map using R使用R在谷歌地图中定位位置点的问题
【发布时间】:2018-09-03 10:51:02
【问题描述】:

我在创建地图时遇到问题。我已经从 -

下载了一个形状文件

位置链接:“https://data.humdata.org/dataset/80920682-bbb5-421e-b7ac-f89b7b640a5c/resource/c545d196-bc2c-44ed-9028-316ab080a41c

压缩文件链接:https://data.humdata.org/dataset/80920682-bbb5-421e-b7ac-f89b7b640a5c/resource/c545d196-bc2c-44ed-9028-316ab080a41c/download/bgd_poi_healthfacilities_lged.zip

提取数据后,我找到了一个形状文件。我正在尝试使用 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]))

有人可以帮我解决这个问题吗?提前致谢。

【问题讨论】:

  • 这些值看起来不像纬度和经度。
  • 我想是的。可能他们是 UTM。
  • 它们是,但我们需要知道在哪个系统中。
  • prj 文件显示 GCS_WGS_1984

标签: r ggmap


【解决方案1】:

正如其他人所指出的,您的 shapefile 使用不同的坐标系,并且您需要将其转换为纬度/经度,然后 geom_point() 层才能很好地位于 mymap 之上。

您的 shapefile 的 .prj 文件以:

PROJCS["BangladeshTM WGS1984",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984", ...

链接here 解释了每个部分的含义,但出于我们的目的,您只需要知道 shapefile 的投影坐标系是“BangladeshTM WGS1984”,即孟加拉国横轴墨卡托,编码为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)

【讨论】:

  • 非常感谢。
猜你喜欢
  • 2017-12-13
  • 2017-08-08
  • 2018-08-30
  • 1970-01-01
  • 2020-06-14
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多