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

如何在R中直接将IGC文件加载为Simple Features?

直接在R中加载IGC滑翔伞轨迹为Simple Features的解决方案

方法1:用专门轨迹包读取后转sf

trackeR包原生支持IGC格式解析,无需手动处理规范细节:

  • 安装并加载包:
    install.packages("trackeR")
    library(trackeR)
    library(sf)
    
  • 读取IGC文件:
    igc_track <- read_track("your_file.igc", format = "igc")
    
  • 转换为sf对象:
    # 先转成数据框提取坐标
    track_df <- as.data.frame(igc_track)
    sf_track <- st_as_sf(track_df, coords = c("longitude", "latitude"), crs = 4326)
    

方法2:完善自定义解析函数

如果依赖自定义函数,需覆盖IGC核心规范避免出错:

  • 核心处理逻辑(包含B记录解析、坐标转换、无效定位过滤):
    parse_igc_to_sf <- function(file_path) {
      lines <- readLines(file_path)
      # 筛选有效B记录(定位有效标记为"A")
      valid_b_lines <- lines[grepl("^B.*A", lines)]
      
      parsed_data <- lapply(valid_b_lines, function(line) {
        # 提取时间
        time <- substr(line, 2, 7)
        # 解析纬度(十进制转换)
        lat_deg <- as.numeric(substr(line, 8, 9))
        lat_min <- as.numeric(substr(line, 10, 14)) / 60
        lat_dir <- substr(line, 15, 15)
        lat <- ifelse(lat_dir == "S", -(lat_deg + lat_min), lat_deg + lat_min)
        
        # 解析经度(十进制转换)
        lon_deg <- as.numeric(substr(line, 16, 18))
        lon_min <- as.numeric(substr(line, 19, 23)) / 60
        lon_dir <- substr(line, 24, 24)
        lon <- ifelse(lon_dir == "W", -(lon_deg + lon_min), lon_deg + lon_min)
        
        # 提取高度数据
        press_alt <- as.numeric(substr(line, 26, 30))
        gnss_alt <- as.numeric(substr(line, 31, 35))
        
        data.frame(time = time, press_alt = press_alt, gnss_alt = gnss_alt, lat = lat, lon = lon)
      })
      
      track_df <- do.call(rbind, parsed_data)
      # 转换为sf对象,WGS84坐标系
      st_as_sf(track_df, coords = c("lon", "lat"), crs = 4326)
    }
    
  • 使用方式:sf_track <- parse_igc_to_sf("your_file.igc")

方法3:检查GDAL驱动支持

sf依赖GDAL,部分新版本GDAL自带IGC驱动:

  • 先查看已安装的驱动:
    library(sf)
    st_drivers()
    
  • 如果列表中有IGC驱动,直接读取:
    sf_track <- st_read("your_file.igc", driver = "IGC")
    
  • 若无该驱动,需更新GDAL到3.0及以上版本,重启R后重试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:40:28