如何使用 WGS84 和 R 中的 ggplot 获得相等的 lan lat 网格

问题描述 投票:0回答:2

我使用熟悉R和ArcGIS pro。我想使用 ggplot 在 R 中使用 WGS84 绘制地图。

当缩放到德国时,我在 ArcGIS Pro 中获得了相同的经纬度网格。但我无法使用 ggplot2 使用 WGS84 在 R 中获得相等的网格。

以下是我正在尝试的:

library("ggplot2")
library("rnaturalearth")
library("rnaturalearthdata")
library("terra")
library("sf")

world <- ne_countries(scale = "medium", returnclass = "sf")
world_projected <- st_transform(world, crs("epsg:4326"))

ggplot(data = world_projected) +
  geom_sf(fill = "transparent") +
  theme(
    panel.grid.major = element_line(colour = alpha("black", 0.1), linewidth=1, linetype = 1)
  ) +
  coord_sf(xlim = c(5, 16), ylim = c(46, 56), default_crs = crs("epsg:4326"))

我在 ArcGIS Pro 中获得的内容

enter image description here

我在 R 中得到什么

enter image description here

提前致谢。

帕拉夫

r ggplot2 gis wgs84
2个回答
1
投票

看起来您想绘制一个等距圆柱投影。这很简单,但您也需要将 x 和 y 范围转换为正确的投影:

library(ggplot2)
library(rnaturalearth)
library(sf)

world <- ne_countries(scale = "medium", returnclass = "sf")

coords <- st_sf(a = 1:2, geom = st_sfc(st_point(c(5, 46)), st_point(c(16, 56))), 
                crs = 4326) |>
                st_transform(crs = 4087) |>
                st_coordinates()

ggplot(data = st_transform(world, crs = 4087)) +
  geom_sf(fill = "transparent") +
  coord_sf(xlim = coords[,1], ylim = coords[,2]) +
  theme(panel.grid.major = element_line(colour = alpha("black", 0.1), 
                                        linewidth = 1)
  ) 


0
投票

另一个选项可以是将crs全部放在一起..这将自动创建一个方形砂砾来绘制

ggplot(data = world %>% sf::st_set_crs(NA)) +
  geom_sf(fill = "transparent") +
  theme(
    panel.grid.major = element_line(colour = alpha("black", 0.1), linewidth=1, linetype = 1)
  ) +
  coord_sf(xlim = c(5, 16), ylim = c(46, 56), default_crs = crs("epsg:4326"))

© www.soinside.com 2019 - 2024. All rights reserved.