GRASS GIS 7 Programmer's Manual
7.0.5(2016)-r00000
|
#include <grass/shapefil.h>
#include <math.h>
#include <limits.h>
#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
Go to the source code of this file.
Macros | |
#define | FALSE 0 |
#define | TRUE 1 |
#define | ByteCopy(a, b, c) memcpy( b, a, c ) |
#define | MIN(a, b) ((a<b) ? a : b) |
#define | MAX(a, b) ((a>b) ? a : b) |
Typedefs | |
typedef unsigned char | uchar |
typedef int | int32 |
Functions | |
void | SHPWriteHeader (SHPHandle psSHP) |
SHPHandle SHPAPI_CALL | SHPOpen (const char *pszLayer, const char *pszAccess) |
SHPHandle SHPAPI_CALL | SHPOpenLL (const char *pszLayer, const char *pszAccess, SAHooks *psHooks) |
void SHPAPI_CALL | SHPClose (SHPHandle psSHP) |
void SHPAPI_CALL | SHPGetInfo (SHPHandle psSHP, int *pnEntities, int *pnShapeType, double *padfMinBound, double *padfMaxBound) |
SHPHandle SHPAPI_CALL | SHPCreate (const char *pszLayer, int nShapeType) |
SHPHandle SHPAPI_CALL | SHPCreateLL (const char *pszLayer, int nShapeType, SAHooks *psHooks) |
void SHPAPI_CALL | SHPComputeExtents (SHPObject *psObject) |
SHPObject SHPAPI_CALL1 * | SHPCreateObject (int nSHPType, int nShapeId, int nParts, const int *panPartStart, const int *panPartType, int nVertices, const double *padfX, const double *padfY, const double *padfZ, const double *padfM){ SHPObject *psObject;int i, bHasM, bHasZ;psObject=(SHPObject *) calloc(1, sizeof(SHPObject) |
if (nSHPType==SHPT_ARCM||nSHPType==SHPT_POINTM||nSHPType==SHPT_POLYGONM||nSHPType==SHPT_MULTIPOINTM) | |
if (nVertices > 0) | |
SHPComputeExtents (psObject) | |
return (psObject) | |
SHPObject SHPAPI_CALL1 * | SHPCreateSimpleObject (int nSHPType, int nVertices, const double *padfX, const double *padfY, const double *padfZ){ return(SHPCreateObject(nSHPType, -1, 0, NULL, NULL, nVertices, padfX, padfY, padfZ, NULL) |
int SHPAPI_CALL | SHPWriteObject (SHPHandle psSHP, int nShapeId, SHPObject *psObject) |
SHPObject SHPAPI_CALL1 * | SHPReadObject (SHPHandle psSHP, int hEntity){ int nEntitySize, nRequiredSize;SHPObject *psShape;char pszErrorMsg[128];if(hEntity< 0||hEntity >=psSHP->nRecords) return(NULL |
if (nEntitySize > psSHP->nBufSize) | |
if (psSHP->pabyRec==NULL) | |
if (psSHP->sHooks.FSeek(psSHP->fpSHP, psSHP->panRecOffset[hEntity], 0) !=0||psSHP->sHooks.FRead(psSHP->pabyRec, nEntitySize, 1, psSHP->fpSHP) !=1) | |
if (8+4 > nEntitySize) | |
if (bBigEndian) | |
else | if (psShape->nSHPType==SHPT_MULTIPOINT||psShape->nSHPType==SHPT_MULTIPOINTM||psShape->nSHPType==SHPT_MULTIPOINTZ) |
return (psShape) | |
const char SHPAPI_CALL1 * | SHPTypeName (int nSHPType){ switch(nSHPType |
const char SHPAPI_CALL1 * | SHPPartTypeName (int nPartType){ switch(nPartType |
void SHPAPI_CALL | SHPDestroyObject (SHPObject *psShape) |
int SHPAPI_CALL | SHPRewindObject (SHPHandle hSHP, SHPObject *psObject) |
Variables | |
psObject | nSHPType = nSHPType |
psObject | nShapeId = nShapeId |
psObject | bMeasureIsUsed = FALSE |
else | |
bHasZ = FALSE | |
psObject | nVertices = nVertices |
nEntitySize = psSHP->panRecSize[hEntity]+8 | |
psShape = (SHPObject *) calloc(1,sizeof(SHPObject)) | |
Definition at line 249 of file shpopen.c.
Referenced by SHPCreateLL(), and SHPWriteHeader().
#define FALSE 0 |
Definition at line 245 of file shpopen.c.
Referenced by if(), SHPCreateLL(), SHPOpenLL(), and SHPRewindObject().
Definition at line 252 of file shpopen.c.
Referenced by SHPComputeExtents().
Definition at line 251 of file shpopen.c.
Referenced by SHPComputeExtents().
#define TRUE 1 |
Definition at line 246 of file shpopen.c.
Referenced by if(), SHPCreateLL(), SHPOpenLL(), and SHPWriteObject().
if | ( | nSHPType | = = SHPT_ARCM || nSHPType == SHPT_POINTM || nSHPType == SHPT_POLYGONM || nSHPType == SHPT_MULTIPOINTM | ) |
Definition at line 1012 of file shpopen.c.
References FALSE, SHPT_ARCZ, SHPT_MULTIPATCH, SHPT_MULTIPOINTZ, SHPT_POINTZ, SHPT_POLYGONZ, and TRUE.
if | ( | nVertices | , |
0 | |||
) |
Definition at line 1072 of file shpopen.c.
References SHPObject::bMeasureIsUsed, NULL, nVertices, SHPObject::padfM, SHPObject::padfX, SHPObject::padfY, SHPObject::padfZ, and TRUE.
if | ( | nEntitySize | , |
psSHP-> | nBufSize | ||
) |
Definition at line 1521 of file shpopen.c.
References SHPInfo::pabyRec.
if | ( | psSHP->sHooks.FSeek(psSHP->fpSHP, psSHP->panRecOffset[hEntity], 0) ! | = 0 || psSHP->sHooks.FRead( psSHP->pabyRec, nEntitySize, 1, psSHP->fpSHP ) != 1 | ) |
Definition at line 1551 of file shpopen.c.
References SAHooks::Error, NULL, and SHPInfo::sHooks.
if | ( | 8+ | 4, |
nEntitySize | |||
) |
Definition at line 1571 of file shpopen.c.
References SAHooks::Error, SHPObject::nSHPType, NULL, SHPInfo::pabyRec, SHPInfo::sHooks, and SHPDestroyObject().
else if | ( | psShape-> | nSHPType = = SHPT_MULTIPOINT || psShape->nSHPType == SHPT_MULTIPOINTM || psShape->nSHPType == SHPT_MULTIPOINTZ | ) |
Definition at line 1801 of file shpopen.c.
References SAHooks::Error, NULL, SHPInfo::pabyRec, SHPInfo::sHooks, and SHPDestroyObject().
return | ( | psObject | ) |
return | ( | psShape | ) |
void SHPAPI_CALL SHPClose | ( | SHPHandle | psSHP | ) |
Definition at line 720 of file shpopen.c.
References SHPInfo::bUpdated, SAHooks::FClose, SHPInfo::fpSHP, SHPInfo::fpSHX, NULL, SHPInfo::pabyRec, SHPInfo::panRecOffset, SHPInfo::panRecSize, SHPInfo::sHooks, SHPAPI_CALL, and SHPWriteHeader().
void SHPAPI_CALL SHPComputeExtents | ( | SHPObject * | psObject | ) |
Definition at line 957 of file shpopen.c.
References bHasZ, SHPObject::dfMMax, SHPObject::dfMMin, SHPObject::dfXMax, SHPObject::dfXMin, SHPObject::dfYMax, SHPObject::dfYMin, SHPObject::dfZMax, SHPObject::dfZMin, MAX, MIN, nShapeId, nSHPType, SHPObject::nVertices, nVertices, SHPObject::padfM, SHPObject::padfX, SHPObject::padfY, SHPObject::padfZ, SHPAPI_CALL1, and SHPCreateObject().
SHPComputeExtents | ( | psObject | ) |
SHPHandle SHPAPI_CALL SHPCreate | ( | const char * | pszLayer, |
int | nShapeType | ||
) |
Definition at line 789 of file shpopen.c.
References SASetupDefaultHooks(), SHPAPI_CALL, and SHPCreateLL().
SHPHandle SHPAPI_CALL SHPCreateLL | ( | const char * | pszLayer, |
int | nShapeType, | ||
SAHooks * | psHooks | ||
) |
Definition at line 807 of file shpopen.c.
References ByteCopy, SAHooks::Error, FALSE, SAHooks::FOpen, NULL, and TRUE.
Referenced by SHPCreate().
SHPObject SHPAPI_CALL1* SHPCreateObject | ( | int | nSHPType, |
int | nShapeId, | ||
int | nParts, | ||
const int * | panPartStart, | ||
const int * | panPartType, | ||
int | nVertices, | ||
const double * | padfX, | ||
const double * | padfY, | ||
const double * | padfZ, | ||
const double * | padfM | ||
) |
Referenced by SHPComputeExtents().
SHPObject SHPAPI_CALL1* SHPCreateSimpleObject | ( | int | nSHPType, |
int | nVertices, | ||
const double * | padfX, | ||
const double * | padfY, | ||
const double * | padfZ | ||
) |
void SHPAPI_CALL SHPDestroyObject | ( | SHPObject * | psShape | ) |
Definition at line 2096 of file shpopen.c.
References NULL, SHPObject::padfM, SHPObject::padfX, SHPObject::padfY, SHPObject::padfZ, SHPObject::panPartStart, SHPObject::panPartType, and SHPAPI_CALL.
Referenced by if().
void SHPAPI_CALL SHPGetInfo | ( | SHPHandle | psSHP, |
int * | pnEntities, | ||
int * | pnShapeType, | ||
double * | padfMinBound, | ||
double * | padfMaxBound | ||
) |
Definition at line 757 of file shpopen.c.
References SHPInfo::adBoundsMax, SHPInfo::adBoundsMin, SHPInfo::nRecords, SHPInfo::nShapeType, NULL, and SHPAPI_CALL.
SHPHandle SHPAPI_CALL SHPOpen | ( | const char * | pszLayer, |
const char * | pszAccess | ||
) |
Definition at line 426 of file shpopen.c.
References SASetupDefaultHooks(), SHPAPI_CALL, and SHPOpenLL().
SHPHandle SHPAPI_CALL SHPOpenLL | ( | const char * | pszLayer, |
const char * | pszAccess, | ||
SAHooks * | psHooks | ||
) |
Definition at line 444 of file shpopen.c.
References SHPInfo::bUpdated, SAHooks::Error, FALSE, SAHooks::FClose, SAHooks::FOpen, SHPInfo::fpSHP, SHPInfo::fpSHX, SAHooks::FRead, SHPInfo::nFileSize, SHPInfo::nRecords, SHPInfo::nShapeType, NULL, SHPInfo::sHooks, and TRUE.
Referenced by SHPOpen().
const char SHPAPI_CALL1* SHPPartTypeName | ( | int | nPartType | ) |
Definition at line 2063 of file shpopen.c.
References SHPAPI_CALL, SHPP_FIRSTRING, SHPP_INNERRING, SHPP_OUTERRING, SHPP_RING, SHPP_TRIFAN, and SHPP_TRISTRIP.
SHPObject SHPAPI_CALL1* SHPReadObject | ( | SHPHandle | psSHP, |
int | hEntity | ||
) | -> nRecords) return(NULL |
int SHPAPI_CALL SHPRewindObject | ( | SHPHandle | hSHP, |
SHPObject * | psObject | ||
) |
Definition at line 2127 of file shpopen.c.
References FALSE, SHPObject::nParts, SHPObject::nSHPType, SHPObject::nVertices, SHPObject::padfM, SHPObject::padfX, SHPObject::padfY, SHPObject::padfZ, SHPObject::panPartStart, SHPT_POLYGON, SHPT_POLYGONM, and SHPT_POLYGONZ.
const char SHPAPI_CALL1* SHPTypeName | ( | int | nSHPType | ) |
Definition at line 2006 of file shpopen.c.
References SHPAPI_CALL1, SHPT_ARC, SHPT_ARCM, SHPT_ARCZ, SHPT_MULTIPATCH, SHPT_MULTIPOINT, SHPT_MULTIPOINTM, SHPT_MULTIPOINTZ, SHPT_NULL, SHPT_POINT, SHPT_POINTM, SHPT_POINTZ, SHPT_POLYGON, SHPT_POLYGONM, and SHPT_POLYGONZ.
void SHPWriteHeader | ( | SHPHandle | psSHP | ) |
Definition at line 301 of file shpopen.c.
References ByteCopy, SAHooks::Error, SHPInfo::fpSHX, SHPInfo::nFileSize, NULL, and SHPInfo::sHooks.
Referenced by SHPClose().
int SHPAPI_CALL SHPWriteObject | ( | SHPHandle | psSHP, |
int | nShapeId, | ||
SHPObject * | psObject | ||
) |
Definition at line 1129 of file shpopen.c.
References SHPInfo::bUpdated, SHPInfo::nMaxRecords, SHPInfo::nRecords, SHPInfo::nShapeType, SHPObject::nSHPType, SHPInfo::panRecOffset, SHPT_NULL, and TRUE.
bHasZ = FALSE |
Definition at line 1032 of file shpopen.c.
Referenced by SHPComputeExtents().
else |
psShape nShapeId = nShapeId |
Definition at line 1006 of file shpopen.c.
Referenced by SHPComputeExtents().
psObject nSHPType = nSHPType |
Definition at line 1005 of file shpopen.c.
Referenced by SHPComputeExtents().
psObject nVertices = nVertices |
Definition at line 1098 of file shpopen.c.
Referenced by if(), and SHPComputeExtents().