我正在使用NDFD预测数据集,并希望在数组中分配lat和long,以使我能够在matplotlib之外绘制数据。我的版本是:
python 3.8,metpy 1.0.0,cartopy 0.18.0,xarray 0.16.2,虹吸0.8.0
import os.path
import sys
import xarray
from xarray.backends import NetCDF4DataStore
import xarray as xr
import pyproj
from datetime import *
import cartopy.feature as cfeature
#import cartopy.io.shapereader as shpreader
import metpy
import siphon
import math
from siphon.catalog import TDSCatalog
from siphon.radarserver import RadarServer
from siphon.cdmr import Dataset
import cartopy.crs as ccrs
import numpy as np
import pandas as pd
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
#from awips.dataaccess import DataAccessLayer
%matplotlib inline
gfs_catalog = ('https://thredds.ucar.edu/thredds/catalog/grib/NCEP/NDFD/NWS/CONUS/CONDUIT/catalog.xml?dataset=grib/NCEP/NDFD/NWS/CONUS/CONDUIT/Best')
cat = TDSCatalog(gfs_catalog)
ncss = cat.datasets[0].subset()
query = ncss.query()
query.time_range(datetime.utcnow(),datetime.utcnow()+timedelta(days=7))
query.accept('netcdf')
query.variables('Total_precipitation_surface_6_Hour_Accumulation','Total_precipitation_surface_12_Hour_Ac
cumulation_probability_above_0p254')
query.lonlat_box(west=-86.175, east=-86.0, north=39.85, south=39.75)
data = ncss.get_data(query)
ds = xr.open_dataset(NetCDF4DataStore(data))
#This works to return x and y in metpy's custom projection
var = ds.metpy.parse_cf('Total_precipitation_surface_6_Hour_Accumulation')
#This doesn't
var2 = ds.metpy.assign_latitude_longitude(force='False')AttributeError: crs属性不可用。
发布于 2021-03-11 19:57:06
assign_latitude_longitude要求有关CRS的信息是可用的,这样它就可以根据投影坐标正确地计算经度和纬度。这意味着您首先需要以某种方式调用parse_cf()。在上面的代码中,您保存了将parse_cf('Total_precipitation_surface_6_Hour_Accumulation')调用到var的结果,但这并不会修改存储在ds中的原始Dataset。
相反,您需要将其调用到已将信息解析为:
var = var.metpy.assign_latitude_longitude(force=False)(注意False而不是'False')。还可以在完整数据集上使用parse_cf()和assign_latitude_longitude():
ds = ds.metpy.parse_cf()
ds = ds.metpy.assign_latitude_longitude(force=False)注意,这将下载后一种情况下所有变量的元数据。
https://stackoverflow.com/questions/66586095
复制相似问题