为什么需要 CSV 转 GeoJSON
CSV(逗号分隔值)是最常见的数据交换格式,几乎所有表格软件和数据库都能导出 CSV。然而 CSV 本身没有地理空间结构,它只是平铺的行列数据。要让 CSV 中的坐标数据在地图上显示,需要将其转为 GeoJSON 这种 Web GIS 通用的矢量格式。
转换目标
转换的核心目标是:将 CSV 中的经纬度两列提取出来,转为 GeoJSON 的 Point Feature,同时将其余列作为属性(properties)保留下来。
经纬度列自动检测
不同数据源对经纬度列的命名五花八门。本工具支持自动检测以下常见列名:
经度列
- 英文:
lng、lon、longitude - 中文:
经度 - 坐标系:
x
纬度列
- 英文:
lat、latitude - 中文:
纬度 - 坐标系:
y
工具会按优先级匹配这些列名,无需手动指定。
转换流程
完整转换分为以下几个步骤:
- 解析 CSV:读取文件内容,按行拆分,解析表头与数据行。
- 检测经纬度列:根据列名自动定位经度列与纬度列。
- 逐行生成 Point Feature:将每行的经纬度转为 Point 几何。
- 保留属性:将除经纬度外的其余列作为 properties。
- 组装 FeatureCollection:将所有 Feature 包装为 FeatureCollection 输出。
CSV 解析注意事项
CSV 看似简单,实际解析时有不少坑:
- 逗号分隔:默认以逗号分隔列,但部分数据使用分号或制表符。
- 引号包裹:含逗号或换行的字段需用双引号包裹,解析时要正确处理引号转义。
- 编码问题:中文 CSV 常带 UTF-8 BOM 头,需识别并去除,否则首列名可能包含隐藏字符。
- 换行符:Windows 使用
\r\n,Unix 使用\n,需统一处理,避免产生空行。
输出格式示例
假设 CSV 含有 name,lng,lat 三列,转换后每行对应的 GeoJSON Feature 如下:
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [lng, lat]
},
"properties": {
"name": "..."
}
}所有 Feature 最终组装为 FeatureCollection:
{
"type": "FeatureCollection",
"features": []
}提示:务必确认经度在前、纬度在后(`[经度, 纬度]`)。GeoJSON 规范要求 Point 的坐标顺序为 [longitude, latitude],顺序错误会导致点出现在错误位置。
应用场景
- 地址数据可视化:将含经纬度的地址清单转为地图可读的点位。
- 采样点分布:环境监测、地质采样等点位数据的地图展示。
- 设备位置数据:物联网设备、车辆轨迹点的位置导入地图。
如果你需要将 CSV 坐标数据转为 GeoJSON,可以使用我们的 CSV 转 GeoJSON 工具,支持自动检测经纬度列、在线快速转换。