Index of Functions: A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X 
Index Page
dasopr_c

Table of contents
Procedure
Abstract
Required_Reading
Keywords
Brief_I/O
Detailed_Input
Detailed_Output
Parameters
Exceptions
Files
Particulars
Examples
Restrictions
Literature_References
Author_and_Institution
Version
Index_Entries

Procedure

   dasopr_c ( DAS, open for read ) 

   void dasopr_c ( ConstSpiceChar  * fname,
                   SpiceInt        * handle )

Abstract

   Open a DAS file for reading.

Required_Reading

   DAS

Keywords

   DAS
   FILES


Brief_I/O

   VARIABLE  I/O  DESCRIPTION
   --------  ---  --------------------------------------------------
   fname      I   Name of a DAS file to be opened.
   handle     O   Handle assigned to the opened DAS file.

Detailed_Input

   fname       is the name of a DAS file to be opened with read
               access.

Detailed_Output

   handle      is the handle that is  associated with the file. This
               handle is used to identify the file in subsequent
               calls to other DAS routines.

Parameters

   None.

Exceptions

   1)  If the input filename is blank, the error SPICE(BLANKFILENAME)
       is signaled by a routine in the call tree of this routine.

   2)  If the specified file does not exist, the error
       SPICE(FILENOTFOUND) is signaled by a routine in the call tree
       of this routine.

   3)  If the specified file has already been opened for read
       access, the handle already associated with the file is
       returned.

   4)  If the specified file has already been opened for write
       access, the error SPICE(DASRWCONFLICT) is signaled by a
       routine in the call tree of this routine.

   5)  If the specified file has already been opened by a non-DAS
       routine, the error SPICE(DASIMPROPOPEN) is signaled by a
       routine in the call tree of this routine.

   6)  If the specified file cannot be opened without exceeding the
       maximum allowed number of open DAS files, the error
       SPICE(DASFTFULL) is signaled by a routine in the call tree of
       this routine.

   7)  If the named file cannot be opened properly, an error is
       signaled by a routine in the call tree of this routine.

   8)  If the file record cannot be read, the error
       SPICE(FILEREADFAILED) is signaled by a routine in the call
       tree of this routine.

   9)  If the specified file is not a DAS file, as indicated by the
       file's ID word, an error is signaled by a routine in the call
       tree of this routine.

   10) If no logical units are available, an error is signaled
       by a routine in the call tree of this routine.

   11) If the `fname' input string pointer is null, the error
       SPICE(NULLPOINTER) is signaled.

   12) If the `fname' input string has zero length, the error
       SPICE(EMPTYSTRING) is signaled.

