如何在Python中将文本文件中字符串格式的多边形坐标转为浮点型嵌套列表
处理coordinates.txt并生成GeoJSON Polygon的方法
核心思路
逐行解析文件中的JSON数据,将字符串格式的bounds转换为浮点型嵌套列表,再处理成GeoJSON Polygon要求的闭合线性环,最终完成对象实例化。
代码实现
先导入所需依赖模块:
import json import ast from geojson import Polygon
读取文件并处理的完整代码:
with open('coordinates.txt', 'r', encoding='utf-8') as f: for line in f: # 解析单行JSON数据 line_data = json.loads(line.strip()) # 将bounds字符串转为Python列表 raw_bounds = ast.literal_eval(line_data['bounds']) # 统一转为浮点型嵌套列表 float_bounds = [[float(lon), float(lat)] for lon, lat in raw_bounds] # 保证坐标环闭合(GeoJSON Polygon要求首尾坐标一致) if float_bounds[0] != float_bounds[-1]: float_bounds.append(float_bounds[0]) # 实例化Polygon对象 polygon = Polygon([float_bounds]) # 后续操作示例:打印结果 print(f"ID {line_data['id']} 的Polygon: {polygon}")
关键说明
- 用
ast.literal_eval解析bounds字符串:比直接使用eval更安全,仅处理Python字面量结构,规避恶意代码执行风险。 - 强制转浮点型:确保坐标数据类型符合GeoJSON规范,避免整数类型引发的潜在兼容性问题。
- 闭合线性环:GeoJSON的Polygon要求构成面的坐标环必须首尾重合,因此需要检查并补充坐标。
内容的提问来源于stack exchange,提问作者Bhanu
相关产品推荐
相关产品推荐

