r - 使用R在谷歌地图中定位位置点的问题
问题描述
我在创建地图时遇到问题。我已经下载了一个形状文件——
提取数据后,我找到了一个形状文件。我正在尝试使用 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]))
有人可以帮我解决这个问题吗?提前致谢。
解决方案
正如其他人所指出的,您的 shapefile 使用不同的坐标系,并且您需要将其转换为 lat / lon,然后geom_point()
图层才能很好地位于mymap
.
您的 shapefile 的 .prj 文件以:
PROJCS["BangladeshTM WGS1984",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984", ...
此处的链接解释了每个部分的含义,但出于我们的目的,您只需要知道 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)
推荐阅读
- android - 从 Firebase 数据中检查和比较应用中的特定数据
- python - Python中的快速排序抛出RecursionError
- reactjs - 可以获取不同组件的父组件
- dart - Flutter:RenderBox 没有布局
- java - 尝试在 Java 运行时从 jar 文件加载类时出现 ClassNotFoundException
- git - 合并两个分支后,一些文件更改为旧版本,一些文件被删除
- mysql - 在 Docker 中配置 mysql
- java - 我想使用 eclipse gui,但我得到了错误的 java 版本
- c# - 带返回的空合并运算符 (??)
- http - 如何将 net/http.ResponseWriter 转换为 net/http.Response