Structures in Dapper dds & Loaddap

Arnaud FOREST Arnaud.Forest at ifremer.fr
Thu May 4 07:09:07 PDT 2006


Hi all,

I work on an opendap server for in-situ vertical profiles stored in a 
Oracle DBMS.
Our dds structure is copied from the 'argo' dapper interface 
(http://dapper.pmel.noaa.gov/dapper/argo/argo_all.cdp.dds) but I notice 
that matlab struct tools(Libdap :  3.6.2, loaddap : 3.5.2, Matlab : 7 ) 
doesn't completly manage the in-situ profile dapper interface.

The 'structures' are especially not very well managed by the matlab client :

    1) "Loaddap" doesn't support the structure of structure, a fatal		 
     error occures. (the matlab's crash dump is at the end of the
       message)

    2) The fields of the 'location.attributes' structure cannot be
       completly read. Only the last field is loaded in the matlab
       memory. It seems that the 'matlab dap  structure' can only manage
       a structure containing one field.

For example :

 >>loaddap('http://dapper.pmel.noaa.gov/dapper/argo/argo_all.cdp?
location.attributes.PLATFORM_NUMBER,location.attributes.PI_NAME
&location.JULD>1143929418000&location.JULD<1144447818000
&location.LATITUDE>30&location.LATITUDE<50&location.LONGITUDE>-51&location.LONGITUDE<-5');


 >>location.attributes

ans

68x1 struct array with fields:
     PI_NAME



The 'PLATFORM_NUMBER' field has disappeared !
Even if the field seems to be created according to the 'verbose' output 
of loaddap :

...
Creating string vector `PLATFORM_NUMBER' with 1 elements.
Creating string vector `PI_NAME' with 1 elements.
Creating string vector `PLATFORM_NUMBER' with 1 elements.
Creating string vector `PI_NAME' with 1 elements.
Creating string vector `PLATFORM_NUMBER' with 1 elements.
...



Is there a known bug or updates foreseen about the structure management 
in the loaddap matalb toolbox ?

Why the dapper interface has been defined with so many structures in it?

Does anyone know what opendap clients are fully compliant with the 
dapper output (structures of structures, sequences of sequences, 
sequences of structures...) and what is planned for the improvement of 
the compliance between dapper interface and opendap clients (matlab, 
ferret, nco, Opendap Data connector, pyDAP, GrADS... I guess C++ and 
JAVA API are right).


Thanks a lot,

Arnaud and Thomas

--------------------- Matlab Crash Dump ---------------------


 >>loaddap('http://dapper.pmel.noaa.gov/dapper/argo/argo_all.cdp?
&location.JULD>1143929418000&location.JULD<1144447818000&location.LATITUDE>30
&location.LATITUDE<50&location.LONGITUDE>-51&location.LONGITUDE<-5')

> ------------------------------------------------------------------------
>        Segmentation violation detected at Thu May  4 15:06:08 2006
> ------------------------------------------------------------------------
> 
> Configuration:
>   MATLAB Version:   7.0.1.24704 (R14) Service Pack 1
>   MATLAB License:   122551
>   Operating System: Linux 2.6.9-11.EL #1 Wed Jun 8 16:59:52 CDT 2005 i686
>   Window System:    Hummingbird Communications Ltd. (7000), display br144-122:0.0
>   Current Visual:   0x23 (class 4, depth 24)
>   Processor ID:     x86 Family 15 Model 0 Stepping 10, GenuineIntel
>   Virtual Machine:  Java is not enabled
>   Default Charset:  UTF-8
> 
> Register State:
>   eax = 00000000   ebx = 00cbc148
>   ecx = 02d09560   edx = 0896bd40
>   esi = 025250d0   edi = 00000003
>   ebp = bfff8bc8   esp = bfff8bc8
>   eip = 00cb737b   flg = 00210286
> 
> Stack Trace:
>   [0] loaddap.mexglx:vfprintf~(0x0896bd40, 0x025250d0, 0xbfffafb0 "location", 0x00cb8d64) + 13179 bytes
>   [1] loaddap.mexglx:0x00cb8e6c(0x08642338, 0xbfffb20c, 0x00cba7c6, 1)
>   [2] loaddap.mexglx:0x00cb97ba(0x08642338, 0x00cba429, 1, 0xbfffbe30)
>   [3] loaddap.mexglx:mexFunction~(0, 0xbfffbdd0, 1, 0xbfffbe30) + 304 bytes
>   [4] libmex.so:mexRunMexFile(0, 0xbfffbdd0, 1, 0xbfffbe30) + 93 bytes
>   [5] libmex.so:Mfh_mex::dispatch_file(int, mxArray_tag**, int, mxArray_tag**)(0x02b40fb0, 0, 0xbfffbdd0, 1) + 537 bytes
>   [6] libmwm_dispatcher.so:Mfh_file::dispatch_fh(int, mxArray_tag**, int, mxArray_tag**)(0x02b40fb0, 0, 0xbfffbdd0, 1) + 262 bytes
>   [7] libmwm_interpreter.so:inDispatchFromStack(455, 0x0869ad20 "loaddap", 0, 1) + 1240 bytes
>   [8] libmwm_interpreter.so:inDispatchCall(char const*, int, int, int, int*, int*)(0x0869ad20 "loaddap", 455, 0, 1) + 112 bytes
>   [9] libmwm_interpreter.so:.L924(2, 0, 0, 0) + 165 bytes
>   [10] libmwm_interpreter.so:inInterPcodeSJ(inDebugCheck, int, int, opcodes, inPcodeNest_tag*)(2, 0, 0, 0) + 315 bytes
>   [11] libmwm_interpreter.so:inInterPcode(2, 0, 0xbfffc3f8, 0x0095e39b) + 93 bytes
>   [12] libmwm_interpreter.so:in_local_call_eval_function(int*, _pcodeheader*, int*, mxArray_tag**, inDebugCheck)(0, 0xbfffcdf0, 0xbfffce7c, 0xbfffcea8) + 163 bytes
>   [13] libmwm_interpreter.so:inEvalStringWithIsVarFcn(_memory_context*, char const*, EvalType, int, mxArray_tag**, inDebugCheck, _pcodeheader*, int*, bool (*)(void*, char const*), void*)(0x008dd468, 0x08744bd0 "loaddap('http://dapper.pmel.noaa..", 0, 0) + 2358 bytes
>   [14] libmwm_interpreter.so:inEvalCmdNoEnd(0x08744bd0 "loaddap('http://dapper.pmel.noaa..", 0x08744bd0 "loaddap('http://dapper.pmel.noaa..", 0xbfffd048 ", 0x00de8c27) + 85 bytes
>   [15] libmwbridge.so:mnParser(0x00cd21e8 "@@@", 0x00cd22d8 "mnParser", 1, 0xbfffd0a4) + 471 bytes
>   [16] libmwmcr.so:mcrInstance::mnParser()(0x080a01c0, 0, 0xbffff398, 0x0804a902) + 96 bytes
>   [17] MATLAB:mcrMain(int, char**)(2, 0xbffff444, 0x0804ad1c, 0xbffff3b8) + 308 bytes
>   [18] MATLAB:main(2, 0xbffff444, 0xbffff450, 0x0047ebe6) + 23 bytes
>   [19] libc.so.6:__libc_start_main~(0x0804a7c4, 2, 0xbffff444, 0x0804a3d8) + 211 bytes
> 
> This error was detected while a MEX-file was running.  If the MEX-file
> is not an official MathWorks function, please examine its source code
> for errors.  Please consult the External Interfaces Guide for information
> on debugging MEX-files.

FOREST Arnaud



More information about the Opendap-tech mailing list