爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 10295|回复: 9

[求助] 使用Pycinrad读取标准格式雷达基数据生成透明png图片

[复制链接]

新浪微博达人勋

发表于 2021-11-30 15:53:00 | 显示全部楼层 |阅读模式
30金钱
本帖最后由 mrsoberli 于 2021-12-2 10:46 编辑

# 脚本功能:读取标准格式雷达基数据,生成透明png图片,并获取png图片的四个角的经纬度位置
# 可供WEBGIS调用显示,例如leaflet、高德地图等;
# 要求:透明图没有任何边框,确保经纬度位置完成正确。

自己乱写了个,但不知道经纬度位置到底正确不?图片有没有空白边框?请教大佬们帮忙看看。

  1. # -*- encoding: utf8 -*-

  2. # 脚本功能:读取标准格式雷达基数据,生成透明png图片,并获取png图片的四个角的经纬度位置
  3. # 可供WEBGIS调用显示,例如leaflet、高德地图等;
  4. # 要求:透明图没有任何边框,确保经纬度位置完成正确。
  5. import os
  6. import datetime
  7. import sys
  8. import time
  9. import cinrad
  10. import cartopy.crs as ccrs
  11. import matplotlib.pyplot as plt
  12. from cartopy.mpl.geoaxes import GeoAxes
  13. from cinrad.visualize.utils import *
  14. from cinrad.common import get_dtype, is_radial

  15. def plotTransparent(data,savePngFile,**kwargs):
  16.     fig = plt.figure(figsize=(10,10),dpi=160)
  17.     plt.axis("off")
  18.     plt.gca().xaxis.set_major_locator(plt.NullLocator())
  19.     plt.gca().yaxis.set_major_locator(plt.NullLocator())
  20.     plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, hspace = 0, wspace = 0)
  21.     plt.margins(0,0)
  22.     proj = ccrs.AzimuthalEquidistant(
  23.                 central_longitude=data.site_longitude,
  24.                 central_latitude=data.site_latitude,
  25.             )
  26.     ax = fig.add_axes([0,0,1,1], projection=proj)
  27.     # ax.background_patch.set_visible(False)
  28.     # ax.outline_patch.set_visible(False)
  29.     ax.set_aspect("equal")
  30.     lon = data["longitude"].values
  31.     lat = data["latitude"].values
  32.     extent= [lon.min(), lon.max(), lat.min(), lat.max()]
  33.     ax.set_extent(extent, crs=ccrs.PlateCarree())
  34.     geoax: GeoAxes = ax
  35.     dtype = get_dtype(data)
  36.     pnorm = norm_plot[dtype]
  37.     pcmap = cmap_plot[dtype]
  38.     var = data[dtype].values
  39.     data_crs = ccrs.PlateCarree()
  40.     geoax.pcolormesh(lon, lat, var, norm=pnorm, cmap=pcmap, transform=data_crs, **kwargs)
  41.     autoscale(geoax)
  42.     plt.savefig(savePngFile,transparent=True, pad_inches=0)
  43.    
  44. def autoscale(geoax):
  45.     llon, ulon, llat, ulat =geoax.get_extent()
  46.     lon_delta = ulon - llon
  47.     lat_delta = ulat - llat
  48.     if lon_delta == lat_delta:
  49.         return
  50.     if lon_delta > lat_delta:
  51.         # The long axis is x-axis
  52.         lat_center = (ulat + llat) / 2
  53.         lat_extend = lon_delta / 2
  54.         llat = lat_center - lat_extend
  55.         ulat = lat_center + lat_extend
  56.     elif lon_delta < lat_delta:
  57.         # The long axis is y-axis
  58.         lon_center = (ulon + llon) / 2
  59.         lon_extend = lat_delta / 2
  60.         llon = lon_center - lon_extend
  61.         ulon = lon_center + lon_extend
  62.     # print([llon, ulon, llat, ulat])
  63.     geoax.set_extent([llon, ulon, llat, ulat], geoax.projection)

  64. bz2file="Z_RADR_I_Z9999_20210911190300_O_DOR_CAD_CAP_FMT.bin.bz2"
  65. savePngFile="Z_RADR_I_Z9999_20210911190300_O_DOR_CAD_CAP_FMT.png"
  66. f = cinrad.io.StandardData(bz2file)
  67. rl = list(f.iter_tilt(230,'REF'))
  68. cr = cinrad.calc.quick_cr(rl)

  69. #获取png图片四个角的经纬度---start
  70. lon = cr["longitude"].values
  71. lat = cr["latitude"].values
  72. extent= [lon.min(), lon.max(), lat.min(), lat.max()]
  73. ex= [ str(x) for x in extent ]
  74. #获取png图片四个角的经纬度---end

  75. plotTransparent(cr,savePngFile)
  76. plt.close("all")
复制代码



密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2021-11-30 17:58:55 | 显示全部楼层
您好想请问楼主现在怎么获取雷达基数据呀
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2021-11-30 20:04:33 | 显示全部楼层
同问,找雷达基数据找的好头疼!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2021-12-1 09:30:38 | 显示全部楼层
厉害!!!!!!!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2021-12-1 09:39:57 | 显示全部楼层

您好想请问楼主现在怎么获取雷达基数据呀?头大
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-12-2 10:46:09 | 显示全部楼层
大哥们,基数据是保密数据,除了内部门能获取,其他肯定不行啊,只能和气象局开展合作科研项目。

咱能看一下问题吗?
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2021-12-2 17:25:42 | 显示全部楼层
雷达基数据是保密的,我们是没有雷达站。虽然是气象局的,用基数据都很难要到
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2022-2-17 16:21:05 | 显示全部楼层
网上有开源项目有示例数据。知乎搜搜,不谢。
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-2-17 17:57:12 | 显示全部楼层
回想之后 发表于 2022-2-17 16:21
网上有开源项目有示例数据。知乎搜搜,不谢。

大神明示一下。。。哪个库有示例啊?
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2022-2-21 16:50:15 | 显示全部楼层
你这个用的是三方包处理的。按你说的,生成的图片是没有边界框的。你说的四个角的位置是需要另一份文件提供的。你直接拿到一个基数据你是没办法拿到四个图片位置的。除非你能拿到气象局雷达的位置文件。啊哈哈哈哈哈哈哈哈哈哈哈哈。
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表