给你,照猫画虎十分钟就能搞定一张带边界的地形图

我有个朋友拖拖拉拉的,这次终于决定动手做一张带国界线的地形图。他看了论文里的地图就心动不已,立马开干。结果代码才敲两行,就卡在怎么把地形阴影和边界一起画出来的问题上。下面我把整个过程分享给你,照猫画虎十分钟就能搞定一张带边界的地形图。 首先得准备好工具和数据。 我们用geopandas来处理空间数据,matplotlib负责画图,Basemap用来叠加地形阴影,这三个组合在一起基本能解决90%的地图需求了。数据方面,这次用论文里的共边界Shapefile就好,记得把路径改到自己的文件夹里。 接下来就是画图的五步法。 第一步,读取Shapefile文件。这里用Python代码导入geopandas、Basemap和matplotlib库,然后把QTP这个GeoDataFrame给读进来。 第二步,初始化地图对象。设置一个10乘10英寸的画布,用QTP的total_bounds来自动确定地图的最小外接矩形范围。然后调用Basemap的投影方法初始化地图对象m。 第三步,叠加地形阴影。这一步最容易出错了,Basemap的shadedrelief方法必须在drawcountries或drawcoastlines之后调用才行。先把国界线画出来作为坐标参考,再给它贴上地形阴影。 第四步,把边界画成红色线条。把GeoDataFrame的几何列直接传给plot函数,自定义颜色和线宽就能搞定了。 第五步,保存与展示成果。给图片加个标题叫“Topographic map of the Tibet-Himalaya-Hengduan region”,然后用高分辨率保存为HPP.jpg文件,最后弹出预览窗口看一眼成果。 整个过程其实挺简单的,不需要写太复杂的函数,只要按照步骤来就行。如果遇到Basemap报错路径不对的问题,多半是引号、斜杠或者空格没处理好,仔细对照模板就能解决了。