如何将Python字典导出为GeoJSON并移除coordinates值的双引号
用Python普通字典存储并导出GeoJSON的实用方法
嘿,我来聊聊怎么在Python里用普通字典轻松搞定GeoJSON的存储和导出——毕竟GeoJSON本质上和常规JSON几乎没啥区别,就差在coordinates那一块儿的细节!
先搞清楚GeoJSON和常规JSON的差异
GeoJSON本质就是JSON的一个GIS专用子集,结构几乎完全一致,比如单个LineString要素的GeoJSON示例是这样的:
{ "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [10, 20], [30, 40] ] } }
唯一的不同点在于:coordinates键对应的值是无引号的数值数组(GIS领域里叫原始几何数据)——不过其实常规JSON里的数值类型本来也不需要加引号,所以这部分在Python里完全可以用列表直接对应。
用Python普通字典存储GeoJSON数据
完全没必要搞复杂的类或者专用库,直接用Python原生的dict()就能完美存储GeoJSON结构,比如构建一个带属性的LineString要素:
# 直接用字典构建GeoJSON结构 geojson_data = { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [[10.0, 20.0], [30.0, 40.0]] # 直接用Python列表存坐标 }, "properties": { "route_name": "测试通勤路线", "estimated_length": 28.28 # 属性字段也直接用键值对 } }
这里要注意:Python的列表直接对应GeoJSON的坐标数组,数值类型(int/float)不需要加引号,完全符合GeoJSON的规范要求。
导出为标准GeoJSON文件
用Python自带的json模块就能直接导出成标准的GeoJSON文件,不需要额外安装依赖:
import json # 写入到本地文件 with open("my_route.geojson", "w", encoding="utf-8") as file: json.dump(geojson_data, file, indent=2, ensure_ascii=False)
indent=2:让导出的文件格式化后更易读,可选参数ensure_ascii=False:支持中文等非ASCII字符,避免属性值乱码
为啥这种方式可行?
因为GeoJSON本身就是JSON的子集,Python的原生数据结构和GeoJSON的结构是完美映射的:
- GeoJSON的对象 → Python字典
- GeoJSON的数组 → Python列表
- GeoJSON的数值 → Python的int/float
- GeoJSON的字符串 → Python字符串
只要严格遵循GeoJSON的规范(比如type字段必须是标准值:Feature、Point、Polygon等,coordinates结构对应几何类型),用字典存储完全没问题,还特别简洁!
内容的提问来源于stack exchange,提问作者michael
相关产品推荐
相关产品推荐

