如何解决将点添加到SF映射时ggplot的行为不一致
我要使用ggplot
向sf
地图添加点。输入以下代码:
ggplot(data = shapefile) +
geom_sf()+
geom_point(x = -70.67,y =-33.45,size = 10,colour = "red")
此代码对于我的一个shapefile可以正常工作,但对另一个shapefile则不能正常工作,我不确定为什么。这是我的第一个shapefile的代码输出:
这是代码与第二个shapefile的输出:
第二个呼叫为何无法识别坐标的可能原因?我看到的两个图之间的唯一区别是,在第一个图中,经度和纬度是用数字标注的,而在第二个图中,则分别以北/南和东/西方向标注。
解决方法
不一致的行为是由于每个shapefile的投影不同所致。通常,您需要提供与您使用的投影单位匹配的点位置。您可以将这些点转换为shapefile的投影,或者,如果您不关心数据是否在地理坐标系中,则可以转换为4326,在WGS84基准面上为经/纬度。
方法1:维护shapefile的投影。此方法会将您的点转换为空间sf
数据类型,因此您可以使用geom_sf
进行绘制。
pts <- st_point(c(-70.67,-33.45)) %>% st_sfc() %>% st_as_sf(crs=st_crs(4326))
ggplot(data = shapefile) +
geom_sf() +
geom_sf(data = pts,size = 10,colour = "red")
方法2:将shapefile转换为EPSG 4326。
ggplot(data = shapefile %>% st_transform(st_crs(4326))) +
geom_sf() +
geom_point(x = -70.67,y =-33.45,colour = "red")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。