【问题标题】:Reprojecting and Plotting GOES16 Full Disk with Python使用 Python 重新投影和绘制 GOES16 全盘
【发布时间】:2018-12-31 04:44:11
【问题描述】:

我正在尝试将 GOES16 Full Disk SST 产品重新投影到较小覆盖区域上的朗伯保形圆锥投影。下面的方法适用于 CONUS 产品,但迄今为止在不同的投影中缩小全盘的大小并不成功。我在这里使用 Basemap 和 PyProj,但我也愿意使用 cartopy。

可重现的例子:

import matplotlib
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
from siphon.catalog import TDSCatalog
from netCDF4 import Dataset, num2date
import numpy as np
from pyproj import Proj     
from datetime import datetime, timedelta
# Go to the Unidata Thredds Server for the Current Day
nowdate = datetime.utcnow()
cat = TDSCatalog('http://thredds-jumbo.unidata.ucar.edu/thredds/catalog/satellite/goes16/GOES16/Products/SeaSurfaceTemperature/FullDisk/' + \
                  str(nowdate.year) + str("%02d"%nowdate.month) + str("%02d"%nowdate.day) + '/catalog.xml')
# grab sst data
dataset_name = sorted(cat.datasets.keys())[-1]
dataset = cat.datasets[dataset_name]
nc = dataset.remote_access()
sst = nc.variables['SST'][:]
# correct the offsets
sst= sst*nc.variables['SST'].scale_factor + nc.variables['SST'].add_offset

# grab time/data/projection info
add_seconds = nc.variables['t'][0]
DATE = datetime(2000, 1, 1, 12) + timedelta(seconds=int(add_seconds))
sat_h = nc.variables['goes_imager_projection'].perspective_point_height
sat_lon = nc.variables['goes_imager_projection'].longitude_of_projection_origin
sat_sweep = nc.variables['goes_imager_projection'].sweep_angle_axis
X = nc.variables['x'][:] * sat_h
Y = nc.variables['y'][:] * sat_h
XX, YY = np.meshgrid(X, Y)

# Plot on the HRRR domain to test
mH = Basemap(resolution='i', projection='lcc', \
            width=1800*3000, height=1060*3000, \
            lat_1=38.5, lat_2=38.5, \
            lat_0=38.5, lon_0=-97.5)

p = Proj(proj='geos', h=sat_h, lon_0=sat_lon, sweep=sat_sweep)
lons, lats = p(XX, YY, inverse=True)

lats[np.isnan(sst)] = np.nan
lons[np.isnan(sst)] = np.nan
xH, yH = mH(lons, lats)

plt.figure(figsize=[16, 12], dpi=100)
mH.pcolormesh(xH, yH,sst, latlon=True,
              cmap='jet')
mH.drawcoastlines()
mH.drawstates()
mH.drawcountries()

【问题讨论】:

  • Brian Blaylock 可能有一个您感兴趣的notebook。他使用 Basemap 并使用 Lambert 投影绘制数据。
  • 请注意,由于我没有看到 u2py 模块的导入,我不确定您的 unidata 标签是否用于 Rocket Software UniData 数据库。

标签: python-2.7 matplotlib-basemap unidata proj


【解决方案1】:

我已经发布了Jupyter notebook,其中包含 GOES Full Disk 和 CONUS 映像的示例。 该解决方案使用 GDAL 将图像从 Geosynch 投影变形为 Lambert Conformal Conic。

【讨论】:

    【解决方案2】:

    jupyter notebook 中,我展示了如何重新网格化 ABI 数据(通道 13 的 BT),在这种情况下,我重新网格化了一个子区域,但您可以使用 de idea 重新网格化整个磁盘。这个例子是我创建的GOES 包的tutorial 的一部分。希望例子和GOES包对你有用。

    【讨论】:

      猜你喜欢
      • 2019-01-14
      • 1970-01-01
      • 2017-07-03
      • 2020-12-30
      • 1970-01-01
      • 1970-01-01
      • 2015-07-27
      • 2019-02-05
      • 2019-11-21
      相关资源
      最近更新 更多