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

如何提取TSV文件列中存储的GeoJSON数据?支持任意语言或方法

提取TSV列中GeoJSON数据的可行方法

R语言解决方案

  • 优先用data.table读取TSV,它对特殊字符的处理更稳定:
# 加载依赖包
library(data.table)
library(geojsonsf)
library(sf)

# 读取TSV文件,替换为你的实际文件名
tsv_data <- fread("中非地区道路数据.tsv", stringsAsFactors = FALSE)

# 提取GeoJSON列(替换为实际列名,比如'geometry'或'geo_json')
geo_json_strings <- tsv_data$geo_json

# 将所有GeoJSON字符串转换为sf对象,再导出为标准GeoJSON
sf_objects <- geojson_sf(geo_json_strings)
st_write(sf_objects, "中非地区道路提取结果.geojson", driver = "GeoJSON")

注意:如果遇到解析错误,可先检查单条GeoJSON字符串的格式是否合法,用geojson_sf(geo_json_strings[1])测试第一条数据。

Python解决方案

  • 用pandas+geopandas处理,兼容多数转义格式:
import pandas as pd
import geopandas as gpd
import json
from shapely.geometry import shape

# 读取TSV文件
df = pd.read_csv("中非地区道路数据.tsv", sep="\t")

# 定义解析函数,处理可能的转义问题
def parse_geometry(row):
    try:
        return shape(json.loads(row['geo_json']))  # 替换为实际列名
    except Exception:
        return None

# 生成几何列并过滤无效数据
df['geometry'] = df.apply(parse_geometry, axis=1)
gdf = gpd.GeoDataFrame(df.drop(columns=['geo_json']), geometry='geometry')
gdf = gdf[gdf.geometry.notna()]

# 导出为GeoJSON
gdf.to_file("中非地区道路提取结果.geojson", driver='GeoJSON')

命令行快速处理方案

无需编程环境,用csvkit和jq工具完成:

  1. 提取TSV中的GeoJSON列(替换geo_json为实际列名):
csvcut -t -c geo_json 中非地区道路数据.tsv > temp_geo_lines.txt
  1. 将单行GeoJSON合并为标准FeatureCollection:
jq -s '{"type": "FeatureCollection", "features": .}' temp_geo_lines.txt > 中非地区道路提取结果.geojson

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:15:56