使用 Python 构建地理图
介绍
Geoplot是一个绘图库,是cartopy和matplotlib之上的高级 API 。其背后的想法是让最终用户更容易创建填充数据的美观地理空间地图。
设置
pip install geoplot
该软件包与平台无关,因此它应该可以在 Windows/Linux 或 macOS 上运行。
以我的经验来看,这是行不通的。
以下是有效的方法。如果您尚未安装anaconda,则应先安装它。我将向您展示的以下演示是在 CentOS 7 计算机上创建的。首先下载Linux 的x64安装程序,然后发出以下命令:
sudo ./Anaconda3-2019.03-Linux-x86_64.sh
接受默认设置,然后在安装完成后打开一个新 shell 并以 root 身份发出以下命令:
conda config --set channel_priority strict
这修复了 anaconda 中的混合通道问题。然后编辑~/.condarc文件,编辑后文件将如下所示:
channel_priority: strict
channels:
- conda-forge
- defaults
最后,我们可以安装geoplot包。使用root用户安装它,因为它必须访问标准用户无权访问的地方。
conda install geoplot -c conda-forge
这可能需要一些时间,但这是值得的。安装完成后,我们就可以直接开始安装。
示例
默认情况下,geoplot附带一些您可以尝试的数据集。根据我的经验,jupyter是最简单的方法。让我们启动一个笔记本并创建我们的第一个示例。发出以下命令:
jupyter notebook
默认情况下,您的浏览器应该打开一个带有空白页的新窗口。
在右侧,您将发现一个新按钮,它允许您启动笔记本的新实例。
这是我们想要填充的新空白笔记本。
让我们分析一下这个例子。
%matplotlib inline
这是jupyter 中面向行的 魔法函数。
import geopandas as gpd
import geoplot as gplt
这些是 Python 中的特殊导入语句;这些导入行的结果,以便您可以用较短的名称引用模块提供的功能。例如,您可以说gpd.read_file()而不是geopandas.read_file()。这在 Python 中很常见,流行的模块也提供了这样的示例。
cities = gpd.read_file(gplt.datasets.get_path('usa_cities'))
gplt.pointplot(cities)
cities变量保存所有美国城市坐标。这是一个嵌套函数调用。首先,我们使用gplt.datasets.get_path('usa_cities')获取数据集,然后将它们传递给gpd.read_file()函数。
我们还想将点投影到地图上。具体操作如下。首先,我们创建地图:
我们使用与获取城市数据集相同的方法。然后我们使用多图使其可见。
这次,我们将城市数据框传递给pointplot函数,并将ax参数指定为我们创建的名为contiguous_usa 的框架。
圆形的地球
此示例将向您展示如何使用球形地球作为地图:
我们使用geoplot的crs子模块的命名导入。crs指的是坐标参考系。它是cartopy.crs模块的包装器,旨在作为geoplot输出投影参数的参数。我们创建一个名为fdp_pp的新列,然后使用ployplot函数来绘制它。figsize是一个网格状参数,它指定 plotsize 应该是多少英寸,并以元组作为参数。outline_patch.set_visible (True)创建了我们星球的漂亮轮廓。
关于投影
投影将定义使用任一可用的绘图函数渲染地图时的外观。选择投影类型时,您需要确保使用的数据是合适的。您使用的数据将采用 GeoJSON 格式,该格式是使用非空间属性表示简单地理特征的标准。所以,基本上,它允许您描述一座山、一块礁石、一个村庄或任何您想表示的东西。geoplot 中的投影仅准备处理适合该类型的数据;这意味着如果您提供的 GeoJSON 数据格式不正确,您可能会遇到错误。例如,如果我们用gcrs.OSNI()替换投影,则会出现以下错误。
这意味着数据处理器期望的格式与它收到的格式不同。它们期望的投影类型和格式有很多,需要花时间进行试验才能找到正确的格式。
GeoJSON 源
热门来源列表:
结论
带有 GeoJSON 数据的geoplot库提供了一种简单易学的技术,可让您构建出色的地图并可视化您想要呈现的数据。根据我的经验,熟能生巧,有很多关于 geoplot 更具体应用的优秀教程,我无法在本指南中介绍。深入研究此应用程序,有几十种方法可以利用它。我个人在日常工作中使用它,因为我们有带有坐标的设备,我们需要将其放在地图上,而制造商的默认应用程序运行缓慢,有时甚至会提供错误的信息,但这个模块拯救了我们!
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~