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

st_transform投影多边形时连接线未正确转换的问题求助

解决矩形多边形投影后线条未弯曲的问题

问题核心是:你用边界框直接生成的多边形只有4个顶点,st_transform仅转换这4个顶点后用直线连接,但地理坐标系中平行于纬线的边,在投影到EPSG:9311(北美阿尔伯斯等面积投影)后本应是曲线,仅靠4个顶点无法呈现这种弯曲形态。

解决思路是先在地理坐标系下细分多边形的边,生成足够多的顶点,再进行投影转换,具体实现如下:

修改后的可运行代码:

library(sf)
library(spData)
library(dplyr)
library(ggplot2)

data(world)
proWorld <- st_transform(world, "EPSG:9311")

# 生成带细分顶点的矩形:先转sfc,再细分边,最后投影
box <- st_bbox(c(xmin = -110,
                 ymin = 25, 
                 ymax = 33, 
                 xmax = -90), crs = "EPSG:4326") %>%
    st_as_sfc() %>%
    st_segmentize(dfMaxLength = 0.1) %>%  # 按0.1度间隔细分边,单位为当前CRS的度
    st_transform(crs = st_crs(proWorld))

ggplot() +
    geom_sf(data = proWorld) +
    geom_sf(data = box, fill = NA, color = "red") +
    ylim(c(-2182970, 1099711)) +
    xlim(c(-1994737, 2770402))

关键细节说明

  • st_segmentize的dfMaxLength参数:在EPSG:4326下单位是度,设置为0.1意味着每条边会被拆分成多个0.1度间隔的小段,生成足够多的顶点来模拟曲线。你可以根据需求调整这个值,数值越小曲线越平滑,但计算量会相应增加。
  • 必须在原始地理坐标系下细分边,而非投影后再操作——因为投影后的坐标系单位是米,细分逻辑和地理空间的曲线逻辑不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 18:52:50