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

如何将多边形XY坐标字符串拆分为X、Y坐标两个子集?

拆分多边形坐标字符串为X/Y坐标列的解决方案

核心思路

先清理坐标字符串的格式,将其转换为数值列表,再按索引规则分别提取X、Y坐标。以下是基于dplyr、stringr和purrr的实现方案:

代码实现

1. 构造示例数据

library(dplyr)
library(stringr)
library(purrr)

# 模拟原始数据结构
df <- tibble(
  polygonID = c(1, 2, 3),
  Points = c("[10,20,30,40,50,60]", "[15,25,35,45]", "[5,10,15,20,25,30,35,40]")
)

2. 处理坐标拆分

df_processed <- df %>%
  # 清理方括号,拆分字符串并转为数值列表
  mutate(coord_list = str_remove_all(Points, "\\[|\\]") %>%
           str_split(",") %>%
           map(as.numeric)) %>%
  # 提取X(奇数位索引)和Y(偶数位索引)坐标
  mutate(
    X_coords = map(coord_list, ~ .x[seq(1, length(.x), by = 2)]),
    Y_coords = map(coord_list, ~ .x[seq(2, length(.x), by = 2)])
  ) %>%
  # 移除中间辅助列
  select(-coord_list)

3. 可选:展开为逐点数据

如果需要将每个多边形的坐标拆分为单独行(每个点一行),可以用tidyr::unnest:

library(tidyr)

df_expanded <- df_processed %>%
  unnest(c(X_coords, Y_coords))

代码说明

  • str_remove_all(Points, "\\[|\\]"):清除坐标字符串首尾的方括号
  • str_split(","):按逗号分割字符串为字符向量
  • map(as.numeric):将每个字符向量转换为数值型列表
  • seq(1, length(.x), by = 2):生成奇数位索引提取所有X坐标;偶数位索引同理提取Y坐标

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

相关产品推荐
方舟 Agent Plan

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

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