基于Python的地图绘制教程(附源码)

本文将介绍通过Python绘制地形图的方法,所需第三方Python相关模块包括 rasterio、geopandas、cartopy 等,可通过 pip 等方式安装。

1 示例代码

1.1 导入相关模块



<table width="643">
<tbody style="outline: 0px;visibility: visible;">
<tr style="outline: 0px;visibility: visible;">
<td data-line-number="1" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);visibility: visible;"><br></td>
<td data-line-number="1" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;visibility: visible;">
<span style="outline: 0px;color: rgb(86, 156, 214);visibility: visible;">
import
</span> rasterio
</td>
</tr><tr style="outline: 0px;visibility: visible;">
<td data-line-number="2" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);visibility: visible;"><br>
</td><td data-line-number="2" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;visibility: visible;">
<span style="outline: 0px;color: rgb(86, 156, 214);visibility: visible;">import
</span> geopandas <span style="outline: 0px;color: rgb(86, 156, 214);visibility: visible;">as</span> gpd</td></tr>
<tr style="outline: 0px;visibility: visible;">
<td data-line-number="3" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);visibility: visible;"><br>
</td><td data-line-number="3" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;visibility: visible;">
<span style="outline: 0px;color: rgb(86, 156, 214);visibility: visible;">import
</span> numpy <span style="outline: 0px;color: rgb(86, 156, 214);visibility: visible;">as</span> np</td></tr><tr style="outline: 0px;visibility: visible;"><td data-line-number="4" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);visibility: visible;"><br>
</td><td data-line-number="4" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;visibility: visible;">
<span style="outline: 0px;color: rgb(86, 156, 214);visibility: visible;">import</span> cartopy.crs <span style="outline: 0px;color: rgb(86, 156, 214);visibility: visible;">as
</span> ccrs</td></tr><tr style="outline: 0px;visibility: visible;">
<td data-line-number="5" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);visibility: visible;"><br>
</td><td data-line-number="5" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;visibility: visible;"><span style="outline: 0px;color: rgb(86, 156, 214);visibility: visible;">import</span> matplotlib.pyplot <span style="outline: 0px;color: rgb(86, 156, 214);visibility: visible;">as</span> plt</td></tr><tr style="outline: 0px;visibility: visible;"><td data-line-number="6" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);visibility: visible;">
<br></td><td data-line-number="6" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;visibility: visible;">
<span style="outline: 0px;color: rgb(86, 156, 214);visibility: visible;">from</span> matplotlib.colors <span style="outline: 0px;color: rgb(86, 156, 214);visibility: visible;">
import</span> LinearSegmentedColormap
</td>
</tr>
</tbody>
</table>


1.2 设置地图字体及字号


<table width="643"><tbody style="outline: 0px;visibility: visible;">
<tr style="outline: 0px;visibility: visible;">
<td data-line-number="1" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);visibility: visible;"><br></td>
<td data-line-number="1" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;visibility: visible;">plt.rcParams[<span style="outline: 0px;color: rgb(214, 157, 133);visibility: visible;">"font.family"</span>] = <span style="outline: 0px;color: rgb(214, 157, 133);visibility: visible;">"Times New Roman"</span></td></tr>
<tr style="outline: 0px;visibility: visible;"><td data-line-number="2" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);visibility: visible;"><br></td>
<td data-line-number="2" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;visibility: visible;">plt.rcParams[<span style="outline: 0px;color: rgb(214, 157, 133);visibility: visible;">"font.size"</span>] = <span style="outline: 0px;color: rgb(184, 215, 163);visibility: visible;">14</span></td></tr></tbody></table>

1.3 绘制地图



