首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用.assign_latitude_longitude: AttributeError: crs属性时出错

使用.assign_latitude_longitude: AttributeError: crs属性时出错
EN

Stack Overflow用户
提问于 2021-03-11 16:00:43
回答 1查看 362关注 0票数 1

我正在使用NDFD预测数据集,并希望在数组中分配lat和long,以使我能够在matplotlib之外绘制数据。我的版本是:

python 3.8,metpy 1.0.0,cartopy 0.18.0,xarray 0.16.2,虹吸0.8.0

代码语言:javascript
复制
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属性不可用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-11 19:57:06

assign_latitude_longitude要求有关CRS的信息是可用的,这样它就可以根据投影坐标正确地计算经度和纬度。这意味着您首先需要以某种方式调用parse_cf()。在上面的代码中,您保存了将parse_cf('Total_precipitation_surface_6_Hour_Accumulation')调用到var的结果,但这并不会修改存储在ds中的原始Dataset

相反,您需要将其调用到已将信息解析为:

代码语言:javascript
复制
var = var.metpy.assign_latitude_longitude(force=False)

(注意False而不是'False')。还可以在完整数据集上使用parse_cf()assign_latitude_longitude()

代码语言:javascript
复制
ds = ds.metpy.parse_cf()
ds = ds.metpy.assign_latitude_longitude(force=False)

注意,这将下载后一种情况下所有变量的元数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66586095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档