2016-06-20 15 views
1

Ich habe Datensätze im Format. Nc gerastert. Ich möchte Daten auf der Grundlage von Längen- und Breitengrad extrahieren. Breiten- und Längen meiner Datensätze sind unten dargestellt:Extrahieren von Daten aus. Nc-Datei nach Breite und Länge in Python

import netCDF4 
from netCDF4 import Dataset 
f= Dataset('data.nc') 
f.variables['lat'][:] 
array([ 31.5, 30.5, 29.5, 28.5, 27.5, 26.5, 25.5, 24.5, 23.5, 
     22.5, 21.5, 20.5, 19.5, 18.5], dtype=float32) 

f.variables['lon'][:] 
array([ 60.5, 61.5, 62.5, 63.5, 64.5, 65.5, 66.5, 67.5, 68.5, 
     69.5, 70.5, 71.5, 72.5, 73.5, 74.5, 75.5, 76.5, 77.5, 
     78.5, 79.5, 80.5, 81.5, 82.5, 83.5, 84.5, 85.5, 86.5, 
     87.5, 88.5, 89.5, 90.5, 91.5], dtype=float32) 

nehme ich die Daten für lat extrahieren möchten = 29,5 und lon = 65,5 dann die Code korrekt?

f.variables['temp'][:,2,5] 

oder

f.variables['temp'][:,29.5,65.5] 

Ihr Vorschlag sehr geschätzt werden!

+3

Haben Sie die Optionen versucht, Sie vorschlagen? Sehen Sie sich http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html an. – Benjamin

Antwort

3

Dieser Code wird sicherlich nicht funktionieren:

f.variables['temp'][:,29.5,65.5] 

da kann man nicht (sollte nicht) Index mit Schwimmern in numpy oder netcdf4.

Wenn Sie mit dem Wert indizieren möchten, würde ich vorschlagen xarray Check-out:

import xarray as xr 
ds = xr.open_dataset('data.nc') 
# index by value 
ds['temp'].sel(lon=65.5, lat=29.5) 
# or index by position 
ds['temp'].isel(lon=5, lat=2) 
1

Unten korrekt ist, wenn die Variable 'Temp' von lat, lon dimensioniert ist. Einige NetCDF-Variablen sind von lon, lat

dimensioniert. Sie können die Abmessungen der Variable 'temp' überprüfen.

print f.variables['temp'].dimensions 

-Code für Lat, Lon Indizes nächste einen Wert zu suchen:

https://stackoverflow.com/a/33793437/1211981