You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改sf对象的bounding box?瑞典选区GeoJSON数据可视化异常问题排查

问题根源与解决方案

你遇到的问题并非需要修改bounding box,而是GeoJSON文件的坐标参考系统(CRS)标注错误导致的:

  • 文件里标注的是WGS84(经纬度,坐标范围应该是经度-180180、纬度-9090),但实际存储的坐标是UTM格式的米制数值(你的bounding box显示x在59万到70万之间,y在658万到672万之间),这种不匹配让sf和ggplot2识别混乱,才出现了警告和异常可视化。

具体解决步骤

1. 确认正确的CRS

瑞典乌普萨拉省所在区域属于UTM 33N投影,对应的EPSG代码是32633。

2. 修正数据的CRS并可视化

先把错误的WGS84标注替换为正确的UTM投影,之后如果需要转成经纬度格式(WGS84)再做转换即可。修正后的代码如下:

library(sf)
library(ggplot2)

# 下载并解压数据
url <- "https://www.val.se/download/18.14c1f613181ed0043d560bf/1662820378349/valdistrikt-uppsala-lan.zip"
temp <- tempdir()
download.file(url, paste0(temp, "/uppsala-lan.zip"))
unzip(paste0(temp, "/uppsala-lan.zip"), exdir = "data")
file <- paste0("data/", list.files("data"))

# 读取数据,修正CRS
x <- st_read(file) |>
  # 替换错误的CRS标注为正确的UTM 33N
  st_set_crs(32633)

# 可视化(此时不会有警告)
x |> ggplot() + geom_sf()

# 如果后续需要转成WGS84经纬度格式,执行下面这行:
# x_wgs84 <- st_transform(x, 4326)

运行这段代码后,sf就能正确识别坐标系统,ggplot的可视化也会正常显示乌普萨拉省的选举区边界,那个警告也会消失。

内容的提问来源于stack exchange,提问作者FilipW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 14:57:32