如何从CSV字符串列提取Polygon坐标?含eval()实现方案
提取GeoJSON字符串中的Polygon坐标
方法一:使用标准JSON模块(推荐)
你的数据是标准JSON格式,用Python内置的json模块解析是最安全可靠的方式,能避免eval()带来的安全风险。
代码示例:
import json # 从CSV读取的字符串数据 csv_str = '{"name": "Polygon Sample", "geo_json": {"type": "Feature", "properties": {}, "geometry": {"type": "Polygon", "coordinates": [[[-121.1958, 37.6683], [-121.1779, 37.6687], [-121.1773, 37.6792], [-121.1958, 37.6792], [-121.1958, 37.668]]]}}}' # 将字符串解析为Python字典 data_dict = json.loads(csv_str) # 按层级提取坐标:Polygon的coordinates外层嵌套了一层数组,取索引0即可 coordinates = data_dict['geo_json']['geometry']['coordinates'][0] print(coordinates)
运行后输出目标坐标列表:
[[-121.1958, 37.6683], [-121.1779, 37.6687], [-121.1773, 37.6792], [-121.1958, 37.6792], [-121.1958, 37.668]]
方法二:使用eval()实现
注意:eval()会执行字符串中的任意代码,仅当你完全信任数据源(比如自己生成的CSV)时才使用,否则存在安全隐患。
代码示例:
# 从CSV读取的字符串数据 csv_str = '{"name": "Polygon Sample", "geo_json": {"type": "Feature", "properties": {}, "geometry": {"type": "Polygon", "coordinates": [[[-121.1958, 37.6683], [-121.1779, 37.6687], [-121.1773, 37.6792], [-121.1958, 37.6792], [-121.1958, 37.668]]]}}}' # 用eval将字符串转为Python字典 data_dict = eval(csv_str) # 按层级提取坐标 coordinates = data_dict['geo_json']['geometry']['coordinates'][0] print(coordinates)
输出结果与方法一完全一致。
内容的提问来源于stack exchange,提问作者Asmita Guha
相关产品推荐
相关产品推荐

