Tengo varios archivos netcdf que puedo leer utilizando la biblioteca netCDF4 en python. Los datos son cuadriculados en 4320 filas y 2160 columnas.
También tengo una lista de lat/lon (en grados decimales) y estoy tratando de encontrar el valor de la cuadrícula en la que se encuentran las coordenadas.
Actualmente, estoy convirtiendo las coordenadas en límites de cuadrícula mediante una simple transformación lineal y consultando el archivo netcdf utilizando estos nuevos puntos. ¿Es válido este enfoque?
# prelim
from netCDF4 import Dataset
import numpy as np
# coordinate data
lons = [40.822651, 40.69685, 40.750038, 40.798931, 40.74612]
lats = [19.83832, 20.007561, 19.97426, 19.86334, 19.843889]
# find boundaries of gridcells corresponding to lat/lon
lons_grid = np.ceil(12*(lons + 180))
lats_grid = np.ceil(12*(lats + 90))
# find value in gridcell for given lat/lon
fnc = Dataset(filename.nc, 'r')
lat = fnc.variables['latitude'][:]
lon = fnc.variables['longitude'][:]
variable = fnc.variables['variable'][:]
print variable[lons_grid, lats_grid]
Si no es así, ¿hay alguna forma de intersecar datos de puntos con un raster en python sin usar arcpy? (Mis archivos netcdf son muy grandes y no se pueden leer con arcpy).