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

如何从经纬度距离矩阵中提取行列偏移的指定距离值?

按规则从距离矩阵提取特定值

问题描述

我拥有一组包含纬度(latitude)和经度(longitude)的坐标数据,已计算出每个观测点到第一个起始点的距离,得到了可转换为data frame的距离矩阵。现在需要从该矩阵中提取一组特定的距离值,提取规则为:第1行第V1列、第2行第V1列、第3行第V2列、第4行第V3列、第5行第V4列……以此类推,最终得到8个观测值,第一个值为起始点的0,后续为对应偏移位置的距离。

解决方案

可以通过生成对应行和列的索引来精准提取目标值,以下是R语言实现代码:

# 假设距离矩阵存储为 dist_matrix
row_indices <- 1:8  # 目标行索引(共8行)
# 生成目标列索引:前2行取第1列,第3行及以后列索引 = 行索引 - 1
col_indices <- ifelse(row_indices <= 2, 1, row_indices - 1)

# 提取对应位置的值
extracted_values <- dist_matrix[row_indices, col_indices]
# 为提取结果命名(可选)
names(extracted_values) <- paste0("观测值_", 1:8)

# 查看结果
extracted_values

根据提供的距离矩阵,执行上述代码后得到的提取结果为:

  • 观测值_1: 0.0000
  • 观测值_2: 1.21866
  • 观测值_3: 87.07661
  • 观测值_4: 159.368
  • 观测值_5: 205.100
  • 观测值_6: 322.563
  • 观测值_7: 308.865
  • 观测值_8: 175.726

原始数据

structure(list(latitude = c(38.4839693048603, 38.4839676888751, 
38.484000841, 38.4840256406904, 38.4842629760156, 38.4849478163079
), longitude = c(-123.055495022123, -123.055491287216, -123.055793254511, 
-123.056350426841, -123.05700151085, -123.057715977783)), row.names = c(NA, 
6L), class = "data.frame")

英尺单位距离矩阵

structure(list(V1 = structure(c(0, 1.21865987279359, 85.9395893412895, 
245.140367411948, 443.345616384121, 727.792251173584), units = structure(list(
    numerator = "ft", denominator = character(0)), class = "symbolic_units"), class = "units"), 
    V2 = structure(c(1.21865987279359, 0, 87.076605103043, 246.25311887669, 
    444.523156907811, 729.010874767996), units = structure(list(
        numerator = "ft", denominator = character(0)), class = "symbolic_units"), class = "units"), 
    V3 = structure(c(85.9395893412895, 87.076605103043, 0, 159.368289208323, 
    358.047418709711, 648.709228910322), units = structure(list(
        numerator = "ft", denominator = character(0)), class = "symbolic_units"), class = "units"), 
    V4 = structure(c(245.140367411948, 246.25311887669, 159.368289208323, 
    0, 205.10072777621, 515.020408170641), units = structure(list(
        numerator = "ft", denominator = character(0)), class = "symbolic_units"), class = "units"), 
    V5 = structure(c(443.345616384121, 444.523156907811, 358.047418709711, 
    205.10072777621, 0, 322.563054256646), units = structure(list(
        numerator = "ft", denominator = character(0)), class = "symbolic_units"), class = "units"), 
    V6 = structure(c(727.792251173584, 729.010874767996, 648.709228910322, 
    515.020408170641, 322.563054256646, 0), units = structure(list(
        numerator = "ft", denominator = character(0)), class = "symbolic_units"), class = "units"), 
    V7 = structure(c(1018.50792414677, 1019.71647638936, 943.971774385934, 
    819.591063850584, 631.321251450188, 308.865461805431), units = structure(list(
        numerator = "ft", denominator = character(0)), class = "symbolic_units"), class = "units"), 
    V8 = structure(c(1191.19804190322, 1192.4014434649, 1117.85419293343, 
    995.173866175853, 806.723702197458, 484.163222522177), units = structure(list(
        numerator = "ft", denominator = character(0)), class = "symbolic_units"), class = "units")), row.names = c(NA, 
6L), class = "data.frame")

距离矩阵表格

V1V2V3V4V5V6V7V8
0.00001.2186685.93959245.1404443.3426727.79231018.50791191.1980
1.218660.000087.07661246.2531444.5232729.01091019.71651192.4014
85.9395987.076610.0000159.3683358.0474648.7092943.97181117.8542
245.14037246.253159.3680.0000205.100515.024819.591995.1739
443.345444.523358.047205.1000.0000322.563631.321806.723
727.792729.010648.709515.020322.5630.0000308.865484.163
1018.5071019.716943.971819.591631.321308.8650.0000175.726
1191.11981192.4011117.854995.173806.723484.1632175.7260.0000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:30:53