查看原文
其他

纯Python开发在线GeoJSON数据生成器

Editor's Note

纯Python开发地图应用so easy

The following article is from 玩转Dash Author 费弗里

【玩转dash】公众号后台回复关键词【geojson】获取本期全部源码


在今天的教程中,费老师我将为大家展示如何通过纯Python编程的方式,开发出一个在线地图应用,使得我们可以在在线地图上交互式地绘制一个个的地理围栏,并为其逐一添加相关属性字段,最后一键导出为常用的GeoJSON格式文件,非常地简单快捷,下面的视频展示了这个应用的使用方式:

而我是如何只用Python就开发出这样功能丰富的网页应用的呢,下面我就来给大家详细介绍:

1 环境准备&应用启动

首先我们来创建应用的虚拟开发环境,建议使用Conda,命令如下:

  • 创建虚拟环境并激活
conda create -n geojson-app python=3.8 -c https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/main -y

conda activate geojson-app
  • 安装相关依赖

完成环境的创建和激活后,我们需要安装运行该应用所需的一些必要依赖,直接把下列命令整体粘贴到终端执行,然后耐心等待完成即可:

conda install geopandas=0.11.0 -c https://mirrors.sjtug.sjtu.edu.cn/anaconda/cloud/conda-forge -y

pip install dash feffery_antd_components feffery_leaflet_components -U -i https://pypi.tuna.tsinghua.edu.cn/simple

全部执行完成后我们的应用开发运行环境就准备完成啦,这时你可以将本期教程对应的附件(【玩转dash】公众号后台回复geojson获取本期全部源码)解压后,在前面虚拟环境激活的情况下,cd到根目录,执行python app.py,然后本地浏览器访问http://127.0.0.1:8050/即可使用本应用:

2 关键功能的构建

只写Python开发这样的应用,我们在底层dash框架的基础上,使用到由费老师我开源维护的通用组件库feffery-antd-components(简称fac,最新版本0.1.14,目前下载安装量已超过5万次):

以及同样由我开源并维护的地图功能组件库feffery-leaflet-components(简称flc,目前处于早期测试阶段,最新版本0.0.1a2):

在这两大组件库的加持下,我们只需要编写十分简单易懂的Python代码即可实现丰富功能,譬如我们的应用中,地图部分的全部功能,仅需要下面这一点代码即可构建:

而我们虽然是在高德地图(火星坐标系)的底图上绘制的矢量,但通过我在flc中额外开发的数据转换方法,即可一步到位实现面要素输出为WGS84坐标系的功能,因此前面演示视频最后我们在QGIS里可以看到,osm底图上叠加的导出矢量结果位置没有发生偏移:

本期的例子仅仅是展示了facflc能力的冰山一角,事实上只要你善于利用facflc中的不同功能组件,从在线小工具,到数据中台平台,都可以仅通过编写Python代码轻松实现,你可以在【玩转dash】公众号后台回复geojson获取全部源码,更多dash高级应用案例欢迎持续关注【玩转dash】公众号。


以上就是本文的全部内容,欢迎在【玩转dash】公众号后台回复【进群】加入交流群参与更多学习讨论。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存