使用Python将CSV站点坐标生成KML路径文件 解决线路不显示问题
路径无法显示的核心原因
- CSV读取配置错误:默认
csv.reader按逗号分隔字段,但你的CSV是多空格/制表符分隔,读取后每行仅返回1个元素,取row[1]、row[2]等索引时获取的是空值/报错,生成的路径坐标无效。 - 坐标格式不符合要求:原始坐标带
°符号为字符串类型,simplekml要求coords参数必须传入数值格式的(经度,纬度) 坐标对,字符串无法被KML阅读器识别。
修正后可运行代码
import simplekml kml = simplekml.Kml() # 按行读取适配多空格分隔的CSV格式 with open('FBCRN.csv', encoding="utf8", errors='ignore') as f: # 跳过前2行表头 next(f) next(f) for line in f: line = line.strip() if not line: continue # 按任意空白字符拆分,自动合并连续多空格 parts = line.split() # 去除坐标中的°符号,转换为浮点数 a_lat = float(parts[1].replace('°', '')) a_lon = float(parts[2].replace('°', '')) b_lat = float(parts[4].replace('°', '')) b_lon = float(parts[5].replace('°', '')) # 生成线路,KML坐标顺序为(经度,纬度) lin = kml.newlinestring(name=f"{parts[0]}-{parts[3]}", coords=[(a_lon, a_lat), (b_lon, b_lat)]) lin.style.linestyle.color = 'ff0000ff' lin.style.linestyle.width = 10 kml.save('FBG.kml')
调整说明
- 改用按行读取+按空白字符拆分的方式适配你的CSV格式,避免分隔符不匹配问题
- 新增了坐标格式处理逻辑,删除
°符号并转换为浮点数,符合KML坐标规范 - 线路名称调整为「起点-终点」格式,方便在KML阅读器中识别,你可按需修改
内容的提问来源于stack exchange,提问作者Kourosh
相关产品推荐
相关产品推荐

