「GIS教程」使用Python将GeoJSON转换成TopoJSON
发布时间: 2021-12-20
所属分类: GIS探秘
在之前的文章《「GIS教程」什么是TopoJSON》、《「GIS教程」将GeoJSON转换成TopoJSON的方法》中,我们了解到了TopoJSON这一数据格式,并且分享了使用NodeJS或者在线转换的方法。由于本站粉丝使用Python比较多,本文继续介绍使用Python做数据转换的方法(GeoJSON -> TopoJSON)。
新建一个TopoJSON的Python环境
由于小编使用的是Conda,直接使用如下命令:
conda create --name topojson
conda deactivate
conda activate topojson
安装依赖
conda install -c conda-forge topojson
开始转换
简要的代码如下:
import topojson as tp
import json
with open("./100000.geojson", 'r') as f:
data = json.load(f)
# assert data['type'] == 'FeatureCollection'
topo = tp.Topology(data)
topo.to_json("./100000.topo.json")
# to visualise we use the (optional!) package Altair.
topo.to_alt()
上面的代码实现了将geojson从文件中读取,然后保存成topojson的过程,最后并使用altair来可视化。效果图:
对比生成文件大小
更多玩法
如果你还嫌大,这个包还提供了一个simplify方法,可以对数据做进一步简化,不过也要注意不要玩大了,那样就只剩下一个最简单的轮廓了。
比如下图是设置0.1的结果。
import topojson as tp
import json
with open("./100000.geojson", 'r') as f:
data = json.load(f)
# assert data['type']) == 'FeatureCollection'
topo = tp.Topology(data)
topo.to_json("./100000.topo.json")
# to visualise we use the (optional!) package Altair.
topo.toposimplify(0.1).to_alt()
如果设置成0.5,效果如图:
总结
数据大小和精度不可兼得。
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。
手机阅读
公众号关注
知识星球
手机阅读
最新GIS干货
私享圈子