python - 如何将 netCDF 提取到特定位置的 csv?
问题描述
我想将时间序列从 NetCDF 提取到特定位置的 csv。我的代码到此为止,但它给出了 TypeError: a bytes-like object is required, not 'str'
我该如何克服这个问题?此外,这个开发的代码是否会有输出:特定位置的时间/mwp?
import netCDF4
import pandas as pd
import matplotlib.pyplot as plt
import csv
import numpy as np
from netCDF4 import Dataset, num2date
from pylab import *
import xarray
f = netCDF4.Dataset('Wave_period_global.nc')
f.variables.keys()
print (f)
lat = f.variables['latitude'][:]
lon = f.variables['longitude'][:]
time_var = f.variables['time']
dtime = netCDF4.num2date(time_var[:],time_var.units)
mwp = f.variables['mwp'][:]
print(lon.min(), lon.max())
print(lat.min(), lat.max())
longitude = 172
latitude = 50
def near(array,value):
idx=(abs(array-value)).argmin()
return idx
ix = near(lat, latitude)
iy = near(lon, longitude)
print ('Latitude =',ix)
print ('Longitude =',iy)
with open ('Wave_period_global.csv', 'wb') as csvfile:
filewriter = csv.writer(csvfile, delimiter=',',
quotechar='|', quoting=csv.QUOTE_MINIMAL)
for ln in range(len(lon)):
for lt in range(len(lat)):
value=f.variables['mwp'][0][lt][ln]
dtime = netCDF4.num2date(time_var[0],time_var.units)
print(dtime,lat[lt],lon[ln,],value)
filewriter.writerow([dtime,lat[lt],lon[ln,],value])
解决方案
请参阅我上面的评论。我将输出作为 csv 离开我的答案,以专注于您的实际问题。
from netCDF4 import Dataset, num2date
f = netCDF4.Dataset('Wave_period_global.nc')
lat = f.variables['latitude'][:]
lon = f.variables['longitude'][:]
time_var = f.variables['time']
# These are all datetime object.
dtime = netCDF4.num2date(time_var[:],time_var.units)
mwp = f.variables['mwp'][:]
print(lon.min(), lon.max())
print(lat.min(), lat.max())
longitude = 172
latitude = 50
def near(array,value):
idx=(abs(array-value)).argmin()
return idx
ix = near(lat, latitude)
iy = near(lon, longitude)
print ('Latitude =',ix)
print ('lat[] =', lat[ix])
print ('Longitude =',iy)
print ('lon[] =', lon[iy])
for i in range(len(dtime)):
value=f.variables['mwp'][i][ix][iy]
print(dtime[i],lat[ix],lon[iy,],value)
推荐阅读
- raku - 如何删除列表中的重复项(Raku)
- php - 未定义的索引,试图从数据库中获取电子邮件,
- xslt - xsl 获取未在键中比较的节点
- php - MYSQL 查询,对所有值求和,同时还使用连接表选择一个值
- python - 使用 'load_img' 要求 PIL 和枕头已安装
- ngrx - 没有减速器的 Ngrx 商店?仅调度一个动作以被效果捕获
- python - 在python中检测许多乌龟对象之间的碰撞
- hadoop - 使用 hadoop distcp 将空目录从 hdfs 复制到 hdfs
- javascript - Svelte Electron 和 Metro UI Css
- java - Spring 安全 @PreAuthorize NullPointerException。为什么?