leaflet加载geojson数据_Python: 地理空间数据可视化Packages

leaflet加载geojson数据_Python: 地理空间数据可视化Packages_第1张图片

Basemap 是Python环境下极好的数据可视化工具,conda网(https://anaconda.org/conda-forge/basemap) 提供了其下载方法如下:

  • conda install -c conda-forge basemap

  • conda install -c conda-forge/label/gcc7 basemap

  • conda install -c conda-forge/label/broken basemap

  • conda install -c conda-forge/label/cf201901 basemap

  • conda install -c conda-forge/label/cf202003 basemap

但是随着新项目的推出以及维护期逐渐接近尾声,basemap也将逐渐退出江湖。于是就转而使用folium,geoplot和cartopy,这三个包目前都是在conda forge 通道安装。简单描述一下,具体介绍上官网:
  • folium是d3.js上著名的地理信息可视化库leaflet.js为Python提供的接口,通过在Python端编写代码操纵数据,来调用leaflet的相关功能,基于内建的osm或自行获取的osm资源和地图原件进行地理信息内容的可视化,以及制作可交互地图。其安装语句为:conda install -c conda-forge folium
    http://python-visualization.github.io/folium/index.html

  • geoplot是一个高级的地理空间数据可视化Python库。它是cartopy和matplotlib的扩展,使得映射变得简单。其安装语句为:conda install -c conda-forge geoplot

    https://residentmario.github.io/geoplot/index.html

  • Cartopy 是一个处理地理信息生成地图和其他地理信息分析的Python 包。Cartopy利用了强大的PROJ.4、NumPy和Shapely库,并在Matplotlib之上构建了一个编程接口,用于创建发布质量的地图。cartopy的主要特点是面向对象的投影定义,以及在投影之间转换点、线、向量、多边形和图像的能力。Cartopy最初是在英国气象局开发的,目的是让科学家能够快速、方便、最重要的是准确地在地图上可视化他们的数据。Cartopy是根据GNU Lesser通用公共许可证的条款免费提供的。其安装语句为:conda install -c conda-forge cartopy

    https://scitools.org.uk/cartopy/docs/latest/index.html

import cartopy.crs as ccrsimport matplotlib.pyplot as pltplt.figure(figsize=(6, 3))ax = plt.axes(projection=ccrs.PlateCarree(central_longitude=180))ax.coastlines(resolution='110m')ax.gridlines()plt.show()

leaflet加载geojson数据_Python: 地理空间数据可视化Packages_第2张图片

folium可以直接加载geojson文件,后两者需要geopandas实现,geopandas也可以与pandas一同使用绘制地图,其安装语句如下:conda install -c conda-forge geopandas安装。


将空间相关的数据展绘到地图上是常见的需求,实际上也早有一些软件或工具包来完成这样的工作。比较专业的程序如支持 Windows、UNIX/Linux 等多种操作系统的命令行工具 GMT(Generic Mapping Tools),Python 绘图工具 matplotlib 的扩展包 Basemap,地理信息系统使用的专业软件 ArcGIS 等。但在我看来,这些工具也都有些美中不足之处。

本文将介绍 Python 的制图工具包 Cartopy,以及它在各平台的安装过程。

Cartopy 简介

对于制作用于演示说明的地图而言,ArcGIS 毫无疑问是在大材小用,GMT 和 Basemap 相对而言比较合适。但 GMT 大多数时间还是在命令提示符界面(或终端)中使用,要集成到程序中比较困难;而作为 Python 2 的殉葬品,Basemap 将在 2020 年停止维护。因此,如果你在寻找一个在 Python 中使用的制图工具包,作为 Basemap 钦定的继承人,Cartopy 几乎就是最好的选择了。

Cartopy 是一个开源免费的第三方 Python 扩展包,由英国气象办公室的科学家们开发,支持 Python 2.7 和 Python 3,致力于使用最简单直观的方式生成地图,并提供对 matplotlib 友好的协作接口。该工具包使用 LGPLv3 协议,代码托管在 Github 网站上。

安装

使用 Anaconda

如果你正在使用 Python 的科学计算发行版 Anaconda,安装 Cartopy 非常容易。你只需要运行:

1
$ conda install -c conda-forge cartopy

等待这个命令运行完毕,就能使用 Cartopy 了!

Linux 操作系统

在 Linux 上,安装 Cartopy 也很容易。Cartopy 依赖于 GEOS 和 PROJ.4 这两个包,所以需要首先安装所需的依赖:

1234
$ sudo apt-get install libgeos-dev$ sudo apt-get install libgeos++-dev$ sudo apt-get install proj-bin$ sudo apt-get install libproj-dev

然后使用 PIP 安装 Cartopy:

1
$ pip install cartopy

Windows 操作系统

在 Windows 系统的计算机上,你还可以使用 PIP 来安装预编译包的 Wheel 包。安装 Cartopy 所需的包有:

  • pyproj:处理地图投影变形,Cartopy 基于它定义了丰富的地图投影;

  • pillow:Python 的图像处理包,读写和操作栅格图像;

  • pyshp:Python 实现的 ESRI Shapefile 读写包;

  • shapely:操作和分析空间地理对象;

  • cartopy:Cartopy 安装包,地图制图工具。

你可以在 UC Irvine 的页面上找到这些工具包针对 Windows 操作系统的预编译版本。下载适合你的安装包,然后按照以上清单的顺序将所需要的程序包安装到计算机中。例如,我使用的是 64 位的 Python 3.5,因此安装过程如下:

1234567
$ pip install pyproj-1.9.5.1-cp35-cp35m-win_amd64.whl$ pip install Pillow-5.0.0-cp35-cp35m-win_amd64.whl$ pip install pyshp‑1.2.12‑py2.py3‑none‑any.whl$ pip install GDAL‑2.4.1‑cp35‑cp35m‑win_amd64.whl$ pip install Fiona‑1.8.6‑cp35‑cp35m‑win_amd64.whl$ pip install Shapely-1.6.4.post1-cp35-cp35m-win_amd64.whl$ pip install Cartopy-0.16.0-cp35-cp35m-win_amd64.whl

数据源

Cartopy 可以读取 Shapefile 作为输入的数据源,并且原生支持由 Natural Earth 或 GSHHS 发布的开源地理数据。但为了保持 Cartopy 的精致小巧,该包并未附带任何地理数据。只有当你首次使用某个数据源时,它才会进行下载,并保存在数据目录下以备以后使用。

为了在离线的情况下也能使用 Cartopy,你可以将预下载的地图数据放在其指定的文件夹内。Cartopy 的配置信息保存在 cartopy.config 变量中,要查看数据文件夹位置,你可以在 Python 终端中运行以下命令:

12
>>> import cartopy>>> print(cartopy.config['data_dir'])

你可以手动下载所需的数据并分门别类地放入 Cartopy 数据文件夹中。我已经下载并整理了常用的数据文件并打包为一个压缩文件,你可以解压后直接使用。它们包括:

  • 1:10m、1:50m、1:110m 比例尺的海岸线;

  • 1:10m、1:50m、1:110m 比例尺的海洋、陆地和岛屿;

  • 1:10m、1:50m、1:110m 比例尺的湖泊、河流;

  • 1:10m、1:50m、1:110m 比例尺的地理界线(赤道、回归线和极圈);

  • 1:10m、1:50m、1:110m 比例尺的国家界线;

  • 1:10m、1:50m、1:110m 比例尺的省、州界线;

  • 1:10m、1:50m、1:110m 比例尺的主要城市。

Hello World

Cartopy 的工作流非常简单:设置地图投影,添加地图要素,最后显示地图。Cartopy 与 matplotlib 协作得很好,对于高阶的功能,你可以直接使用 matplotlib。

下面是一个 Cartopy 版本的 “Hello world”:

123456789
import matplotlib.pyplot as pltimport cartopy.crs as ccrs# set projectionax = plt.axes(projection=ccrs.Robinson(central_longitude=150))# plot coastlines & gridlinesax.coastlines()ax.gridlines(linestyle='--')# show figureplt.show()

复制并运行以上命令,你将看到一副熟悉的世界地图。Cartopy 的使用就是这样,简单而直观!

leaflet加载geojson数据_Python: 地理空间数据可视化Packages_第3张图片世界地图

5ed9e47738869133beb4688228d74424.png

如需联系EasyShu团队

请加微信:EasyCharts

微信公众号【EasyShu】博文代码集合地址

https://github.com/Easy-Shu/EasyShu-WeChat

书籍购买

Python数据可视化之美-配套源代码下载地址

Github

https://github.com/Easy-Shu/Beautiful-Visualization-with-python

R语言数据可视化之美-增强版配套源代码下载地址

Github

https://github.com/Easy-Shu/Beautiful-Visualization-with-R

leaflet加载geojson数据_Python: 地理空间数据可视化Packages_第4张图片

你可能感兴趣的:(python,matplotlib,地图,python做大屏数据可视化)