<table width="768" style="width: 768px;"><tbody style="outline: 0px;visibility: visible;"><tr style="outline: 0px;visibility: visible;"><td data-line-number="1" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);visibility: visible;"><br></td><td data-line-number="1" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;visibility: visible;"><span style="outline: 0px;color: rgb(87, 166, 74);font-style: italic;visibility: visible;"> 设置投影:墨卡托投影</span></td></tr><tr style="outline: 0px;visibility: visible;"><td data-line-number="2" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);visibility: visible;"><br></td><td data-line-number="2" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;visibility: visible;"><span style="outline: 0px;color: rgb(87, 166, 74);font-style: italic;visibility: visible;">cartopy 投影说明:https://www.cnblogs.com/youxiaogang/p/14247184.html</span></td></tr><tr style="outline: 0px;visibility: visible;"><td data-line-number="3" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);visibility: visible;"><br></td><td data-line-number="3" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;visibility: visible;">projection = ccrs.Mercator()</td></tr><tr style="outline: 0px;visibility: visible;"><td data-line-number="4" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);visibility: visible;"><br></td><td data-line-number="4" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;visibility: visible;"><br></td></tr><tr style="outline: 0px;visibility: visible;"><td data-line-number="5" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);visibility: visible;"><br></td><td data-line-number="5" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;visibility: visible;"><span style="outline: 0px;color: rgb(87, 166, 74);font-style: italic;visibility: visible;"> 绘制地图</span></td></tr><tr style="outline: 0px;visibility: visible;"><td data-line-number="6" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);visibility: visible;"><br></td><td data-line-number="6" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;visibility: visible;"><span style="outline: 0px;visibility: visible;">fig, ax = plt.subplots(figsize=(</span><span style="outline: 0px;color: rgb(184, 215, 163);visibility: visible;">20</span><span style="outline: 0px;visibility: visible;">, </span><span style="outline: 0px;color: rgb(184, 215, 163);visibility: visible;">10</span><span style="outline: 0px;visibility: visible;">), subplot_kw={</span><span style="outline: 0px;color: rgb(214, 157, 133);visibility: visible;">'projection'</span><span style="outline: 0px;visibility: visible;">: projection})</span></td></tr><tr style="outline: 0px;"><td data-line-number="7" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="7" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;"><br></td></tr><tr style="outline: 0px;"><td data-line-number="8" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="8" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;"><span style="outline: 0px;color: rgb(87, 166, 74);font-style: italic;">
# 设置地图范围(数值参数为对应投影下的范围坐标)
</span></td></tr><tr style="outline: 0px;"><td data-line-number="9" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="9" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;"><span style="outline: 0px;">ax.set_extent([</span><span style="outline: 0px;color: rgb(184, 215, 163);">13530000</span><span style="outline: 0px;">, </span><span style="outline: 0px;color: rgb(184, 215, 163);">14630000</span><span style="outline: 0px;">, </span><span style="outline: 0px;color: rgb(184, 215, 163);">4960000</span><span style="outline: 0px;">, </span><span style="outline: 0px;color: rgb(184, 215, 163);">5850000</span><span style="outline: 0px;">], crs=projection)</span></td></tr><tr style="outline: 0px;"><td data-line-number="10" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="10" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;"><br></td></tr><tr style="outline: 0px;"><td data-line-number="11" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="11" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;"><span style="outline: 0px;color: rgb(87, 166, 74);font-style: italic;"><span style="outline: 0px;">
# 读取
</span>矢量文件</span></td></tr><tr style="outline: 0px;"><td data-line-number="12" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="12" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">shp = gpd.read_file(<span style="outline: 0px;color: rgb(214, 157, 133);">"Data/Jilin_Mercator.shp"</span>)</td></tr><tr style="outline: 0px;"><td data-line-number="13" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="13" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">shp.plot(ax=ax, transform=projection, edgecolor=<span style="outline: 0px;color: rgb(214, 157, 133);">"black"</span>, linewidth=<span style="outline: 0px;color: rgb(184, 215, 163);">1</span>, facecolor=<span style="outline: 0px;color: rgb(214, 157, 133);">"none"</span>)</td></tr><tr style="outline: 0px;"><td data-line-number="14" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="14" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;"><br></td></tr><tr style="outline: 0px;"><td data-line-number="15" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="15" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;"><span style="outline: 0px;color: rgb(87, 166, 74);font-style: italic;">
# 创建自定义颜色映射
</span></td></tr><tr style="outline: 0px;"><td data-line-number="16" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="16" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">colors = [<span style="outline: 0px;color: rgb(214, 157, 133);">"#369121"</span>, <span style="outline: 0px;color: rgb(214, 157, 133);">"#95C769"</span>, <span style="outline: 0px;color: rgb(214, 157, 133);">"#FFFFBF"</span>, <span style="outline: 0px;color: rgb(214, 157, 133);">"#E6865A"</span>, <span style="outline: 0px;color: rgb(214, 157, 133);">"#D14E30"</span>, <span style="outline: 0px;color: rgb(214, 157, 133);">"#BA1414"</span>]</td></tr><tr style="outline: 0px;"><td data-line-number="17" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="17" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">n_bins = <span style="outline: 0px;color: rgb(184, 215, 163);">100</span>  <span style="outline: 0px;color: rgb(87, 166, 74);font-style: italic;">
# 定义色带的颜色数量
</span></td></tr><tr style="outline: 0px;"><td data-line-number="18" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="18" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">cmap_name = <span style="outline: 0px;color: rgb(214, 157, 133);">"green_brown"</span></td></tr><tr style="outline: 0px;"><td data-line-number="19" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="19" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">cm = LinearSegmentedColormap.from_list(cmap_name, colors, N=n_bins)</td></tr><tr style="outline: 0px;"><td data-line-number="20" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="20" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;"><br></td></tr><tr style="outline: 0px;"><td data-line-number="21" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="21" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;"><span style="outline: 0px;color: rgb(87, 166, 74);font-style: italic;">
# 读取地形栅格数据
</span></td></tr><tr style="outline: 0px;"><td data-line-number="22" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="22" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">dataset = rasterio.<span style="outline: 0px;color: rgb(78, 201, 176);">open</span>(<span style="outline: 0px;color: rgb(214, 157, 133);">"Data/DEM_Jilin_Mercator.tif"</span>)</td></tr><tr style="outline: 0px;"><td data-line-number="23" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="23" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">data = dataset.read(<span style="outline: 0px;color: rgb(184, 215, 163);">1</span>)  <span style="outline: 0px;color: rgb(87, 166, 74);font-style: italic;">
# 读取第一个波段的数据
</span></td></tr><tr style="outline: 0px;"><td data-line-number="24" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="24" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">nodata_value = dataset.nodata   <span style="outline: 0px;color: rgb(87, 166, 74);font-style: italic;">
# 获取NoData值
</span></td></tr><tr style="outline: 0px;"><td data-line-number="25" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="25" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;"><span style="outline: 0px;color: rgb(87, 166, 74);font-style: italic;">
# 创建掩膜,去除NoData区域
</span></td></tr><tr style="outline: 0px;"><td data-line-number="26" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="26" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">data = np.ma.masked_where(data == nodata_value, data)</td></tr><tr style="outline: 0px;"><td data-line-number="27" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="27" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;"><br></td></tr><tr style="outline: 0px;"><td data-line-number="28" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="28" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;"><span style="outline: 0px;color: rgb(87, 166, 74);font-style: italic;">
# 将地形栅格添加到地图中
</span></td></tr><tr style="outline: 0px;"><td data-line-number="29" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="29" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">extent = [dataset.bounds.left, dataset.bounds.right,</td></tr><tr style="outline: 0px;"><td data-line-number="30" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="30" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">dataset.bounds.bottom, dataset.bounds.top]</td></tr><tr style="outline: 0px;"><td data-line-number="31" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="31" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">im = ax.imshow(data, origin=<span style="outline: 0px;color: rgb(214, 157, 133);">"upper"</span>, extent=extent,</td></tr><tr style="outline: 0px;"><td data-line-number="32" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="32" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">transform=projection, cmap=cm)</td></tr><tr style="outline: 0px;"><td data-line-number="33" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="33" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;"><br></td></tr><tr style="outline: 0px;"><td data-line-number="34" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="34" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;"><span style="outline: 0px;color: rgb(87, 166, 74);font-style: italic;">
# 绘制网格线并添加标签
</span></td></tr><tr style="outline: 0px;"><td data-line-number="35" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="35" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">gl = ax.gridlines(draw_labels=<span style="outline: 0px;color: rgb(86, 156, 214);">True</span>, linestyle=<span style="outline: 0px;color: rgb(214, 157, 133);">"--"</span>, color=<span style="outline: 0px;color: rgb(214, 157, 133);">"#4F4F4F"</span>)</td></tr><tr style="outline: 0px;"><td data-line-number="36" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="36" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">gl.xlocator = plt.FixedLocator(<span style="outline: 0px;color: rgb(78, 201, 176);">range</span>(<span style="outline: 0px;color: rgb(184, 215, 163);">120</span>, <span style="outline: 0px;color: rgb(184, 215, 163);">135</span>, <span style="outline: 0px;color: rgb(184, 215, 163);">3</span>))</td></tr><tr style="outline: 0px;"><td data-line-number="37" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="37" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">gl.ylocator = plt.FixedLocator(<span style="outline: 0px;color: rgb(78, 201, 176);">range</span>(<span style="outline: 0px;color: rgb(184, 215, 163);">40</span>, <span style="outline: 0px;color: rgb(184, 215, 163);">50</span>, <span style="outline: 0px;color: rgb(184, 215, 163);">2</span>))</td></tr><tr style="outline: 0px;"><td data-line-number="38" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="38" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;"><br></td></tr><tr style="outline: 0px;"><td data-line-number="39" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="39" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;"><span style="outline: 0px;color: rgb(87, 166, 74);font-style: italic;">
# 添加色带,设置色带的缩放比例为 0.4,主图和色带之间的间距为 0.1
</span></td></tr><tr style="outline: 0px;"><td data-line-number="40" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="40" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">cbar = plt.colorbar(im, ax=ax, orientation=<span style="outline: 0px;color: rgb(214, 157, 133);">"horizontal"</span>, shrink=<span style="outline: 0px;color: rgb(184, 215, 163);">0.4</span>, pad=<span style="outline: 0px;color: rgb(184, 215, 163);">0.1</span>)</td></tr><tr style="outline: 0px;"><td data-line-number="41" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="41" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">cbar.set_label(<span style="outline: 0px;color: rgb(214, 157, 133);">"Elevation (m)"</span>, labelpad=<span style="outline: 0px;color: rgb(184, 215, 163);">10</span>) <span style="outline: 0px;color: rgb(87, 166, 74);font-style: italic;">
# 设置色带标签与色带的距离为 10 点
</span></td></tr><tr style="outline: 0px;"><td data-line-number="42" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="42" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">cbar.ax.xaxis.set_label_position(<span style="outline: 0px;color: rgb(214, 157, 133);">"top"</span>)  <span style="outline: 0px;color: rgb(87, 166, 74);font-style: italic;">
# 设置色带标签位置
</span></td></tr><tr style="outline: 0px;"><td data-line-number="43" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="43" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;"><br></td></tr><tr style="outline: 0px;"><td data-line-number="44" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="44" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">plt.savefig(<span style="outline: 0px;color: rgb(214, 157, 133);">"Pic.jpg"</span>, dpi=<span style="outline: 0px;color: rgb(184, 215, 163);">600</span>)</td></tr><tr style="outline: 0px;"><td data-line-number="45" style="padding: 0px 14px;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;user-select: none;text-align: center;vertical-align: top;color: rgb(191, 191, 191);"><br></td><td data-line-number="45" style="padding: initial;outline: 0px;word-break: break-all;hyphens: auto;border-width: initial;border-style: none;border-color: initial;border-collapse: initial;min-width: initial;">plt.show()</td></tr></tbody></table>


