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

📄 ptapi.c

📁 GIS系统支持库Geospatial Data Abstraction Library代码.GDAL is a translator library for raster geospatial dat
💻 C
📖 第 1 页 / 共 5 页
字号:
    char            utlbuf[256];/* Utility Buffer */    /* Check for valid point ID */    /* ------------------------ */    status = PTchkptid(pointID, "PTsizeof", &fid, &sdInterfaceID, &ptVgrpID);    if (status == 0)    {	/* Get number of levels */	/* -------------------- */	nlevels = PTnlevels(pointID);	/* Report error if no levels (vdatas) defined */	/* ------------------------------------------ */	if (nlevels == 0)	{	    status = -1;	    HEpush(DFE_GENAPP, "PTsizeof", __FILE__, __LINE__);	    HEreport("No Levels Defined for point ID: %d\n", pointID);	}	/* If no problems ... */	/* ------------------ */	if (status == 0)	{	    /* Parse field list */	    /* ---------------- */	    nflds = EHparsestr(fieldlist, ',', pntr, slen);	    /* Initialize fldlevels & found arrays */	    /* ----------------------------------- */	    for (j = 0; j < nflds; j++)	    {		fldlevels[j] = -1;	    }	    for (j = 0; j < nflds; j++)	    {		found[j] = 0;	    }	    /* Loop through all levels in point */	    /* -------------------------------- */	    for (i = 0; i < nlevels; i++)	    {		/* Get level vdata ID */		/* ------------------ */		vdataID = PTXPoint[pointID % idOffset].vdID[i];		/* Loop through all fields in fieldlist */		/* ------------------------------------ */		for (j = 0; j < nflds; j++)		{		    /* Copy field entry into utlbuf */		    /* ---------------------------- */		    memcpy(utlbuf, pntr[j], slen[j]);		    utlbuf[slen[j]] = 0;		    /* If field exists in level and not in a prevous one ... */		    /* ----------------------------------------------------- */		    if (VSfexist(vdataID, utlbuf) == 1 && found[j] == 0)		    {			/* Increment total field size */			/* -------------------------- */			fldsz += VSsizeof(vdataID, utlbuf);			/* Store field level & set found flag */			/* ---------------------------------- */			fldlevels[j] = i;			found[j] = 1;		    }		}	    }	}    }    return (fldsz);}/*----------------------------------------------------------------------------||  BEGIN_PROLOG                                                               ||                                                                             ||  FUNCTION: PTnfields                                                        ||                                                                             ||  DESCRIPTION: Returns number of fields defined in a level.                  ||                                                                             ||                                                                             ||  Return Value    Type     Units     Description                             ||  ============   ======  =========   =====================================   ||  nflds                              Number of fields in a level             ||                                                                             ||  INPUTS:                                                                    ||  pointID        int32               point structure ID                      ||  level          int32               level number (0 - based)                ||                                                                             ||                                                                             ||  OUTPUTS:                                                                   ||  strbufsize     int32               String length of fieldlist              ||                                                                             ||  NOTES:                                                                     ||                                                                             ||                                                                             ||   Date     Programmer   Description                                         ||  ======   ============  =================================================   ||  Jun 96   Joel Gales    Original Programmer                                 ||  Oct 96   Joel Gales    Enlarge field string buffer                         ||                                                                             ||  END_PROLOG                                                                 |-----------------------------------------------------------------------------*/int32PTnfields(int32 pointID, int32 level, int32 * strbufsize){    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 */    int32           nflds;	/* Number of fields in fieldlist */    int32           vdataID;	/* Vdata ID */    char            fieldbuf[VSFIELDMAX * FIELDNAMELENMAX];    /* Vdata fieldname buffer */    /* Check for valid point ID */    /* ------------------------ */    status = PTchkptid(pointID, "PTnfields", &fid, &sdInterfaceID, &ptVgrpID);    if (status == 0)    {	/* Get number of levels */	/* -------------------- */	nlevels = PTnlevels(pointID);	/* Report error if no levels (vdatas) defined */	/* ------------------------------------------ */	if (nlevels == 0)	{	    status = -1;	    HEpush(DFE_GENAPP, "PTnfields", __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, "PTnfields", __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 fields in level & fieldlist */	    /* ----------------------------------------- */	    nflds = VSgetfields(vdataID, fieldbuf);	    /* Return fieldlist string size if requested */	    /* ----------------------------------------- */	    if (strbufsize != NULL)	    {		*strbufsize = strlen(fieldbuf);	    }	}    }    return (nflds);}/*----------------------------------------------------------------------------||  BEGIN_PROLOG                                                               ||                                                                             ||  FUNCTION: PTlevelindx                                                      ||                                                                             ||  DESCRIPTION: Returns index number for a named level.                       ||                                                                             ||                                                                             ||  Return Value    Type     Units     Description                             ||  ============   ======  =========   =====================================   ||  n              int32               Level number (0 - based)                ||                                                                             ||  INPUTS:                                                                    ||  pointID        int32               point structure ID                      ||  levelname      char                point level name                        ||                                                                             ||                                                                             ||  OUTPUTS:                                                                   ||             None                                                            ||                                                                             ||  NOTES:                                                                     ||                                                                             ||                                                                             ||   Date     Programmer   Description                                         ||  ======   ============  =================================================   ||  Jun 96   Joel Gales    Original Programmer                                 ||                                                                             ||  END_PROLOG                                                                 |-----------------------------------------------------------------------------*/int32PTlevelindx(int32 pointID, char *levelname){    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 */    int32           level = -1;	/* Level corresponding to levelname */    char            name[VSNAMELENMAX];	/* Level name */    /* Check for valid point id */    /* ------------------------ */    status = PTchkptid(pointID, "PTlevelindx",		       &fid, &sdInterfaceID, &ptVgrpID);    if (status == 0)    {	/* Get number of levels */	/* -------------------- */	nlevels = PTnlevels(pointID);	/* Loop through all levels in point */	/* -------------------------------- */	for (level = 0; level < nlevels; level++)	{	    /* Get level name */	    /* -------------- */	    VSgetname(PTXPoint[pointID % idOffset].vdID[level], name);	    /* If it matches input levelname then exit loop */	    /* -------------------------------------------- */	    if (strcmp(name, levelname) == 0)	    {		break;	    }	}    }    /* Levelname not found so set error status */    /* --------------------------------------- */    if (level == nlevels)    {	level = -1;    }    return (level);}/*----------------------------------------------------------------------------||  BEGIN_PROLOG                                                               ||                                                                             ||  FUNCTION: PTgetlevelname                                                   ||                                                                             ||  DESCRIPTION: Returns level name                                            ||                                                                             ||                                                                             ||  Return Value    Type     Units     Description                             ||  ============   ======  =========   =====================================   ||  nflds                              Number of fields in a level             ||                                                                             ||  INPUTS:                                                                    ||  pointID        int32               point structure ID                      ||  level          int32               level number (0 - based)                ||                                                                             ||                                                                             ||  OUTPUTS:                                                                   ||  levelname      char                Level name                              ||  strbufsize     int32               String length of fieldlist              ||                                                                             ||  NOTES:                                                                     ||                                                                             ||                                                                             ||   Date     Programmer   Description                                         ||  ======   ============  =================================================   ||  Dec 96   Paul Harten   Original Programmer                                 ||  Dec 96   Joel Gales    Modify to comform with coding standards             ||                                                                             ||  END_PROLOG                                                                 |-----------------------------------------------------------------------------*/intnPTgetlevelname(int32 pointID, int32 level, char *levelname, int32 * strbufsize){    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 */    char            name[VSNAMELENMAX];	/* Level name */    /* Check for valid point id */    /* ------------------------ */    status = PTchkptid(pointID, "PTgetlevelname",		       &fid, &sdInterfaceID, &ptVgrpID);    if (status == 0)    {	/* Get number of levels */	/* -------------------- */	nlevels = PTnlevels(pointID);	/* Report error if no levels (vdatas) defined */	/* ------------------------------------------ */	if (nlevels == 0)	{	    status = -1;

⌨️ 快捷键说明

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