前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于上期葵花卫星绘图补充

关于上期葵花卫星绘图补充

作者头像
用户11172986
发布2024-06-20 16:36:22
670
发布2024-06-20 16:36:22
举报
文章被收录于专栏:气python风雨气python风雨

*封面图片由ai生成

昨日有读者提到葵花卫星图是使用imshow绘制的,能不能添加经纬度刻度?小编测试一下是可行的。 代码与效果如下

增加经纬度刻度

代码语言:javascript
复制
代码语言:javascript
复制
import cartopy.crs as ccrs
import matplotlib.pyplot as plt

dat = ds2.metpy.parse_cf('channel_0001_scaled_radiance')
geos = dat.metpy.cartopy_crs
x = dat.x
y = dat.y

fig = plt.figure(figsize=(15, 12))
ax = fig.add_subplot(1, 1, 1, projection=geos)
ax.imshow(rgb, origin='upper', extent=(x.min(), x.max(), y.min(), y.max()), transform=geos)

# 添加经纬度网格线
ax.gridlines(draw_labels=True, dms=True, x_inline=False, y_inline=False)

# 添加海岸线和边界
ax.coastlines(resolution='50m', color='white', linewidth=1)
ax.add_feature(ccrs.cartopy.feature.BORDERS, linewidth=1)

plt.title('True Color', loc='left', fontweight='bold', fontsize=15)

plt.show()
代码语言:javascript
复制

只需添加ax.gridlines函数即可。

显示局部地区的经纬度刻度的代码效果如下

代码语言:javascript
复制
代码语言:javascript
复制
#获取投影
dat = ds2.metpy.parse_cf('channel_0001_scaled_radiance')

geos = dat.metpy.cartopy_crs
#转换RGB
vmin = 0
vmax = .5
B1 = b1[1000:4000,1000:3500].clip(vmin, vmax) / vmax * 255
B2 = b2[1000:4000,1000:3500].clip(vmin, vmax) / vmax * 255
B3 = b3[1000:4000,1000:3500].clip(vmin, vmax) / vmax * 255

X = x[1000:4000]
Y = y[1000:3500]
rgb = np.stack((B3, B2, B1), axis=2).astype('uint8')

fig = plt.figure(figsize=(20,12))
ax1 = fig.add_subplot(121, projection=geos)
ax2 = fig.add_subplot(122, projection=geos)
# Plot image
ax1.imshow(rgb,extent=(X[0], X[-1], Y[-1], Y[0]))

ax2.imshow(rgb, origin='upper',extent=(X[0], X[-1], Y[-1], Y[0]), transform=geos)

# Add Coastlines and States
ax2.coastlines(resolution='50m', color='white', linewidth=1)
ax2.add_feature(ccrs.cartopy.feature.STATES, linewidth=1)
gl = ax1.gridlines(draw_labels=True, alpha=0.5, linewidth=1, color='w', linestyle='--')

gl.xlabels_top = False  # 关闭顶端标签
gl.ylabels_right = False  # 关闭右侧标签
gl.xformatter = LONGITUDE_FORMATTER  # x轴设为经度格式
gl.yformatter = LATITUDE_FORMATTER  # y轴设为纬度格式
plt.title('Himawari 8 \n', fontsize=20)

# Adjust tick mark size
plt.tick_params(labelsize=16)
代码语言:javascript
复制

如何处理乱套的经纬度刻度呢,可以参考Andrew Dawson 提供的解决方法: https://gist.github.com/ajdawson/dd536f786741e987ae4e

谢谢观看

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 气python风雨 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 增加经纬度刻度
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档