应后台读者要求,绘制一下西藏地区的底图。数据来源于国家地理信息公共服务平台(天地图)。
相关库简介
Cartopy 是一个用于地理数据处理和可视化的 Python 库,专门设计来处理地图投影和地理空间数据的绘制。它是基于 Matplotlib 的高层次接口,主要用于创建地理参考图形和地图。Cartopy提供了丰富的功能来处理不同的地图投影、地理参考数据的转换,以及与流行的地理信息系统(GIS)数据格式的集成。
代码实现
导入相关库
# -*- coding: UTF-8 -*-
# 导入相关库
import numpy as np
import xarray as xr
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from copy import copy
from cartopy.mpl.gridliner import LATITUDE_FORMATTER, LONGITUDE_FORMATTER
import shapely.geometry as sgeom
加载数据
读取西藏地区的市、县的区划信息:
# 读取西藏市级行政区划
xzcity = gpd.read_file('西藏自治区_市.geojson')
# 读取西藏县级行政区划
xzcounty = gpd.read_file('西藏自治区_县.geojson')
西藏自治区市级行政区划展示
# 设置地图投影
proj = ccrs.LambertConformal(central_longitude=90, central_latitude=90,standard_parallels=(25, 47))
# 设置图片大小
fig = plt.figure(figsize=[10, 8],frameon=True)
# Set projection and plot the main figure
ax = fig.add_axes([0.08, 0.05, 0.8, 0.94], projection=proj)
# 设置地图范围
ax.set_extent([75, 105, 25, 40],crs=ccrs.PlateCarree())
# 添加地理要素
ax.add_geometries(xzcity.geometry,
crs=ccrs.PlateCarree(),
edgecolor='k',
facecolor='none',
zorder=1)
# 添加海洋、陆地、河流、湖泊
ax.add_feature(cfeature.OCEAN.with_scale('50m'),zorder=0)
ax.add_feature(cfeature.LAND.with_scale('50m'),zorder=0)
ax.add_feature(cfeature.RIVERS.with_scale('50m'),zorder=0)
ax.add_feature(cfeature.LAKES.with_scale('50m'),zorder=0)
# 设置并添加经纬度标签
xticks = [75, 85, 95, 105, 115]
yticks = [20, 25 , 30 , 35 , 40 , 45 ]
gl = ax.gridlines(xlocs=xticks,
ylocs=yticks,
draw_labels=True,
x_inline=False,
y_inline=False,
linewidth=1,
color='dimgrey',
alpha=0.5,
linestyle='--')
gl.top_labels = False
gl.right_labels = False
gl.xformatter = LONGITUDE_FORMATTER
gl.yformatter = LATITUDE_FORMATTER
# 添加海洋、陆地、河流、湖泊
sub_ax.add_feature(cfeature.OCEAN.with_scale('50m'))
sub_ax.add_feature(cfeature.LAND.with_scale('50m'))
sub_ax.add_feature(cfeature.RIVERS.with_scale('50m'))
sub_ax.add_feature(cfeature.LAKES.with_scale('50m'))
plt.show()
结果展示
西藏自治区市级行政区划底图
推荐阅读
欢迎关注我的公众号“AI拾贝”,原创技术文章第一时间推送。后台发送ChinaMap,自动回复源码和数据。