4

我正在尝试在除经纬度以外的任何投影中使用 geom_sf() 绘制多边形。

我正在使用geom_sf() 导入数据集的手册页中的示例:

nc <- sf::st_read(system.file("shape/nc.shp", package = "sf"), quiet = TRUE)

从 latlong 转换为 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绘制投影多边形。我究竟做错了什么?

4

2 回答 2

9

另请参阅https://github.com/tidyverse/ggplot2/issues/2200并尝试

ggplot() +  geom_sf(data = nc_3857, colour = "red", fill = NA) +
   coord_sf(datum=st_crs(3857))

这使

在此处输入图像描述

于 2017-07-26T20:57:48.600 回答
2

它在请求的投影中绘制它,它只是覆盖了一个经纬网。

如果您尝试对挪威进行类似的操作,例如,靠近北极,您会看到显示的 XY 坐标是变换的坐标,但覆盖的格线是经纬线。这是一张挪威地图,位于 epsg 3035(圆锥形)坐标中:

在此处输入图像描述

所以它正在绘制投影多边形。如果这里的经纬线是一个网格,那么它将在经纬投影中绘制坐标。

文档中唯一提到的 graticules 是一个 arg to 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()

使用 geom_sf 检查 ggplot2 问题以获得备用经纬网,如果那里没有任何内容,请添加问题。

于 2017-07-03T15:52:05.007 回答