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
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.
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
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
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:
Lo probé hace tiempo, y creo que poner el usuario y contraseñaen en la URL no funciona, hay que usar otro método.