likes
comments
collection
share

绘制高分辨率的地形图:用geopandas库在PyGMT地图上面叠加shapefile数据

作者站长头像
站长
· 阅读数 2

如何将多边形形状叠加到高分辨率的地图上

在这篇文章中我们将学习如何在PyGMT地图上面使用geopandas绘制选定的shapefile数据。

Python中的PyGMT库使绘制高分辨率的地形图变得轻而易举。它与海岸线、国家边界和地形数据打包在一起。通常,我们需要利用现有的shapefile(SHP)数据在地图上突出任意选择的多边形形状或区域。

PyGMT:Python中的高分辨率地形图(包括代码

绘制高分辨率的地形图:用geopandas库在PyGMT地图上面叠加shapefile数据

照片:Andrew StutesmanonUnsplash

在这篇文章中,我们将看到如何使用geopandas库在PyGMT地图上面叠加shapefile数据。例如,在这里,我从data.gov.tw获得了.shp格式的县域数据,并将其叠加到台湾的高分辨率地图上。

导入库

我们将使用geopandas库来读取.shp文件。

import pygmt

县级shp数据

我从各县下载了shp数据,并将其保存在工作目录的countiesData中。countiesData里有多个文件,但我们只需要COUNTY_MOI_1090820.shp文件。其他的是相关的扩展文件。

我们选择了要在地图上突出显示的两个县--台北市、台南市。

countiesShp = os.path.join("countiesData","COUNTY_MOI_1090820.shp")
gdf = gpd.read_file(countiesShp)
all_data = []

使用PyGMT绘制基图

现在,我们可以用PyGMT绘制简单的基图。使用PyGMT的好处是,我们不需要单独的海岸线和地形数据,而且输出的结果是高分辨率的。

region = [119, 123, 21, 26]
fig = pygmt.Figure()
fig.coast( 

叠加各县的数据

现在,我们可以叠加选定的县,用绿色填充它们,然后把所有其他县的背景颜色(白色)。

for data_shp in all_data:

以光栅和矢量格式保存地图

现在,我们可以将地图保存为栅格和矢量格式,以便以后使用。

fig.savefig('map1.png')

绘制高分辨率的地形图:用geopandas库在PyGMT地图上面叠加shapefile数据

带有县的简单台湾地图 (图片由作者提供)

地形图

我们可以使用地形图的背景,而不是使用简单的白色作为背景(在我看来,这看起来相当体面)。

import pygmt
countiesShp = os.path.join("countiesData","COUNTY_MOI_1090820.shp")
gdf = gpd.read_file(countiesShp)
all_data = []
region = [119, 123, 21, 26]
fig = pygmt.Figure()
fig.coast( 
for data_shp in all_data:
fig.savefig('map1.png')

绘制高分辨率的地形图:用geopandas库在PyGMT地图上面叠加shapefile数据

带县的台湾地形图 (图片由作者提供)

结论

我们已经看到了如何在PyGMT地图上轻松添加shapefile数据。我们在台湾的基础地图上绘制了各县的数据。此外,我们创建了一个高分辨率的地形图,并在上面叠加了shapefile数据。

如何在PyGMT地图上叠加shapefile数据

原文发表于 https://www.earthinversion.com 于2021年7月17日。

绘制高分辨率的地形图:用geopandas库在PyGMT地图上面叠加shapefile数据


如何在PyGMT地图上叠加shapefile数据》最初发表在《走向数据科学》上,人们在Medium上通过强调和回应这个故事继续对话。