"SfR Fresh" - the SfR Freeware/Shareware Archive

Member "libdap-3.8.2/README" of archive libdap-3.8.2.tar.gz:


As a special service "SfR Fresh" has tried to format the requested source page into HTML format using source code syntax highlighting with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. That can be also achieved for any archive member file by clicking within an archive contents listing on the first character of the file(path) respectively on the according byte size field.
    1 
    2 $Id: README 18929 2008-06-23 19:56:53Z jimg $
    3 
    4 Updated for version 3.8.2 (23 June 2008)
    5 
    6 HTTP Cache and win32 installer fixes (the latter are actually in the 3.8.1
    7 installer for winXP). API change: The functions used to merge ancillary data
    8 have been moved to their own class (Ancillary).
    9 
   10 Updated for version 3.8.1 (10 June 2008)
   11 
   12 The syntax for PROXY_SERVER in the .dodsrc file was relaxed. See the .dodsrc
   13 file for more information.
   14 
   15 Updated for Version 3.8.0 (29 February 2008)
   16 
   17 The libdap classes and code are now inside of the libdap namespace. In order
   18 to access any of the classes, for example, you will need to do one of the
   19 following. After including the libdap headers you can:
   20 
   21 1. add a using statement for the entire libdap namespace:
   22 
   23 using namespace libdap ;
   24 
   25 2. add a using statement for the classes that you will be using:
   26 
   27 using libdap::DAS ;
   28 
   29 3. inside your code scope the use of libdap classes.
   30 
   31 libdap::DAS *das = code_to_get_das() ;
   32 
   33 Added method to HTTPCache to return not only the FILE pointer of a cached
   34 response but also the name of the file in the cache, to allow for this file
   35 name to be passed to data handlers in the BES to be read.
   36 
   37 See NEWS for more information about changes for this version and ChangeLog
   38 for the gory details.
   39 
   40 Updated for Version 3.7.10 (28 November 2007)
   41 
   42 A bug fix release. See NEWS.
   43 
   44 Updated for Version 3.7.9 (13 Novenber 2007)
   45 
   46 This release is a bug fix and refactoring release. Old classes which were no
   47 longer used have been removed, the FILE* output methods are slated to be
   48 replaced with ones which will use iostream and will support a chucked
   49 transfer 'Marshaller,' and the transfer_data() methods have been made a
   50 formal part of the library, implemented for all classes, fixed and renamed to
   51 intern_data(). Many bugs in the library were also fixed.
   52 
   53 Updated for version 3.7.8 (26 June 2007)
   54 
   55 The major fixes in this version are memory errors found and fixed in the
   56 Regex class and HTTP header processing software. This version also supports
   57 pkg-config on hosts that have that installed.
   58 
   59 See NEWS for more information about changes for this version and ChangeLog
   60 for the gory details.
   61 
   62 Notes for version 3.7.7 (2 May 2007)
   63 
   64 The major fix here is to the source build. We've fixed the issue where source
   65 builds failed to make the dapserver and dapclient libraries.
   66 
   67 Notes for version 3.7.6 (12 March 2007)
   68 
   69 Two bug fixes, both minor. Problems in the linear_scale() constraint
   70 expression function and a bad/missing #include in GNURegex.h were fixed.
   71 
   72 There was an error in the INSTALL file sent out in the previous release. It
   73 said this library implemented DAP version 3.2, but in fact it implements
   74 version 3.1. The version 3.2 release will be along soon (RSN).
   75 
   76 Notes for version 3.7.5 (7 Feb 2007)
   77 
   78 This version includes many fixes from the first Server4 beta release
   79 plus fixes for the server-side functions. It also includes a smoother
   80 Win32 build.
   81 
   82 Notes for version 3.7.4 (2 Jan 2007)
   83 
   84 Release for the Server4 beta release.
   85 
   86 Notes for version 3.7.3 (24 Nov 2006)
   87 
   88 This version of libdap contains a beta release of the server-side functions
   89 geogrid(), geoarray(), linear_scale() and version(). These can be used to
   90 select parts of Grids and Arrays using latitude and longitude values instead
   91 of array position indexes. The linear_scale() function can be used to scale
   92 variables (including those return by other function) using 'y = mx + b'. The
   93 version() function can be used to find out which versions of the functions are
   94 installed.
   95 
   96 EXAMPLES
   97 
   98 To get version information use the 'version()' function. Currently, version()
   99 can only be called when asking for data, and you must give the name of a data
  100 source, although in the default version of version() the data source is not
  101 used. The version function takes one optional argument which may be the strings
  102 'help' or 'xml'. Use 'help' to get help on using the function; use 'xml' to get
  103 version information encoded using XML instead of plain text:
  104 
  105 <code>
  106 [jimg@zoe libdap]$ url=http://test.opendap.org/dap/data/nc/coads_climatology.nc
  107 [jimg@zoe libdap]$ ./getdap -D "$url?version()"
  108 The data:
  109 String version = "Function set: version 1.0, grid 1.0, geogrid 1.0b2, 
  110 		          geoarray 0.9b1, linear_scale 1.0b1";
  111 
  112 [jimg@zoe libdap]$ ./getdap -D "$url?version(help)"
  113 The data:
  114 String version = "Usage: version() returns plain text information about ...
  115 
  116 [jimg@zoe libdap]$ ./getdap -D "$url?version(xml)"
  117 The data:
  118 String version = "<?xml version=\"1.0\"?>
  119     <functions>
  120         <function name=\"version\" version=\"1.0\"/>
  121         <function name=\"grid\" version=\"1.0\"/>
  122         <function name=\"geogrid\" version=\"1.0\"/>
  123         <function name=\"geoarray\" version=\"1.0\"/>
  124         <function name=\"linear_scale\" version=\"1.0\"/>
  125     </functions>";
  126 
  127 The geogrid function can only be used with variables that are Grids:
  128 
  129 [jimg@zoe libdap]$ getdap -d "$url"
  130 Dataset {
  131     Float64 COADSX[COADSX = 180];
  132     Float64 COADSY[COADSY = 90];
  133     Float64 TIME[TIME = 12];
  134     Grid {
  135       Array:
  136         Float32 SST[TIME = 12][COADSY = 90][COADSX = 180];
  137       Maps:
  138         Float64 TIME[TIME = 12];
  139         Float64 COADSY[COADSY = 90];
  140         Float64 COADSX[COADSX = 180];
  141     } SST;
  142     Grid {
  143     .
  144     .
  145     .
  146 </code>
  147     
  148 Pass the name of the Grid variable and the upper-left and lower-right corners 
  149 of the lat/lon rectangle to geogrid. Optionally, pass one or more relational
  150 expressions to select parts of dimensions that are not lat/lon. 
  151 
  152 Note: in libdap 3.7.3 calling geogrid with a constraint on each dimension
  153 may return incorrect values that indicate missing data even though data should
  154 have been returned.
  155 
  156 <code>
  157 [jimg@zoe libdap]$ getdap -D "$url?geogrid(SST,30,-60,20,-60,\"TIME=366\")"
  158 The data:
  159 Grid {
  160   Array:
  161     Float32 SST[TIME = 1][COADSY = 7][COADSX = 2];
  162   Maps:
  163     Float64 TIME[TIME = 1];
  164     Float64 COADSY[COADSY = 7];
  165     Float64 COADSX[COADSX = 2];
  166 } SST = {  Array: {{{24.4364, 25.0923},{23.7465, 24.4146},{19.843, 23.6033},
  167 {16.8464, 17.7756},{16.65, 16.818},{-1e+34, 15.3656},{18.7214, 13.1286}}}  
  168 Maps: {366}, {19, 21, 23, 25, 27, 29, 31}, {-61, -59} };
  169 </code>
  170 
  171 The geoarray() function works like geogrid() except that it's used to select
  172 from an Array variable and not a Grid. In addition to the four lat/lon values
  173 for selection rectangle, the caller must supply the data's corner points. A 
  174 subsequent release of libdap will include a version that reads the data extent
  175 from the data source when possible so caller's won't normally have to know the
  176 data's extent ahead of time.
  177 
  178 The linear_scale() function take either one or three arguments. The first
  179 (only) argument is the name of a variable or the return from another
  180 function. This variable will be scaled using the 'y = mx + b' equation where
  181 'x' is the value(s) of the input variable and 'm' and 'b' are read from the
  182 data source using the values of attributes name 'scale_factor' and
  183 'add_offset.' If these are not present, or to over ride their values, m and b
  184 can be supplied using the second and third arguments.
  185 
  186 Note that there are still some problems with linear_scale() in this release.
  187 
  188 See NEWS and ChangeLog for information about other changes
  189 
  190 Notes for version 3.7.2
  191 
  192 This version of libdap is required for the 9/15/06 alpha release of Server4.
  193 The library now contains software which enables Server4 to build the ASCII
  194 data response for all types of variables, including Sequence and nested
  195 Sequence variables. These features are additions to the API, so older code
  196 will work just fine with the new library. See NEWS for more specific info
  197 about bug fixes.
  198 
  199 Notes for version 3.7.1
  200 
  201 This is a bug fix release (mostly) made for users of the netcdf client
  202 library who need a fix for a problem dealing with attributes from the HDF4
  203 server. 
  204 
  205 NOTES for version 3.7.0
  206 
  207 This version includes new features and an implementation change.
  208 
  209 This version of libdap now returns the DAP protocol version number, 3.1, in
  210 an HTTP response header. Use this to determine which protocol version the
  211 library implements. The inclusion of a protocol version number is the sole
  212 official new feature of DAP 3.1. Use Connect::get_protocol() to get the
  213 version number. Clients can use this to determine the features supported by a
  214 server. The Connect::get_version() method can still be used to get our
  215 server's implementation version. The distinction is that as more groups
  216 provide their own implementations of the DAP, the protocol version will
  217 provide a way for clients to determine capabilities independently of
  218 implementation.
  219 
  220 The libdap library now contains an implementation of the DDX object/response,
  221 although this is an alpha implementation and it's actually been part of the
  222 library for some time now. The implementation contained in this version of
  223 the library is close enough to the version we intend for DAP4 that developers
  224 can start to use it. Most of the server handlers will return DDXs when asked.
  225 
  226 The DDX combines the information previously held by the DDS and DAS objects,
  227 making it much easier to associate attributes to variables. As the name
  228 suggests, the DDX uses XML rather than curly-braces. You can drop the DDX
  229 into your favorite XML parser and get a DOM tree; no need to use our parsers.
  230 However, libdap contains a nice SAX parser that will build the libdap objects
  231 directly from the XML DDX object/response. Also included in libdap are
  232 methods to build a DDX using a DDS and DAS, so there's an easy migration path
  233 for both servers and clients.
  234 
  235 Finally, the library contains two structural changes. First, the library
  236 named 'libdap' now holds the DAP implementation while two new libraries,
  237 'libdapclient' and 'libdapserver', now hold the client and server helper
  238 classes which are not strictly part of the DAP. Secondly, the DDS/DDX object
  239 now takes the constraint evaluator as a parameter. The class
  240 ConstraintEvaluator holds our default evaluator, but it's now possible to use
  241 your own evaluator .
  242 
  243 NOTES for version 3.6.1
  244 
  245 Version 3.6.1 is bug fix release.
  246 
  247 NOTES for version 3.6.0
  248 
  249 This version of the library may not work older source code. Many of the 
  250 deprecated methods have been removed. 
  251 
  252 Added are headers which send information about the version of the DAP protocol
  253 that the library implements (in contrast to the implementation of the library
  254 itself). A new header named XOPeNDAP-Server is used to send information about
  255 the implementation of servers.
  256 
  257 The libtool interface version has been incremented from 3 to 4 (these versions
  258 do no track the software's release version since several releases might 
  259 present compatible binary interfaces). 
  260 
  261 NOTES for version 3.5.3
  262 
  263 This version of libdap++ cannot be used to build the 3.4.x and previous
  264 clients and/or servers. However, client and servers built using this code
  265 _will_ work with the older clients and servers.
  266 
  267 WHAT'S IN THIS DIRECTORY?
  268 
  269 This directory contains the OPeNDAP C++ implementation of the Data
  270 Access Protocol version 2 (DAP2) with some extensions that will be
  271 part of DAP3.  Documentation for this software can be found on the
  272 OPeNDAP home page at http://www.opendap.org/. The NASA/ESE RFC which
  273 describes DAP2, implemented by the library, can be found at
  274 http://spg.gsfc.nasa.gov/rfc/004/.
  275 
  276 The DAP2 is used to provide a uniform way of accessing a variety of
  277 different types of data across the Internet. It was originally part of
  278 the DODS and then NVODS projects. The focus of those projects was
  279 access to Earth-Science data, so much of the software developed using
  280 the DAP2 to date has centered on that discipline. However, the DAP2
  281 data model is very general (and similar to a modern structured
  282 programming language) so it can be applied to a wide variety of
  283 fields.
  284 
  285 The DAP2 is implemented as a set of C++ classes that can be used to
  286 build data servers and clients. The classes may be specialized to
  287 mimic the behavior of other data access APIs, such as netCDF. In this
  288 way, programs originally meant to work with local data in those
  289 formats can be re-linked and equipped to work with data stored
  290 remotely in many different formats.  The classes can also by
  291 specialized to build standalone client programs.
  292 
  293 The DAP2 is contained in a single library: libdap++.a. Also included
  294 in the library are classes and utility functions which simplify
  295 building clients and servers.
  296 
  297 WHAT ELSE IS THERE?
  298 
  299 The file README.dodsrc describes the client-side behavior which can be
  300 controlled using the .dodsrc file. This includes client-side caching,
  301 proxy servers, et c., and is described in a separate file so it's easy
  302 to include in your clients.
  303 
  304 The file README.AIS describes the prototype Ancillary Information
  305 Service (AIS) included in this version of the library. The AIS is
  306 (currently) a client-side capability which provides a way to augment
  307 DAP attributes. This is a very useful feature because it can be used
  308 to add missing metadata to a data source. The AIS is accessed by using
  309 the AISConnect class in place of Connect in your client.
  310 
  311 This directory also contains test programs for the DAP2, a sample
  312 specialization of the classes, getdap (a useful command-line web
  313 client created with DAP2) and dap-config (a utility script to simplify
  314 linking with libdap.a). Also included as of version 3.5.2 is
  315 libdap.m4, an autoconf macro which developers can use along with
  316 autoconf to test for libdap. This macro will be installed in
  317 ${prefix}/share/aclocal and can be by any package which uses autoconf
  318 for its builds. See the file for more information.
  319 
  320 We also have Java and C versions of the DAP2 library which
  321 inter-operate with software which uses this library. In other words,
  322 client programs built with the Java DAP2 implementation can
  323 communicate with servers built with this (C++) implementation of the
  324 DAP2. The C DAP2 library, called the Ocapi, only implements the
  325 client-side part of the protocol. Clients written using the Ocapi are
  326 interoperable with both the Java and C++ DAP2 libraries. Note that the
  327 Ocapi is in early beta and available only from CVS at this time (5 May
  328 2005).
  329   
  330 THREAD SAFETY
  331 
  332 We don't need to do this since the STL is also not thread safe. Users
  333 of libdap have to be sure that multiple threads never make
  334 simultaneous and/or overlapping calls to a single copy of libdap. If
  335 several threads are part of a program and each will make calls to
  336 libdap, either those threads must synchronize their calls or arrange
  337 to each use their own copy of libdap.  Some aspects of the library
  338 ''are'' thread-safe: the singleton classes are all protected as is the
  339 HTTP cache (which uses the local file system).
  340 
  341 INSTALLATION INSTRUCTIONS
  342 
  343 See the file INSTALL in this directory for information on building the
  344 library and the geturl client.
  345 
  346 COPYRIGHT INFORMATION
  347 
  348 The OPeNDAP DAP library is copyrighted using the GNU Lesser GPL. See
  349 the file COPYING or contact the Free Software Foundation, Inc., at 59
  350 Temple Place, Suite 330, Boston, MA 02111-1307 USA. Older versions of
  351 the DAP were copyrighted by the University of Rhode Island and
  352 Massachusetts Institute of Technology; see the file COPYRIGHT_URI. The
  353 file deflate.c is also covered by COPYRIGHT_W3C.