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

从URL导入JSON数据,拆分嵌套属性生成点、线GeoDataFrame的技术问询

拆分嵌套GeoJSON数据为点、线GeoDataFrame

实现步骤

  1. 导入依赖库:除数据加载工具外,需用geopandas处理地理数据,shapely构建几何对象。
  2. 加载JSON数据:使用你提供的代码获取并解析GeoJSON数据。
  3. 拆分嵌套数据:遍历每个线要素,分别提取线本身信息和嵌套的站点(点)信息。
  4. 转换为GeoDataFrame:将提取的列表数据转换为带地理信息的GeoDataFrame。

完整代码

import urllib.request
import json
import geopandas as gpd
from shapely.geometry import Point, LineString

# 加载GeoJSON数据
with urllib.request.urlopen('https://transit.land/api/v2/rest/routes.geojson?operator_onestop_id=o-9q8y-sfmta&api_key=LsyqCJs5aYI6uyxvUz1d0VQQLYoDYdh4&l&') as url:
    data = json.loads(url.read())

# 初始化存储线和点数据的列表
lines_data = []
stops_data = []

# 遍历每个要素,拆分线和嵌套的点
for feature in data['features']:
    # 处理线要素
    route_properties = feature['properties']
    line_geometry = LineString(feature['geometry']['coordinates'])
    lines_data.append({
        'id': route_properties.get('id'),
        'route_id': route_properties.get('route_id'),
        'route_name': route_properties.get('route_long_name'),
        'geometry': line_geometry
    })
    
    # 处理嵌套的站点(点要素)
    if 'stops' in route_properties:
        for stop in route_properties['stops']:
            stop_geometry = Point(stop['geometry']['coordinates'])
            stops_data.append({
                'id': stop.get('id'),
                'stop_id': stop.get('onestop_id'),
                'stop_name': stop.get('name'),
                'route_id': route_properties.get('route_id'),
                'geometry': stop_geometry
            })

# 转换为GeoDataFrame,指定坐标系为WGS84(EPSG:4326)
line_gdf = gpd.GeoDataFrame(lines_data, crs="EPSG:4326")
stop_gdf = gpd.GeoDataFrame(stops_data, crs="EPSG:4326")

# 查看结果示例
print("线要素GeoDataFrame:")
print(line_gdf.head())
print("\n点要素GeoDataFrame:")
print(stop_gdf.head())

说明

  • 字段适配:用get()方法获取属性避免字段缺失报错;若实际数据字段名(如站点名称为stop_name而非name)与示例不符,可打印route_properties或stop查看实际字段后调整。
  • 坐标系:GeoJSON默认使用WGS84(EPSG:4326),转换时直接指定即可。
  • 关联关系:通过route_id将站点与所属线路绑定,方便后续关联分析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 01:36:34