如何从LineStrings的Python列表创建GeoJSON

时间:2018-10-10 15:23:15

标签: python geojson

我有一个看起来像这样的python列表:

type(route)
>>>list

print(route)

[{'type': 'LineString',
'coordinates': [[-94.586472, 39.098705],
 [-64.586487, 39.098716],
 [-64.585969, 39.094146],
 [-64.586037, 39.093936],
 [-64.586037, 39.093936],
 [-64.586046, 39.093933]]},
{'type': 'LineString',
'coordinates': [[-94.581459, 39.093506],
 [-64.581451, 39.09351],
 [-64.581444, 39.093506],
 [-64.581459, 39.093433],
 [-64.581726, 39.093418],
 [-64.588631, 39.087582]]},
{'type': 'LineString',
'coordinates': [[-94.584312, 39.042758],
 [-64.584312, 39.042758],
 [-64.583225, 39.099256],
 [-64.584328, 39.09932]]}]

如何将其转换为有效的GeoJSON文件?我尝试过test = FeatureCollection(features=route),但是后来我转储它时创建了一个无效文件。

1 个答案:

答案 0 :(得分:1)

看来FeatureCollection的每个项目都必须是Feature类型,其类型比您当前的路线要different schema。最简单的解决方案是使用列表推导将每个路由映射到Feature模式中。

def route_to_feature(idx, route): return { 'type': 'Feature', 'geometry': route, 'properties': { 'name': f'Route #{idx}' } }

可以像这样使用。

geojson.FeatureCollection([ route_to_feature(i, route) for i, route in enumerate(routes) ])