Files

   See argument `fname'.

Particulars

   Most DAS files require only read access. If you do not need to
   change the contents of a file, you should open it using dasopr_c.

Examples

   The numerical results shown for this example may differ across
   platforms. The results depend on the SPICE kernels used as
   input, the compiler and supporting libraries, and the machine
   specific arithmetic implementation.

   1) Dump several parameters from the first DLA segment of a DSK
      file. Note that DSK files are based on DAS. The segment is
      assumed to be of type 2.

      Example code begins here.


      /.
         Program dasopr_ex1
      ./
      #include <stdio.h>
      #include "SpiceUsr.h"

      int main()
      {
         /.
         Constants
         ./
         #define FILSIZ          256

         /.
         Local variables
         ./
         SpiceBoolean            found;

         SpiceChar               dsk  [ FILSIZ ];

         SpiceDLADescr           dladsc;

         SpiceDouble             voxori [3];
         SpiceDouble             voxsiz;
         SpiceDouble             vtxbds [3][2];

         SpiceInt                cgscal;
         SpiceInt                handle;
         SpiceInt                np;
         SpiceInt                nv;
         SpiceInt                nvxtot;
         SpiceInt                vgrext [3];
         SpiceInt                voxnpl;
         SpiceInt                voxnpt;
         SpiceInt                vtxnpl;

         /.
         Prompt for the name of DSK to read.
         ./
         prompt_c ( "Enter DSK name > ", FILSIZ, dsk );

         /.
         Open the DSK file for read access. We use the
         DAS-level interface for this function.
         ./
         dasopr_c ( dsk, &handle );

         /.
         Begin a forward search through the kernel. In
         this example, it's a very short search.
         ./
         dlabfs_c ( handle, &dladsc, &found );

         if ( !found )
         {
            setmsg_c ( "No segment found in file #." );
            errch_c  ( "#",  dsk                     );
            sigerr_c ( "SPICE(NOSEGMENT)"            );
         }

         /.
         If we made it this far, DLADSC is the
         DLA descriptor of the first segment.
         Read and display type 2 bookkeeping data.
         ./
         dskb02_c ( handle,  &dladsc, &nv,    &np,    &nvxtot,
                    vtxbds,  &voxsiz, voxori, vgrext, &cgscal,
                    &vtxnpl, &voxnpt, &voxnpl                 );

         printf ( "\n"
                  "Number of vertices:                 %d\n"
                  "Number of plates:                   %d\n"
                  "Number of voxels:                   %d\n",
                  (int)nv,
                  (int)np,
                  (int)nvxtot                                       );

         printf ( "Vertex bounds in X direction (km):  %f : %f\n"
                  "Vertex bounds in Y direction (km):  %f : %f\n"
                  "Vertex bounds in Z direction (km):  %f : %f\n",
                  vtxbds[0][0], vtxbds[0][1],
                  vtxbds[1][0], vtxbds[1][1],
                  vtxbds[2][0], vtxbds[2][1]                        );

         printf ( "Voxel edge length (km):             %f\n"
                  "Voxel grid origin (km):           ( %f %f %f )\n"
                  "Voxel grid extents:                 %d %d %d\n"
                  "Coarse voxel grid scale:            %d\n"
                  "Size of vertex-plate list:          %d\n"
                  "Size of voxel-plate pointer array:  %d\n"
                  "Size of voxel-plate list:           %d\n",
                  voxsiz,
                  voxori[0], voxori[1], voxori[2],
                  (int)vgrext[0], (int)vgrext[1], (int)vgrext[2],
                  (int)cgscal,
                  (int)vtxnpl,
                  (int)voxnpt,
                  (int)voxnpl                                       );

         /.
         Close the kernel. This isn't necessary in a stand-
         alone program, but it's good practice in subroutines
         because it frees program and system resources.
         ./
         dascls_c ( handle );

         return ( 0 );
      }


      When this program was executed on a Mac/Intel/cc/64-bit
      platform, using the DSK file named phobos512.bds,
      the output was:


      Enter DSK name > phobos512.bds

      Number of vertices:                 1579014
      Number of plates:                   3145728
      Number of voxels:                   11914500
      Vertex bounds in X direction (km):  -13.440030 : 12.762800
      Vertex bounds in Y direction (km):  -11.520650 : 12.061140
      Vertex bounds in Z direction (km):  -9.570780 : 10.055000
      Voxel edge length (km):             0.104248
      Voxel grid origin (km):           ( -14.073520 -11.988554 -9.903588 )
      Voxel grid extents:                 260 235 195
      Coarse voxel grid scale:            5
      Size of vertex-plate list:          11010050
      Size of voxel-plate pointer array:  1151500
      Size of voxel-plate list:           6419540

Restrictions

   None.

Literature_References

   None.

Author_and_Institution

   N.J. Bachman        (JPL)
   J. Diaz del Rio     (ODC Space)
   K.R. Gehringer      (JPL)
   W.L. Taber          (JPL)
   F.S. Turner         (JPL)
   I.M. Underwood      (JPL)

Version

   -CSPICE Version 1.0.1, 10-AUG-2021 (JDR)

       Improved the -Exceptions section.

       Edited the header to comply with NAIF standard. Added
       complete code example using example from dskb02_c.

   -CSPICE Version 1.0.0, 05-OCT-2006 (NJB) (KRG) (WLT) (FST) (IMU)

Index_Entries

   open a DAS file for reading
   open a DAS file for read access
Fri Dec 31 18:41:04 2021