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

仅含经纬度的CSV转KML后导入Google Earth Pro崩溃如何解决

问题原因分析

1. 代码存在的疏漏

你当前的代码未做数据合法性校验,且未做样式优化:

  • 若CSV中存在空经纬度、经纬度超出合法范围(经度-180~180、纬度-90~90)的无效记录,生成的KML会包含非法节点,触发Google Earth Pro解析崩溃
  • simplekml默认会为每个新生成的点单独创建样式规则,10万条点对应的样式冗余会让KML文件体积翻倍,大幅提升解析时的内存占用

2. Google Earth Pro的处理上限

绝大多数版本的Google Earth Pro对单KML文件内的独立点要素处理阈值在3~5万左右,10万条点直接塞到单个KML里大概率会触发内存溢出崩溃,和你碰到的报错场景一致。

优化方案

代码层优化

直接替换为如下优化后的代码,完成数据清洗+样式复用+压缩输出:

import simplekml
import pandas

# 读取CSV并做数据清洗
df = pandas.read_csv("FILE NAME.CSV")
# 过滤经纬度空值
df = df.dropna(subset=["Longitude", "Latitude"])
# 过滤超出合法范围的无效坐标
df = df[(df["Longitude"].between(-180, 180)) & (df["Latitude"].between(-90, 90))]

kml = simplekml.Kml()
# 提前创建全局共享样式,避免每个点重复生成样式
shared_style = simplekml.Style()
shared_style.iconstyle.icon.href = 'http://maps.google.com/mapfiles/kml/shapes/placemark_circle.png'
shared_style.iconstyle.scale = 0.8 # 可自行调整点的大小

# 方案A:如果需要每个点可单独选中查看属性,用这个循环
for lon,lat in zip(df["Longitude"],df["Latitude"]):
    pnt = kml.newpoint(coords=[(lon,lat)])
    pnt.style = shared_style

# 方案B:如果不需要单独操作单个点,用多点聚合减少文件冗余(二选一即可,体积比方案A小60%以上)
# multipnt = kml.newmultigeometry()
# for lon,lat in zip(df["Longitude"],df["Latitude"]):
#     multipnt.newpoint(coords=[(lon,lat)])
# multipnt.style = shared_style

# 输出为压缩后的KMZ格式,比KML体积小70%左右,大幅降低导入内存压力
kml.savekmz("OUTPUT.kmz")

导入层优化

  • 如果10万条优化后还是崩溃,可以把CSV按每2~3万条拆分为多个子文件,分别生成KMZ后分批导入Google Earth Pro,不要把所有点塞进单个文件
  • 导入前先关闭Google Earth Pro的「地形」「3D建筑」等消耗渲染资源的图层,导入完成后再按需开启

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 09:12:01