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

如何在Python中将Shapefile转换为坐标列表的列表?

解决方案

首先修正你的路径错误:你定义的shapefile_path已经包含完整的.shp文件名,不需要再次拼接,否则会导致路径无效。

接下来,Shapefile中的几何对象可能同时包含LineString和MultiLineString类型,直接迭代MultiLineString会触发你遇到的错误。需要先区分几何类型,分别提取坐标,同时注意shapely几何的坐标顺序是(经度, 纬度),所以要反转得到你需要的[纬度, 经度]格式。

完整代码如下:

import geopandas as gpd
from shapely.geometry import LineString, MultiLineString

# 修正路径:直接使用完整路径
shapefile_path = 'Users/user/downloads/ne_50m_coastline/ne_50m_coastline.shp'
gdf = gpd.read_file(shapefile_path)

coastline_points = []

for geom in gdf['geometry']:
    # 处理MultiLineString:拆分成单个LineString
    if isinstance(geom, MultiLineString):
        lines = list(geom.geoms)
    else:
        lines = [geom]
    
    # 遍历每个LineString,提取坐标并反转顺序
    for line in lines:
        for lon, lat in line.coords:
            coastline_points.append([lat, lon])

代码说明:

  • 通过类型判断拆分MultiLineString,避免迭代报错
  • 用line.coords获取LineString的原始坐标对(经度在前)
  • 反转坐标顺序,转换为你需要的[纬度, 经度]格式存入列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 17:22:37