⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ptapi.c

📁 GIS系统支持库Geospatial Data Abstraction Library代码.GDAL is a translator library for raster geospatial dat
💻 C
📖 第 1 页 / 共 5 页
字号:
	if (status == 0)	{	    for (i = 0; i < NPOINT; i++)	    {		if (PTXPoint[i].active == 0)		{		    /*		     * Set pointID, Set point entry active, Store root Vgroup		     * ID, Store sub Vgroup IDs, Store HDF-EOS file ID		     */		    pointID = i + idOffset;		    PTXPoint[i].active = 1;		    PTXPoint[i].IDTable = vgid[0];		    PTXPoint[i].VIDTable[0] = vgid[1];		    PTXPoint[i].VIDTable[1] = vgid[2];		    PTXPoint[i].VIDTable[2] = vgid[3];		    PTXPoint[i].fid = fid;		    status = 0;		    break;		}	    }	}    }    return (pointID);}/*----------------------------------------------------------------------------||  BEGIN_PROLOG                                                               ||                                                                             ||  FUNCTION: PTchkptid                                                        ||                                                                             ||  DESCRIPTION: Checks for valid pointID and returns file ID, SDS ID, and     ||               point Vgroup ID                                               ||                                                                             ||                                                                             ||  Return Value    Type     Units     Description                             ||  ============   ======  =========   =====================================   ||  status         intn                return status (0) SUCCEED, (-1) FAIL    ||                                                                             ||  INPUTS:                                                                    ||  pointID        int32               point structure ID                      ||  routname       char                Name of routine calling PTchkptid       ||                                                                             ||  OUTPUTS:                                                                   ||  fid            int32               File ID                                 ||  sdInterfaceID  int32               SDS interface ID                        ||  ptVgroupID     int32               point Vgroup ID                         ||                                                                             ||  NOTES:                                                                     ||                                                                             ||                                                                             ||   Date     Programmer   Description                                         ||  ======   ============  =================================================   ||  Jun 96   Joel Gales    Original Programmer                                 ||                                                                             ||  END_PROLOG                                                                 |-----------------------------------------------------------------------------*/intnPTchkptid(int32 pointID, char *routname,	  int32 * fid, int32 * sdInterfaceID, int32 * ptVgroupID){    intn            status = 0;	/* routine return status variable */    uint8           access;	/* Read/Write access code */    int32           idOffset = PTIDOFFSET;	/* Point ID offset */    char            message1[] =    "Invalid point id: %d in routine \"%s\".  ID must be >= %d and < %d.\n";    char            message2[] =    "Point id %d in routine \"%s\" not active.\n";    /* Check for valid point id */    /* ------------------------ */    if (pointID < idOffset || pointID >= NPOINT + idOffset)    {	status = -1;	HEpush(DFE_RANGE, "PTchkptid", __FILE__, __LINE__);	HEreport(message1, pointID, routname, idOffset, NPOINT + idOffset);    }    else    {	/* Check for active point ID */	/* ------------------------- */	if (PTXPoint[pointID % idOffset].active == 0)	{	    status = -1;	    HEpush(DFE_GENAPP, "PTchkptid", __FILE__, __LINE__);	    HEreport(message2, pointID, routname);	}	else	{	    /* Get file and Point key */	    /* ----------------------- */	    status = EHchkfid(PTXPoint[pointID % idOffset].fid, " ", fid,			      sdInterfaceID, &access);	    *ptVgroupID = PTXPoint[pointID % idOffset].IDTable;	}    }    return (status);}/*----------------------------------------------------------------------------||  BEGIN_PROLOG                                                               ||                                                                             ||  FUNCTION: PTnrecs                                                          ||                                                                             ||  DESCRIPTION: Returns the number of records in a level.                     ||                                                                             ||                                                                             ||  Return Value    Type     Units     Description                             ||  ============   ======  =========   =====================================   ||  nrec           int32               Number of records in level              ||                                                                             ||  INPUTS:                                                                    ||  pointID        int32               point structure ID                      ||  level          int32               level number (0 - based)                ||                                                                             ||                                                                             ||  OUTPUTS:                                                                   ||             None                                                            ||                                                                             ||  NOTES:                                                                     ||                                                                             ||                                                                             ||   Date     Programmer   Description                                         ||  ======   ============  =================================================   ||  Jun 96   Joel Gales    Original Programmer                                 ||                                                                             ||  END_PROLOG                                                                 |-----------------------------------------------------------------------------*/int32PTnrecs(int32 pointID, int32 level){    intn            status = 0;	/* routine return status variable */    uint8           recChk;	/* Record check flag */    int32           fid;	/* HDF-EOS file id */    int32           sdInterfaceID;	/* HDF SDS interface ID */    int32           idOffset = PTIDOFFSET;	/* Point ID offset */    int32           ptVgrpID;	/* Point Vgroup ID */    int32           nlevels;	/* Number of levels in point */    int32           vdataID;	/* Level Vdata ID */    int32           vdataID0;	/* LevelWritten Vdata ID */    int32           tag;	/* Vdata tag */    int32           ref;	/* Vdata reference */    int32           nrec;	/* Number of records in level */    /* Check for valid point ID */    /* ------------------------ */    status = PTchkptid(pointID, "PTnrecs", &fid, &sdInterfaceID, &ptVgrpID);    if (status == 0)    {	/* Get number of levels */	/* -------------------- */	nlevels = Vntagrefs(ptVgrpID);	/* Report error if no levels (vdatas) defined */	/* ------------------------------------------ */	if (nlevels == 0)	{	    status = -1;	    HEpush(DFE_GENAPP, "PTnrecs", __FILE__, __LINE__);	    HEreport("No Levels Defined for point ID: %d\n", pointID);	}	else if (nlevels < level)	{	    /* Report error if level # to large */	    /* -------------------------------- */	    status = -1;	    HEpush(DFE_GENAPP, "PTnrecs", __FILE__, __LINE__);	    HEreport("Only %d levels Defined for point ID: %d\n",		     nlevels, pointID);	}	if (status == 0)	{	    /* Get level vdata ID */	    /* ------------------ */	    vdataID = PTXPoint[pointID % idOffset].vdID[level];	    /* Get number of records in level */	    /* ------------------------------ */	    nrec = VSelts(vdataID);	    /* If nrec = 1 check whether actual data has been written */	    /* ------------------------------------------------------ */	    if (nrec == 1)	    {		/* Attach to "LevelWritten" vdata */		/* ------------------------------ */		Vgettagref(ptVgrpID, 0, &tag, &ref);		vdataID0 = VSattach(fid, ref, "r");		/* Read record for desired level */		/* ----------------------------- */		VSseek(vdataID0, level);		VSsetfields(vdataID0, "LevelWritten");		VSread(vdataID0, &recChk, 1, FULL_INTERLACE);		/* If level not yet written then reset nrec to 0 */		/* --------------------------------------------- */		if (recChk == 0)		{		    nrec = 0;		}		/* Detach for "LevelWritten" Vdata */		/* ------------------------------- */		VSdetach(vdataID0);	    }	}    }    return (nrec);}/*----------------------------------------------------------------------------||  BEGIN_PROLOG                                                               ||                                                                             ||  FUNCTION: PTnlevels                                                        ||                                                                             ||  DESCRIPTION: Returns the number of levels in a point data set.             ||                                                                             ||                                                                             ||  Return Value    Type     Units     Description                             ||  ============   ======  =========   =====================================   ||  nlevels        int32               Number of levels in point structure     ||                                                                             ||  INPUTS:                                                                    ||  pointID        int32               point structure ID                      ||                                                                             ||                                                                             ||  OUTPUTS:                                                                   ||             None                                                            ||                                                                             ||  NOTES:                                                                     ||                                                                             ||                                                                             ||   Date     Programmer   Description                                         ||  ======   ============  =================================================   ||  Jun 96   Joel Gales    Original Programmer                                 ||                                                                             ||  END_PROLOG                                                                 |-----------------------------------------------------------------------------*/int32PTnlevels(int32 pointID){    intn            status = 0;	/* routine return status variable */    int32           fid;	/* HDF-EOS file id */    int32           sdInterfaceID;	/* HDF SDS interface ID */    int32           idOffset = PTIDOFFSET;	/* Point ID offset */    int32           ptVgrpID;	/* Point Vgroup ID */    int32           nlevels;	/* Number of levels in point */    /* Check for valid point ID */    /* ------------------------ */    status = PTchkptid(pointID, "PTnlevels", &fid, &sdInterfaceID, &ptVgrpID);    /* Get number of levels (Number of entries in Data Vgroup */    /* ------------------------------------------------------ */    if (status == 0)    {	nlevels = Vntagrefs(PTXPoint[pointID % idOffset].VIDTable[0]);    }    return (nlevels);}/*----------------------------------------------------------------------------||  BEGIN_PROLOG                                                               ||                                                                             ||  FUNCTION: PTsizeof                                                         ||                                                                             ||  DESCRIPTION: Returns size in bytes for specified fields in a point         ||               data set.                                                     ||                                                                             ||                                                                             ||  Return Value    Type     Units     Description                             ||  ============   ======  =========   =====================================   ||  fldsz          int32               Size in bytes of fields                 ||                                                                             ||  INPUTS:                                                                    ||  pointID        int32               point structure ID                      ||  fieldlist      char                field list (comma-separated)            ||                                                                             ||  OUTPUTS:                                                                   ||  fldlevels      int32               Levels of fields                        ||                                                                             ||                                                                             ||  NOTES:                                                                     ||                                                                             ||                                                                             ||   Date     Programmer   Description                                         ||  ======   ============  =================================================   ||  Jun 96   Joel Gales    Original Programmer                                 ||                                                                             ||  END_PROLOG                                                                 |-----------------------------------------------------------------------------*/int32PTsizeof(int32 pointID, char *fieldlist, int32 fldlevels[]){    intn            i;		/* Loop index */    intn            j;		/* Loop index */    intn            status = 0;	/* routine return status variable */    uint8           found[VSFIELDMAX];	/* Field found flag array */    int32           fid;	/* HDF-EOS file id */    int32           sdInterfaceID;	/* HDF SDS interface ID */    int32           idOffset = PTIDOFFSET;	/* Point ID offset */    int32           ptVgrpID;	/* Point Vgroup ID */    int32           nlevels;	/* Number of levels in point */    int32           nflds;	/* Number of fields in fieldlist */    int32           vdataID;	/* Vdata ID */    int32           slen[VSFIELDMAX];	/* String length array */    int32           fldsz = 0;	/* Record size in bytes */    char           *pntr[VSFIELDMAX];	/* String pointer array */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -