使用geom_sf()在任何投影下绘制sf对象,除了经纬度。

5
我想使用geom_sf()函数绘制一个多边形,但不是在经纬度下的投影中。
我正在使用geom_sf()函数手册中找到的示例导入数据集。
nc <- sf::st_read(system.file("shape/nc.shp", package = "sf"), quiet = TRUE)

从经纬度转换为EPSG:3857

nc_3857 <- sf::st_transform(nc, "+init=epsg:3857")

最后使用ggplot2绘制图表,并定义绘图的crs。
ggplot() +
 geom_sf(data = nc_3857, colour = "red", fill = NA) +
 coord_sf(crs=st_crs(3857))

我不断地得到一个使用WGS84(即EPSG:4326)的地图,其纬度和经度轴。我希望将轴转换为米,因此需要ggplot绘制投影多边形。我做错了什么?

2个回答

11

2
它正在请求的投影中绘制它,只是叠加了经纬度网格线。例如,如果您尝试对挪威进行类似的操作,由于其靠近北极,您会发现显示的X-Y坐标是转换后的坐标,但叠加的经纬度网格却是经纬度坐标系。这是一个挪威地图,它使用epsg 3035(圆锥形)坐标:enter image description here所以它确实在绘制投影多边形。如果这里的经纬线是网格线,那么它将会在经纬度投影中绘制坐标。文档中唯一提到经纬网格的地方是coord_sf的参数。
datum: CRS that provides datum to use when generating graticules

这句话并没有表达很多内容。

你只需要一个笛卡尔坐标系吗?那我们试试:

> ggplot() +  geom_sf(data = rp, colour = "red", fill = NA) + coord_cartesian()
Error: geom_sf() must be used with coord_sf()

请检查ggplot2问题,以查找具有geom_sf的备用网格线,并在那里没有任何内容的情况下添加问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接