import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
#中国行政区域数据来源GMT中文社区:https://docs.gmt-china.org/latest/dataset-CN/CN-border/
# 读取坐标数据
with open(r'D:\GMT\data\china-geospatial-data-GB2312\CN-border-La.gmt') as src:
context = src.read()
blocks = [cnt for cnt in context.split('>') if len(cnt) > 0]
borders = [np.fromstring(block, dtype=float, sep=' ') for block in blocks]
#设置画图参数
fig = plt.figure(figsize=[12, 8])
ax = plt.axes(projection=ccrs.PlateCarree())
# ax = plt.axes(projection=ccrs.LambertConformal(central_latitude=90,central_longitude=105))
#画海洋、陆地、河流、湖泊
ax.add_feature(cfeature.OCEAN.with_scale('50m'))
ax.add_feature(cfeature.LAND.with_scale('50m'))
ax.add_feature(cfeature.RIVERS.with_scale('50m'))
ax.add_feature(cfeature.LAKES.with_scale('50m'))
#绘制国界、省界、十段线、海南诸岛数据
for line in borders:
ax.plot(line[0::2], line[1::2], '-', color='gray',transform=ccrs.Geodetic())
# 画经纬度网格
gl = ax.gridlines(draw_labels=True, linewidth=1, color='k', alpha=0.5, linestyle='--')
gl.xlabels_top = False #关闭顶端标签
gl.ylabels_right = False #关闭右侧标签
gl.xformatter = LONGITUDE_FORMATTER #x轴设为经度格式
gl.yformatter = LATITUDE_FORMATTER #y轴设为纬度格式
ax.set_extent([80, 130, 13, 55])
plt.show()
python cartopy绘制中国区域(包含国界、省界、十段线以及海南诸岛)
于 2022-04-27 21:11:39 首次发布