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

如何将经纬度转换为Multipolygon对象以适配tmap绘图?

解决经纬度转Multipolygon并使用tmap绘图的问题

你的数据集是城市级别的点数据,直接用st_as_sf转成Multipolygon是行不通的——单个点只能生成Point类型的几何对象。要得到Multipolygon,要么把点组合成有意义的多边形,要么获取对应区域(比如国家)的多边形边界数据,再和你的数据关联起来绘图。下面分步骤解决:

第一步:先把点数据转成正确的sf对象

你之前用st_as_sf无效,大概率是没指定坐标列和坐标系。试试这个标准用法:

library(sf)
library(tmap)

# 转换为带Point几何的sf对象
coor_sf <- st_as_sf(coor, 
                    coords = c("lng", "lat"),  # 注意先经度后纬度
                    crs = 4326)  # WGS84是GPS经纬度的通用坐标系

如果只是想在地图上标记这些城市点,直接用tmap绘制即可:

# 绘制点地图
tm_shape(coor_sf) +
  tm_dots(col = "Type", size = 0.5, legend.show = TRUE) +
  tm_basemap(server = "OpenStreetMap")

第二步:生成Multipolygon并绘图(按国家聚合场景)

要是你需要画国家级别的多边形(比如展示每个国家的机构数量),需要先获取国家边界的sf数据,再和你的数据关联:

# 安装并加载rnaturalearth包获取边界数据
install.packages("rnaturalearth")
library(rnaturalearth)

# 获取世界国家边界的sf数据
world_borders <- ne_countries(returnclass = "sf", scale = "medium")

# 按ISO代码聚合你的数据,统计每个国家的机构数量
coor_agg <- aggregate(coor_sf["Type"], 
                      by = list(coor_sf$`3ISO code`), 
                      FUN = length)
names(coor_agg)[1] <- "iso_a3"  # 和边界数据的ISO列名对齐

# 合并边界数据与统计数据
world_with_data <- merge(world_borders, coor_agg, by = "iso_a3", all.x = FALSE)

现在world_with_data就是带Multipolygon几何的sf对象了,可以用tmap绘制填充地图:

# 绘制多边形填充地图
tm_shape(world_with_data) +
  tm_fill(col = "Type", palette = "Blues", title = "机构数量") +
  tm_borders() +
  tm_text("name", size = 0.8) +
  tm_layout(legend.position = c("right", "top"))

补充:把多个点转成自定义多边形

如果需要把同区域的点连成一个多边形(比如美国城市的凸包范围),可以用以下方法:

# 筛选美国的城市点
usa_points <- coor_sf[coor_sf$`3ISO code` == "USA", ]
# 生成凸包多边形
usa_polygon <- st_convex_hull(st_combine(usa_points))
# 转成sf对象
usa_polygon_sf <- st_sf(data.frame(country = "USA"), 
                        geometry = usa_polygon, 
                        crs = 4326)

# 绘制多边形+点的组合图
tm_shape(usa_polygon_sf) +
  tm_fill(col = "lightblue") +
  tm_shape(usa_points) +
  tm_dots(col = "red") +
  tm_basemap(server = "OpenStreetMap")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:55:20