我希望能够在Python中对GeoJSON FeatureCollections进行有限坐标精度的序列化。
例如,这里有一个FeatureCollection(在Python中用dict
和list
表示):
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"name": "Liberty Island",
"area_sqm": 24950.40123456,
"established": 1875,
"height_ft": 305
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[ -74.04715418815613, 40.690994683044906 ],
[ -74.04499769210815, 40.68873311507798 ],
[ -74.04354929924011, 40.689676800252016 ],
[ -74.04715418815613, 40.690994683044906 ]
]
]
}
}
]
}
我可以使用
json.dumps
进行序列化:print(json.dumps(fc))
这将打印出 JSON:
{"type": "FeatureCollection", "features": [{"type": "Feature", "properties": {"name": "Liberty Island", "area_sqm": 24950.40123456, "established": 1875, "height_ft": 305}, "geometry": {"type": "Polygon", "coordinates": [[[-74.04715418815613, 40.690994683044906], [-74.04499769210815, 40.68873311507798], [-74.04354929924011, 40.689676800252016], [-74.04715418815613, 40.690994683044906]]]}}]}
这些坐标太精确了。根据维基百科的说法,7个数字大约是厘米级精度,应该足够好了。而我得到的是纳米级的精度。
我想要将GeoJSON FeatureCollection序列化为仅带有七位数字精度的坐标。请注意,我想使用Python默认的序列化方式处理所有的properties
内容:因为值可能是任何类型,所以我无法对所需精度做出普遍性的要求。
我的期望输出格式如下:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"name": "Liberty Island",
"area_sqm": 24950.40123456,
"established": 1875,
"height_ft": 305
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[ -74.0471541, 40.6909946 ],
[ -74.0449976, 40.6887331 ],
[ -74.0435492, 40.6896768 ],
[ -74.0471541, 40.6909946 ]
]
]
}
}
]
}