首页 > 解决方案 > 使用ggplot转换的形状文件中的纬度和经度值越界

问题描述

我正在尝试使用PA Geospatial Data Clearinghouse的数据绘制 Pennyslvania 县的地图。我读入形状文件,然后将其转换为如下数据框:

setwd(proj_path)
dsn <- "Data/PaCounty2019_07/PaCounty2019_07.shp"
map <- readOGR(dsn)
map_df <- tidy(map)

然后我像这样绘制它:

ggplot() +
geom_path(data = map_df, aes(x = long, y = lat, group = group)) +
labs(title = "ggplot map of pa counties")

这行得通,但纬度/经度尺度非常奇怪。纬度从 -100,000 到 150,000,经度从 -2e+05 到 23+05。如果我尝试在地图上绘制任何点,它们看起来都在 [0,0],因为这些点的纬度和经度值当然都是 <180。 这里有奇怪比例的 PA 地图图像

为什么天平如此扭曲?我该如何解决?

标签: rggplot2latitude-longitude

解决方案


您需要将 shapefile 转换为正常的纬度/经度投影。在定义map_df...之前执行此操作

map <- spTransform(map, CRS("+proj=longlat +ellps=WGS84 +datum=WGS84"))

在此处输入图像描述


推荐阅读