2 结果图展示

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取保证100%免费

很抱歉,我无法提供具体的源码,但是我可以给你一些关于Python校园导航系统的一般介绍和实现思路。 Python校园导航系统是一个基于Python语言开发的应用程序,旨在帮助学生和教职工在校园内快速定位和导航到目标地点。下面是一个可能的实现思路: 1. 地图数据:首先需要获取校园地图的数据,可以使用地图API或者手动绘制地图地图数据可以包括建筑物、道路、停车场等信息。 2. 用户界面:开发一个用户友好的界面,可以使用Python的GUI库(如Tkinter、PyQt)或者Web框架(如Django、Flask)来实现。界面应该包括搜索框、地图显示区域和导航结果展示区域。 3. 搜索功能:用户可以通过搜索框输入目标地点的关键词,系统需要提供搜索功能来匹配用户输入并返回相关结果。可以使用字符串匹配算法(如KMP算法、Trie树)来实现高效的搜索功能。 4. 导航算法:一旦用户选择了目标地点,系统需要计算最短路径或最优路径来进行导航。可以使用图论算法(如Dijkstra算法、A*算法)来实现路径规划功能。 5. 地图展示:根据用户选择的目标地点和导航结果,系统需要在地图上标注出路径和目标位置。可以使用地图绘制库(如Matplotlib、OpenCV)来实现地图展示功能。 6. 其他功能:除了基本的导航功能,还可以考虑添加其他功能,如实时交通信息、周边设施查询等。 以上是一个简单的Python校园导航系统的实现思路,具体的源码实现可能会涉及到更多的细节和技术选择。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值