[Numpy-discussion] netcdf lat lon to coord - ValueError: need more than 1 value to unpack

Kiko kikocorreoso at gmail.com
Tue Mar 24 06:14:01 EDT 2015


2015-03-24 11:02 GMT+01:00 questions anon <questions.anon at gmail.com>:

> I would like to find the nearest coord in a netcdf from a given latitude
> and longitude.
> I found some fantastic code that does this -
> http://nbviewer.ipython.org/github/Unidata/unidata-python-workshop/blob/master/netcdf-by-coordinates.ipynb
> but I keep receiving this error - I am receiving a ValueError: need more
> than 1 value to unpack
>
> I have pasted the code and full error below. Any help will be greatly
> appreciated.
>
>
>
>
> import numpy as np
>
> import netCDF4
>
>
> def naive_fast(latvar,lonvar,lat0,lon0):
>
>    # Read latitude and longitude from file into numpy arrays
>
>    latvals = latvar[:]
>
>    lonvals = lonvar[:]
>
>    ny,nx = latvals.shape
>
>    dist_sq = (latvals-lat0)**2 + (lonvals-lon0)**2
>
>    minindex_flattened = dist_sq.argmin() # 1D index of min element
>
>    iy_min,ix_min = np.unravel_index(minindex_flattened, latvals.shape)
>
>    return iy_min,ix_min
>
> filename = "/Users/T_SFC.nc"
>
> ncfile = netCDF4.Dataset(filename, 'r')
>
> latvar = ncfile.variables['latitude']
>
> lonvar = ncfile.variables['longitude']
>
>
> iy,ix = naive_fast(latvar, lonvar, -38.009, 146.438)
>
> print 'Closest lat lon:', latvar[iy,ix], lonvar[iy,ix]
>
> ncfile.close()
>
>
>
>
>
> ---------------------------------------------------------------------------
> ValueError                                Traceback (most recent call last)
> /Applications/Canopy.app/appdata/canopy-1.3.0.1715.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/IPython/utils/py3compat.pyc
> in execfile(fname, *where)
>     202             else:
>     203                 filename = fname
> --> 204             __builtin__.execfile(filename, *where)
>
> /Users/latlon_to_closestgrid.py in <module>()
>      22 lonvar = ncfile.variables['longitude']
>      23
> ---> 24 iy,ix = naive_fast(latvar, lonvar, -38.009, 146.438)
>      25 print 'Closest lat lon:', latvar[iy,ix], lonvar[iy,ix]
>      26 ncfile.close()
>
> /Users/latlon_to_closestgrid.py in naive_fast(latvar, lonvar, lat0, lon0)
>      12     latvals = latvar[:]
>      13     lonvals = lonvar[:]
> ---> 14     ny,nx = latvals.shape
>      15     dist_sq = (latvals-lat0)**2 + (lonvals-lon0)**2
>      16     minindex_flattened = dist_sq.argmin()  # 1D index of min
> element
>
> ValueError: need more than 1 value to unpack
>
>
>
It seems that latvals and lonvals should be a 2D array and you are
providing just a 1D array.
Maybe you could use numpy.meshgrid [1] to get 2D inputs from 1D arrays.

[1] http://docs.scipy.org/doc/numpy/reference/generated/numpy.meshgrid.html


>
>
>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20150324/4e6780c0/attachment.html>


More information about the NumPy-Discussion mailing list