我正在尝试使用python和python-geojson创建一个特征数组。我添加了一些功能,例如带有工作坐标的多边形。但是,当我转储时,geoJson文件中没有缩进。全部都在一行上,而mapbox不接受数据。
f
features = []
poly = Polygon([[(2.38, 57.322), (23.194, -20.28), (-120.43, 19.15), (2.38, 57.322)]])
features.append(Polygon([[(2.38, 57.322), (23.194, -20.28), (-120.43, 19.15), (2.38, 57.322)]]))
features.append(Feature(geometry=poly, properties={"country": "Spain"}))
feature_collection = FeatureCollection(features)
with open('myfile.geojson', 'w') as f:
dump(feature_collection,f)
f.close()
这就是输出的外观。应该缩进而不是像这样聚簇。
{“ type”:“ FeatureCollection”,“ features”:[{“ type”:“ Polygon”,“ coordinates”:[[[2.38,57.322],[23.194,-20.28],[-120.43,19.15 ],[2.38,57.322]]]},{“ geometry”:{“ type”:“ Polygon”,“ coordinates”:[[[2.38,57.322],[23.194,-20.28],[-120.43,19.15] ,[2.38,57.322]]]},“ type”:“功能”,“ properties”:{“ country”:“西班牙”}}}}
答案 0 :(得分:0)
向您的dump()调用添加“缩进”参数:
with open('myfile.geojson', 'w') as f:
dump(feature_collection, f, indent=4)
但是,奇怪的是,一段代码不会接受全部一行的JSON。它和合法的JSON一样多。那是该代码中的错误。通常使用“缩进”参数只是为了便于阅读。
答案 1 :(得分:0)
备份一下,有三种类型的GeoJSON对象:
一个Feature
包含一个Geometry
,一个FeatureCollection
包含一个或多个Features
。您不能将Geometry
直接放在FeatureCollection
内,但是它必须是Feature
。
在您共享的示例中,您的FeatureCollection
包括一个Feature
和一个Geometry
(在本例中为Polygon
)。您需要先将该Polygon
转换为Feature
,然后再将其添加到FeatureCollection
。
不确定您是否打算有两个相同的多边形,但是您的示例需要看起来像这样才能输出有效的GeoJSON:
features = []
poly1 = Polygon([[(2.38, 57.322), (23.194, -20.28), (-120.43, 19.15), (2.38, 57.322)]])
poly2 = Polygon([[(2.38, 57.322), (23.194, -20.28), (-120.43, 19.15), (2.38, 57.322)]])
features.append(Feature(geometry=poly1, properties={"country": "Spain"}))
features.append(Feature(geometry=poly2))
feature_collection = FeatureCollection(features)
with open('myfile.geojson', 'w') as f:
dump(feature_collection,f)
f.close()
缩进在这里无关紧要。
您可以在https://tools.ietf.org/html/rfc7946上阅读比以往更多的有关GeoJSON规范的信息。