Opened 7 years ago

Last modified 7 years ago

#5912 new support

acceso OpenDAP con python

Reported by: MarkelGarcia Owned by: manuel
Priority: major Milestone:
Component: TracMeteo Keywords:
Cc: antonio

Description

Hola, espero que os vaya todo bien.

He estado intentando acceder a los datos de System4 desde python y por alguna razón no es posible. Maru lo ha intentado también y no ha podido. Desde el interface web si puedo sacar datos en ASCII, y también puedo verlos con el toolsui.Eso si, con toolsui tengo que insistir varias veces hasta que funciona la autenticación. Así que puede que haya algo mal con la autenticación.

Para reproducir el error escribir en python

import netCDF4 as ncdf
inc = ncdf.Dataset("http://usuario:contraseña@www.meteo.unican.es/tds5/dodsC/system4/System4_Seasonal_15Members.ncml", "r")

Saludos

Lo he intentado también con el paquete pydap, y me ha dado esta excepción:

Exception: Unable to parse token: <!DOCTYPE 

A ver si podéis ayudarme.

Saludos

Change History (6)

comment:1 Changed 7 years ago by antonio

Para usar Pydap necesitas configurarlo para que pueda hacer uso de las cookies

En esta página Pydap Access to ECOMS-UDG hay unas instrucciones de como acceder. No estoy seguro de si siguen vigentes, pero dímelo y las actualizamos.

Con respecto a ToolsUI, es un problema de cookies de la propia herramienta.

Dame más detalle del error que te sale con netCDF4 .... que paquete estás usando? te funciona un OpenDAP sin seguiridad? por ejemplo:

http://www.meteo.unican.es/thredds/dodsC/PNACC2012/Rejilla/dato_diario/tasmin/20C3M/ESCENA/tasmin_UMUR_MM5_HADCM3Q3_20C3M_r1_1951_2000.nc

Lo probé hace tiempo, y creo que poner el usuario y contraseñaen en la URL no funciona, hay que usar otro método.

comment:2 Changed 7 years ago by MarkelGarcia

Si, si me funciona ese OpenDAP, y otros que he probado. La librería es la netCDF4 python de https://github.com/Unidata/netcdf4-python El mensaje de error es ese, no es nada detallado y no he conseguido nada más con el debugger... Maru estuvo usando esta librería bastante tiempo e hizo una función loadSystem4 en python con ella que leía de ese mismo THREDDS.

Last edited 7 years ago by MarkelGarcia (previous) (diff)

comment:3 Changed 7 years ago by MarkelGarcia

Las instrucciones para pydap funcionan, salvo el nombre de la variable de ejemplo, que ha debido de cambiarse a uno más corto. El único problema es que es cambiar de "data model". Estaría bien que funcionase con netCDF, pero no se si las netCDF de C y Fortran soportan ese tipo de autenticación con cookies. En la documentación no encuentro nada...

comment:4 Changed 7 years ago by antonio

Bien en tu $HOME o en el directorio de trabajo que estés crea un fichero llamado .dodsrc en el que aparezca las 2 siguinetes lineas adaptadas a tu usuario:

[http://meteo.unican.es/tds5]HTTP.CREDENTIALS.USER=usuario
[http://meteo.unican.es/tds5]HTTP.CREDENTIALS.PASSWORD=contraseña

y prueba de nuevo (en mi caso he necsitado reiniciar el Python):

import netCDF4 as ncdf
inc = ncdf.Dataset("http://meteo.unican.es/tds5/dodsC/system4/System4_Seasonal_15Members.ncml", "r")

si te funciona dímelo para volcar lasinstrucciones junto a las del Pydap

Last edited 7 years ago by antonio (previous) (diff)

comment:5 Changed 7 years ago by antonio

se me olvidaba añadir que puedes encontrar más detalles en:
https://www.unidata.ucar.edu/software/netcdf/docs/netcdf/DAP-Support.html

y que sirve para toda la librería netcdf compilada OpenDAP

comment:6 Changed 7 years ago by MarkelGarcia

El problema está solucionado. He compilado la versión de 4.3.2 de netCDF C y con esta funciona. Funciona también con el http:/usuario:contraseña@URL, sin usar el .dodsrc El problema estaba entonces en que a la versión de netCDF 4.1.1 hay algo que no le gusta en ese DODS. Con la 4.1.1 no funciona ni con el .dodsrc ni nada. La 4.1.1 es la versión que hay en el repositorio de ubuntu 12.04.

Es problema de la propia netCDF C, porque las librerías a las que tengo enlazadas ambas versiones son las mismas.

Muchas gracias por la ayuda. Si quieres puedo hacer alguna prueba más.

Markel

Last edited 7 years ago by MarkelGarcia (previous) (diff)
Note: See TracTickets for help on using tickets.