GRASS GIS 8 Programmer's Manual 8.4.1(2025)-45ca3179ab
Loading...
Searching...
No Matches
shapefil.h
Go to the documentation of this file.
1#ifndef SHAPEFILE_H_INCLUDED
2#define SHAPEFILE_H_INCLUDED
3
4/******************************************************************************
5 * $Id$
6 *
7 * Project: Shapelib
8 * Purpose: Primary include file for Shapelib.
9 * Author: Frank Warmerdam, warmerdam@pobox.com
10 *
11 ******************************************************************************
12 * Copyright (c) 1999, Frank Warmerdam
13 * Copyright (c) 2012-2016, Even Rouault <even dot rouault at spatialys.com>
14 *
15 * This software is available under the following "MIT Style" license,
16 * or at the option of the licensee under the LGPL (see COPYING). This
17 * option is discussed in more detail in shapelib.html.
18 *
19 * --
20 *
21 * Permission is hereby granted, free of charge, to any person obtaining a
22 * copy of this software and associated documentation files (the "Software"),
23 * to deal in the Software without restriction, including without limitation
24 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
25 * and/or sell copies of the Software, and to permit persons to whom the
26 * Software is furnished to do so, subject to the following conditions:
27 *
28 * The above copyright notice and this permission notice shall be included
29 * in all copies or substantial portions of the Software.
30 *
31 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
32 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
33 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
34 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
35 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
36 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
37 * DEALINGS IN THE SOFTWARE.
38 ******************************************************************************
39 *
40 */
41
42#include <stdio.h>
43
44#ifdef USE_CPL
45#include "cpl_conv.h"
46#endif
47
48#ifdef __cplusplus
49extern "C" {
50#endif
51
52/************************************************************************/
53/* Configuration options. */
54/************************************************************************/
55
56/* -------------------------------------------------------------------- */
57/* Should the DBFReadStringAttribute() strip leading and */
58/* trailing white space? */
59/* -------------------------------------------------------------------- */
60#define TRIM_DBF_WHITESPACE
61
62/* -------------------------------------------------------------------- */
63/* Should we write measure values to the Multipatch object? */
64/* Reportedly ArcView crashes if we do write it, so for now it */
65/* is disabled. */
66/* -------------------------------------------------------------------- */
67#define DISABLE_MULTIPATCH_MEASURE
68
69/* -------------------------------------------------------------------- */
70/* SHPAPI_CALL */
71/* */
72/* The following two macros are present to allow forcing */
73/* various calling conventions on the Shapelib API. */
74/* */
75/* To force __stdcall conventions (needed to call Shapelib */
76/* from Visual Basic and/or Dephi I believe) the makefile could */
77/* be modified to define: */
78/* */
79/* /DSHPAPI_CALL=__stdcall */
80/* */
81/* If it is desired to force export of the Shapelib API without */
82/* using the shapelib.def file, use the following definition. */
83/* */
84/* /DSHAPELIB_DLLEXPORT */
85/* */
86/* To get both at once it will be necessary to hack this */
87/* include file to define: */
88/* */
89/* #define SHPAPI_CALL __declspec(dllexport) __stdcall */
90/* #define SHPAPI_CALL1 __declspec(dllexport) * __stdcall */
91/* */
92/* The complexity of the situation is partly caused by the */
93/* peculiar requirement of Visual C++ that __stdcall appear */
94/* after any "*"'s in the return value of a function while the */
95/* __declspec(dllexport) must appear before them. */
96/* -------------------------------------------------------------------- */
97
98#ifdef SHAPELIB_DLLEXPORT
99#define SHPAPI_CALL __declspec(dllexport)
100#define SHPAPI_CALL1(x) __declspec(dllexport) x
101#endif
102
103#ifndef SHPAPI_CALL
104#if defined(USE_GCC_VISIBILITY_FLAG)
105#define SHPAPI_CALL __attribute__((visibility("default")))
106#define SHPAPI_CALL1(x) __attribute__((visibility("default"))) x
107#else
108#define SHPAPI_CALL
109#endif
110#endif
111
112#ifndef SHPAPI_CALL1
113#define SHPAPI_CALL1(x) x SHPAPI_CALL
114#endif
115
116/* -------------------------------------------------------------------- */
117/* Macros for controlling CVSID and ensuring they don't appear */
118/* as unreferenced variables resulting in lots of warnings. */
119/* -------------------------------------------------------------------- */
120#ifndef DISABLE_CVSID
121#if defined(__GNUC__) && __GNUC__ >= 4
122#define SHP_CVSID(string) \
123 static const char cpl_cvsid[] __attribute__((used)) = string;
124#else
125#define SHP_CVSID(string) \
126 static const char cpl_cvsid[] = string; \
127 static const char *cvsid_aw() \
128 { \
129 return (cvsid_aw() ? NULL : cpl_cvsid); \
130 }
131#endif
132#else
133#define SHP_CVSID(string)
134#endif
135
136/* -------------------------------------------------------------------- */
137/* On some platforms, additional file IO hooks are defined that */
138/* UTF-8 encoded filenames Unicode filenames */
139/* -------------------------------------------------------------------- */
140#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
141#define SHPAPI_WINDOWS
142#define SHPAPI_UTF8_HOOKS
143#endif
144
145/* -------------------------------------------------------------------- */
146/* IO/Error hook functions. */
147/* -------------------------------------------------------------------- */
148typedef int *SAFile;
149
150#ifndef SAOffset
151typedef unsigned long SAOffset;
152#endif
153
154typedef struct {
155 SAFile (*FOpen)(const char *filename, const char *access);
156 SAOffset (*FRead)(void *p, SAOffset size, SAOffset nmemb, SAFile file);
157 SAOffset (*FWrite)(void *p, SAOffset size, SAOffset nmemb, SAFile file);
158 SAOffset (*FSeek)(SAFile file, SAOffset offset, int whence);
162 int (*Remove)(const char *filename);
163
164 void (*Error)(const char *message);
165 double (*Atof)(const char *str);
166} SAHooks;
167
169#ifdef SHPAPI_UTF8_HOOKS
170void SHPAPI_CALL SASetupUtf8Hooks(SAHooks *psHooks);
171#endif
172
173/************************************************************************/
174/* SHP Support. */
175/************************************************************************/
176typedef struct tagSHPObject SHPObject;
177
178typedef struct {
180
183
184 int nShapeType; /* SHPT_* */
185
186 unsigned int nFileSize; /* SHP file */
187
190 unsigned int *panRecOffset;
191 unsigned int *panRecSize;
192
193 double adBoundsMin[4];
194 double adBoundsMax[4];
195
197
198 unsigned char *pabyRec;
200
202 unsigned char *pabyObjectBuf;
205} SHPInfo;
206
208
209/* -------------------------------------------------------------------- */
210/* Shape types (nSHPType) */
211/* -------------------------------------------------------------------- */
212#define SHPT_NULL 0
213#define SHPT_POINT 1
214#define SHPT_ARC 3
215#define SHPT_POLYGON 5
216#define SHPT_MULTIPOINT 8
217#define SHPT_POINTZ 11
218#define SHPT_ARCZ 13
219#define SHPT_POLYGONZ 15
220#define SHPT_MULTIPOINTZ 18
221#define SHPT_POINTM 21
222#define SHPT_ARCM 23
223#define SHPT_POLYGONM 25
224#define SHPT_MULTIPOINTM 28
225#define SHPT_MULTIPATCH 31
226
227/* -------------------------------------------------------------------- */
228/* Part types - everything but SHPT_MULTIPATCH just uses */
229/* SHPP_RING. */
230/* -------------------------------------------------------------------- */
231
232#define SHPP_TRISTRIP 0
233#define SHPP_TRIFAN 1
234#define SHPP_OUTERRING 2
235#define SHPP_INNERRING 3
236#define SHPP_FIRSTRING 4
237#define SHPP_RING 5
238
239/* -------------------------------------------------------------------- */
240/* SHPObject - represents on shape (without attributes) read */
241/* from the .shp file. */
242/* -------------------------------------------------------------------- */
245
246 int nShapeId; /* -1 is unknown/unassigned */
247
251
253 double *padfX;
254 double *padfY;
255 double *padfZ;
256 double *padfM;
257
258 double dfXMin;
259 double dfYMin;
260 double dfZMin;
261 double dfMMin;
262
263 double dfXMax;
264 double dfYMax;
265 double dfZMax;
266 double dfMMax;
267
270};
271
272/* -------------------------------------------------------------------- */
273/* SHP API Prototypes */
274/* -------------------------------------------------------------------- */
275
276/* If pszAccess is read-only, the fpSHX field of the returned structure */
277/* will be NULL as it is not necessary to keep the SHX file open */
278SHPHandle SHPAPI_CALL SHPOpen(const char *pszShapeFile, const char *pszAccess);
279SHPHandle SHPAPI_CALL SHPOpenLL(const char *pszShapeFile, const char *pszAccess,
280 SAHooks *psHooks);
281SHPHandle SHPAPI_CALL SHPOpenLLEx(const char *pszShapeFile,
282 const char *pszAccess, SAHooks *psHooks,
283 int bRestoreSHX);
284
285int SHPAPI_CALL SHPRestoreSHX(const char *pszShapeFile, const char *pszAccess,
286 SAHooks *psHooks);
287
288/* If setting bFastMode = TRUE, the content of SHPReadObject() is owned by the
289 * SHPHandle. */
290/* So you cannot have 2 valid instances of SHPReadObject() simultaneously. */
291/* The SHPObject padfZ and padfM members may be NULL depending on the geometry
292 */
293/* type. It is illegal to free at hand any of the pointer members of the
294 * SHPObject structure */
295void SHPAPI_CALL SHPSetFastModeReadObject(SHPHandle hSHP, int bFastMode);
296
297SHPHandle SHPAPI_CALL SHPCreate(const char *pszShapeFile, int nShapeType);
298SHPHandle SHPAPI_CALL SHPCreateLL(const char *pszShapeFile, int nShapeType,
299 SAHooks *psHooks);
300void SHPAPI_CALL SHPGetInfo(SHPHandle hSHP, int *pnEntities, int *pnShapeType,
301 double *padfMinBound, double *padfMaxBound);
302
303SHPObject SHPAPI_CALL1(*) SHPReadObject(SHPHandle hSHP, int iShape);
304int SHPAPI_CALL SHPWriteObject(SHPHandle hSHP, int iShape, SHPObject *psObject);
305
309 SHPCreateObject(int nSHPType, int nShapeId, int nParts,
310 const int *panPartStart, const int *panPartType,
311 int nVertices, const double *padfX, const double *padfY,
312 const double *padfZ, const double *padfM);
314 SHPCreateSimpleObject(int nSHPType, int nVertices, const double *padfX,
315 const double *padfY, const double *padfZ);
316
318
321
322const char SHPAPI_CALL1(*) SHPTypeName(int nSHPType);
323const char SHPAPI_CALL1(*) SHPPartTypeName(int nPartType);
324
325/* -------------------------------------------------------------------- */
326/* Shape quadtree indexing API. */
327/* -------------------------------------------------------------------- */
328
329/* this can be two or four for binary or quad tree */
330#define MAX_SUBNODE 4
331
332/* upper limit of tree levels for automatic estimation */
333#define MAX_DEFAULT_TREE_DEPTH 12
334
335typedef struct shape_tree_node {
336 /* region covered by this node */
337 double adfBoundsMin[4];
338 double adfBoundsMax[4];
339
340 /* list of shapes stored at this node. The papsShapeObj pointers
341 or the whole list can be NULL */
345
348
350
360
362 SHPCreateTree(SHPHandle hSHP, int nDimension, int nMaxDepth,
363 double *padfBoundsMin, double *padfBoundsMax);
364void SHPAPI_CALL SHPDestroyTree(SHPTree *hTree);
365
366int SHPAPI_CALL SHPWriteTree(SHPTree *hTree, const char *pszFilename);
367
370
372
374 SHPTreeFindLikelyShapes(SHPTree *hTree, double *padfBoundsMin,
375 double *padfBoundsMax, int *);
376int SHPAPI_CALL SHPCheckBoundsOverlap(double *, double *, double *, double *,
377 int);
378
379int SHPAPI_CALL1(*) SHPSearchDiskTree(FILE *fp, double *padfBoundsMin,
380 double *padfBoundsMax, int *pnShapeCount);
381
382typedef struct SHPDiskTreeInfo *SHPTreeDiskHandle;
383
384SHPTreeDiskHandle SHPAPI_CALL SHPOpenDiskTree(const char *pszQIXFilename,
385 SAHooks *psHooks);
386
387void SHPAPI_CALL SHPCloseDiskTree(SHPTreeDiskHandle hDiskTree);
388
390 SHPSearchDiskTreeEx(SHPTreeDiskHandle hDiskTree, double *padfBoundsMin,
391 double *padfBoundsMax, int *pnShapeCount);
392
393int SHPAPI_CALL SHPWriteTreeLL(SHPTree *hTree, const char *pszFilename,
394 SAHooks *psHooks);
395
396/* -------------------------------------------------------------------- */
397/* SBN Search API */
398/* -------------------------------------------------------------------- */
399
400typedef struct SBNSearchInfo *SBNSearchHandle;
401
402SBNSearchHandle SHPAPI_CALL SBNOpenDiskTree(const char *pszSBNFilename,
403 SAHooks *psHooks);
404
406
408 SBNSearchDiskTree(SBNSearchHandle hSBN, double *padfBoundsMin,
409 double *padfBoundsMax, int *pnShapeCount);
410
411int SHPAPI_CALL1(*)
412 SBNSearchDiskTreeInteger(SBNSearchHandle hSBN, int bMinX, int bMinY,
413 int bMaxX, int bMaxY, int *pnShapeCount);
414
415void SHPAPI_CALL SBNSearchFreeIds(int *panShapeId);
416
417/************************************************************************/
418/* DBF Support. */
419/************************************************************************/
420typedef struct {
422
424
426
427 int nRecordLength; /* Must fit on uint16 */
428 int nHeaderLength; /* File header length (32) + field
429 descriptor length + spare space.
430 Must fit on uint16 */
436
437 char *pszHeader; /* Field descriptors */
438
442
445
448
449 union {
452 } fieldValue;
453
456
457 int nUpdateYearSince1900; /* 0-255 */
458 int nUpdateMonth; /* 1-12 */
459 int nUpdateDay; /* 1-31 */
460
461 int bWriteEndOfFileChar; /* defaults to TRUE */
462
464} DBFInfo;
465
467
476
477/* Field descriptor/header size */
478#define XBASE_FLDHDR_SZ 32
479/* Shapelib read up to 11 characters, even if only 10 should normally be used */
480#define XBASE_FLDNAME_LEN_READ 11
481/* On writing, we limit to 10 characters */
482#define XBASE_FLDNAME_LEN_WRITE 10
483/* Normally only 254 characters should be used. We tolerate 255 historically */
484#define XBASE_FLD_MAX_WIDTH 255
485
486DBFHandle SHPAPI_CALL DBFOpen(const char *pszDBFFile, const char *pszAccess);
487DBFHandle SHPAPI_CALL DBFOpenLL(const char *pszDBFFile, const char *pszAccess,
488 SAHooks *psHooks);
489DBFHandle SHPAPI_CALL DBFCreate(const char *pszDBFFile);
490DBFHandle SHPAPI_CALL DBFCreateEx(const char *pszDBFFile,
491 const char *pszCodePage);
492DBFHandle SHPAPI_CALL DBFCreateLL(const char *pszDBFFile,
493 const char *pszCodePage, SAHooks *psHooks);
494
497int SHPAPI_CALL DBFAddField(DBFHandle hDBF, const char *pszFieldName,
498 DBFFieldType eType, int nWidth, int nDecimals);
499
500int SHPAPI_CALL DBFAddNativeFieldType(DBFHandle hDBF, const char *pszFieldName,
501 char chType, int nWidth, int nDecimals);
502
504
505int SHPAPI_CALL DBFReorderFields(DBFHandle psDBF, int *panMap);
506
507int SHPAPI_CALL DBFAlterFieldDefn(DBFHandle psDBF, int iField,
508 const char *pszFieldName, char chType,
509 int nWidth, int nDecimals);
510
512 char *pszFieldName, int *pnWidth,
513 int *pnDecimals);
514
515int SHPAPI_CALL DBFGetFieldIndex(DBFHandle psDBF, const char *pszFieldName);
516
517int SHPAPI_CALL DBFReadIntegerAttribute(DBFHandle hDBF, int iShape, int iField);
518double SHPAPI_CALL DBFReadDoubleAttribute(DBFHandle hDBF, int iShape,
519 int iField);
520const char SHPAPI_CALL1(*)
521 DBFReadStringAttribute(DBFHandle hDBF, int iShape, int iField);
522const char SHPAPI_CALL1(*)
523 DBFReadLogicalAttribute(DBFHandle hDBF, int iShape, int iField);
524int SHPAPI_CALL DBFIsAttributeNULL(DBFHandle hDBF, int iShape, int iField);
525
526int SHPAPI_CALL DBFWriteIntegerAttribute(DBFHandle hDBF, int iShape, int iField,
527 int nFieldValue);
528int SHPAPI_CALL DBFWriteDoubleAttribute(DBFHandle hDBF, int iShape, int iField,
529 double dFieldValue);
530int SHPAPI_CALL DBFWriteStringAttribute(DBFHandle hDBF, int iShape, int iField,
531 const char *pszFieldValue);
532int SHPAPI_CALL DBFWriteNULLAttribute(DBFHandle hDBF, int iShape, int iField);
533
534int SHPAPI_CALL DBFWriteLogicalAttribute(DBFHandle hDBF, int iShape, int iField,
535 const char lFieldValue);
536int SHPAPI_CALL DBFWriteAttributeDirectly(DBFHandle psDBF, int hEntity,
537 int iField, void *pValue);
538const char SHPAPI_CALL1(*) DBFReadTuple(DBFHandle psDBF, int hEntity);
539int SHPAPI_CALL DBFWriteTuple(DBFHandle psDBF, int hEntity, void *pRawTuple);
540
541int SHPAPI_CALL DBFIsRecordDeleted(DBFHandle psDBF, int iShape);
542int SHPAPI_CALL DBFMarkRecordDeleted(DBFHandle psDBF, int iShape,
543 int bIsDeleted);
544
545DBFHandle SHPAPI_CALL DBFCloneEmpty(DBFHandle psDBF, const char *pszFilename);
546
549char SHPAPI_CALL DBFGetNativeFieldType(DBFHandle hDBF, int iField);
550
551const char SHPAPI_CALL1(*) DBFGetCodePage(DBFHandle psDBF);
552
553void SHPAPI_CALL DBFSetLastModifiedDate(DBFHandle psDBF, int nYYSince1900,
554 int nMM, int nDD);
555
556void SHPAPI_CALL DBFSetWriteEndOfFileChar(DBFHandle psDBF, int bWriteFlag);
557
558#ifdef __cplusplus
559}
560#endif
561
562#endif /* ndef SHAPEFILE_H_INCLUDED */
const char SHPAPI_CALL1 * DBFReadLogicalAttribute(DBFHandle psDBF, int iRecord, int iField){ return STATIC_CAST(const char *, DBFReadAttribute(psDBF, iRecord, iField, 'L')
int SHPAPI_CALL DBFMarkRecordDeleted(DBFHandle psDBF, int iShape, int bIsDeleted)
Definition dbfopen.c:1692
int SHPAPI_CALL DBFWriteDoubleAttribute(DBFHandle psDBF, int iRecord, int iField, double dValue)
Definition dbfopen.c:1436
const char SHPAPI_CALL1 * DBFReadStringAttribute(DBFHandle psDBF, int iRecord, int iField){ return STATIC_CAST(const char *, DBFReadAttribute(psDBF, iRecord, iField, 'C')
DBFHandle SHPAPI_CALL DBFCloneEmpty(DBFHandle psDBF, const char *pszFilename)
Definition dbfopen.c:1574
int SHPAPI_CALL DBFWriteIntegerAttribute(DBFHandle psDBF, int iRecord, int iField, int nValue)
Definition dbfopen.c:1449
const char SHPAPI_CALL1 * DBFGetCodePage(DBFHandle psDBF){ if(psDBF==SHPLIB_NULLPTR) return SHPLIB_NULLPTR;return psDBF->pszCodePage;}int SHPAPI_CALL DBFDeleteField(DBFHandle psDBF, int iField
Definition dbfopen.c:1730
int SHPAPI_CALL DBFWriteStringAttribute(DBFHandle psDBF, int iRecord, int iField, const char *pszValue)
Definition dbfopen.c:1464
void SHPAPI_CALL DBFClose(DBFHandle psDBF)
Definition dbfopen.c:572
void SHPAPI_CALL DBFSetLastModifiedDate(DBFHandle psDBF, int nYYSince1900, int nMM, int nDD)
Definition dbfopen.c:332
void SHPAPI_CALL DBFSetWriteEndOfFileChar(DBFHandle psDBF, int bWriteFlag)
Definition dbfopen.c:2228
int SHPAPI_CALL DBFWriteNULLAttribute(DBFHandle psDBF, int iRecord, int iField)
Definition dbfopen.c:1479
int SHPAPI_CALL DBFIsAttributeNULL(DBFHandle psDBF, int iRecord, int iField)
Definition dbfopen.c:1158
int SHPAPI_CALL DBFWriteTuple(DBFHandle psDBF, int hEntity, void *pRawTuple)
Definition dbfopen.c:1506
int SHPAPI_CALL DBFWriteAttributeDirectly(DBFHandle psDBF, int hEntity, int iField, void *pValue)
Definition dbfopen.c:1372
int SHPAPI_CALL DBFIsRecordDeleted(DBFHandle psDBF, int iShape)
Definition dbfopen.c:1668
int SHPAPI_CALL DBFWriteLogicalAttribute(DBFHandle psDBF, int iRecord, int iField, const char lValue)
Definition dbfopen.c:1491
const char SHPAPI_CALL1 * DBFReadTuple(DBFHandle psDBF, int hEntity){ if(hEntity< 0||hEntity >=psDBF->nRecords) return SHPLIB_NULLPTR;if(!DBFLoadRecord(psDBF, hEntity)) return SHPLIB_NULLPTR;return STATIC_CAST(const char *, psDBF->pszCurrentRecord
char SHPAPI_CALL DBFGetNativeFieldType(DBFHandle psDBF, int iField)
Definition dbfopen.c:1632
void SHPAPI_CALL DBFUpdateHeader(DBFHandle psDBF)
Definition dbfopen.c:298
#define file
SHPHandle SHPAPI_CALL SHPCreate(const char *pszShapeFile, int nShapeType)
Definition shpopen.c:944
DBFFieldType
Definition shapefil.h:468
@ FTDouble
Definition shapefil.h:471
@ FTString
Definition shapefil.h:469
@ FTInvalid
Definition shapefil.h:474
@ FTLogical
Definition shapefil.h:472
@ FTDate
Definition shapefil.h:473
@ FTInteger
Definition shapefil.h:470
void SHPAPI_CALL SHPCloseDiskTree(SHPTreeDiskHandle hDiskTree)
DBFHandle SHPAPI_CALL DBFOpenLL(const char *pszDBFFile, const char *pszAccess, SAHooks *psHooks)
Definition dbfopen.c:378
int SHPAPI_CALL DBFGetFieldCount(DBFHandle psDBF)
Definition dbfopen.c:1174
int SHPAPI_CALL DBFAlterFieldDefn(DBFHandle psDBF, int iField, const char *pszFieldName, char chType, int nWidth, int nDecimals)
Definition dbfopen.c:1989
int SHPAPI_CALL SHPTreeRemoveShapeId(SHPTree *hTree, int nShapeId)
struct shape_tree_node SHPTreeNode
int SHPAPI_CALL DBFDeleteField(DBFHandle hDBF, int iField)
int SHPAPI_CALL1 * SHPSearchDiskTree(FILE *fp, double *padfBoundsMin, double *padfBoundsMax, int *pnShapeCount);typedef struct SHPDiskTreeInfo *SHPTreeDiskHandle;SHPTreeDiskHandle SHPAPI_CALL SHPOpenDiskTree(const char *pszQIXFilename, SAHooks *psHooks
#define MAX_SUBNODE
Definition shapefil.h:330
int SHPAPI_CALL1 * SHPSearchDiskTreeEx(SHPTreeDiskHandle hDiskTree, double *padfBoundsMin, double *padfBoundsMax, int *pnShapeCount);int SHPAPI_CALL SHPWriteTreeLL(SHPTree *hTree, const char *pszFilename, SAHooks *psHooks
DBFHandle SHPAPI_CALL DBFOpen(const char *pszDBFFile, const char *pszAccess)
Definition dbfopen.c:346
int SHPAPI_CALL SHPWriteTree(SHPTree *hTree, const char *pszFilename)
int SHPAPI_CALL1 * SBNSearchDiskTree(SBNSearchHandle hSBN, double *padfBoundsMin, double *padfBoundsMax, int *pnShapeCount);int SHPAPI_CALL1(*) SBNSearchDiskTreeInteger(SBNSearchHandle hSBN, int bMinX, int bMinY, int bMaxX, int bMaxY, int *pnShapeCount
int SHPAPI_CALL DBFReadIntegerAttribute(DBFHandle hDBF, int iShape, int iField)
Definition dbfopen.c:1050
int SHPAPI_CALL DBFAddNativeFieldType(DBFHandle hDBF, const char *pszFieldName, char chType, int nWidth, int nDecimals)
Definition dbfopen.c:792
void SHPAPI_CALL SHPSetFastModeReadObject(SHPHandle hSHP, int bFastMode)
Definition shpopen.c:898
void SHPAPI_CALL SHPClose(SHPHandle hSHP)
Definition shpopen.c:852
void SHPAPI_CALL SHPDestroyObject(SHPObject *psObject)
Definition shpopen.c:2611
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 SHPAPI_CALL1(*) SHPCreateSimpleObject(int nSHPType, int nVertices, const double *padfX, const double *padfY, const double *padfZ
int SHPAPI_CALL1 * SHPTreeFindLikelyShapes(SHPTree *hTree, double *padfBoundsMin, double *padfBoundsMax, int *);int SHPAPI_CALL SHPCheckBoundsOverlap(double *, double *, double *, double *, int
void SHPAPI_CALL SHPComputeExtents(SHPObject *psObject)
Definition shpopen.c:1117
DBFInfo * DBFHandle
Definition shapefil.h:466
SHPHandle SHPAPI_CALL SHPCreateLL(const char *pszShapeFile, int nShapeType, SAHooks *psHooks)
Definition shpopen.c:960
int SHPAPI_CALL DBFGetFieldIndex(DBFHandle psDBF, const char *pszFieldName)
Definition dbfopen.c:1649
void SHPAPI_CALL SHPTreeTrimExtraNodes(SHPTree *hTree)
int SHPAPI_CALL DBFGetRecordCount(DBFHandle psDBF)
Definition dbfopen.c:1186
SHPHandle SHPAPI_CALL SHPOpen(const char *pszShapeFile, const char *pszAccess)
Definition shpopen.c:289
SHPInfo * SHPHandle
Definition shapefil.h:207
int * SAFile
Definition shapefil.h:148
void SHPAPI_CALL SHPGetInfo(SHPHandle hSHP, int *pnEntities, int *pnShapeType, double *padfMinBound, double *padfMaxBound)
Definition shpopen.c:917
SBNSearchHandle SHPAPI_CALL SBNOpenDiskTree(const char *pszSBNFilename, SAHooks *psHooks)
SHPObject SHPAPI_CALL1 * SHPReadObject(SHPHandle hSHP, int iShape);int SHPAPI_CALL SHPWriteObject(SHPHandle hSHP, int iShape, SHPObject *psObject
Definition shpopen.c:1761
int SHPAPI_CALL DBFAddField(DBFHandle hDBF, const char *pszFieldName, DBFFieldType eType, int nWidth, int nDecimals)
Definition dbfopen.c:748
DBFHandle SHPAPI_CALL DBFCreateEx(const char *pszDBFFile, const char *pszCodePage)
Definition dbfopen.c:631
SHPTree SHPAPI_CALL1 * SHPCreateTree(SHPHandle hSHP, int nDimension, int nMaxDepth, double *padfBoundsMin, double *padfBoundsMax);void SHPAPI_CALL SHPDestroyTree(SHPTree *hTree
#define SHPAPI_CALL
Definition shapefil.h:108
DBFHandle SHPAPI_CALL DBFCreate(const char *pszDBFFile)
Definition dbfopen.c:620
#define SHPAPI_CALL1(x)
Definition shapefil.h:113
int SHPAPI_CALL SHPTreeAddShapeId(SHPTree *hTree, SHPObject *psObject)
struct SBNSearchInfo * SBNSearchHandle
Definition shapefil.h:400
void SHPAPI_CALL SBNSearchFreeIds(int *panShapeId)
struct tagSHPObject SHPObject
Definition shapefil.h:176
const char SHPAPI_CALL1 * SHPTypeName(int nSHPType);const char SHPAPI_CALL1(*) SHPPartTypeName(int nPartType
Definition shpopen.c:2527
SHPHandle SHPAPI_CALL SHPOpenLLEx(const char *pszShapeFile, const char *pszAccess, SAHooks *psHooks, int bRestoreSHX)
Definition shpopen.c:659
SHPHandle SHPAPI_CALL SHPOpenLL(const char *pszShapeFile, const char *pszAccess, SAHooks *psHooks)
Definition shpopen.c:321
void SHPAPI_CALL SBNCloseDiskTree(SBNSearchHandle hSBN)
DBFHandle SHPAPI_CALL DBFCreateLL(const char *pszDBFFile, const char *pszCodePage, SAHooks *psHooks)
Definition dbfopen.c:647
int SHPAPI_CALL SHPRewindObject(SHPHandle hSHP, SHPObject *psObject)
int SHPAPI_CALL DBFReorderFields(DBFHandle psDBF, int *panMap)
Definition dbfopen.c:1869
void SHPAPI_CALL SHPWriteHeader(SHPHandle hSHP)
Definition shpopen.c:142
unsigned long SAOffset
Definition shapefil.h:151
void SHPAPI_CALL SASetupDefaultHooks(SAHooks *psHooks)
Definition safileio.c:183
int SHPAPI_CALL SHPRestoreSHX(const char *pszShapeFile, const char *pszAccess, SAHooks *psHooks)
Definition shpopen.c:680
double SHPAPI_CALL DBFReadDoubleAttribute(DBFHandle hDBF, int iShape, int iField)
Definition dbfopen.c:1068
DBFFieldType SHPAPI_CALL DBFGetFieldInfo(DBFHandle psDBF, int iField, char *pszFieldName, int *pnWidth, int *pnDecimals)
Definition dbfopen.c:1200
psObject nShapeId
Definition shpopen.c:1158
psObject nVertices
Definition shpopen.c:1247
psObject nSHPType
Definition shpopen.c:1157
const char SHPAPI_CALL1 * SHPPartTypeName(int nPartType){ switch(nPartType
Definition shpopen.c:2581
SHPObject SHPAPI_CALL1 * SHPCreateSimpleObject(int nSHPType, int nVertices, const double *padfX, const double *padfY, const double *padfZ){ return(SHPCreateObject(nSHPType, -1, 0, SHPLIB_NULLPTR, SHPLIB_NULLPTR, nVertices, padfX, padfY, padfZ, SHPLIB_NULLPTR)
int SHPAPI_CALL SHPWriteObject(SHPHandle psSHP, int nShapeId, SHPObject *psObject)
Definition shpopen.c:1275
int nUpdateDay
Definition shapefil.h:459
int bWriteEndOfFileChar
Definition shapefil.h:461
int nRecordLength
Definition shapefil.h:427
int * panFieldOffset
Definition shapefil.h:432
int * panFieldDecimals
Definition shapefil.h:434
char * pszCodePage
Definition shapefil.h:455
int nUpdateMonth
Definition shapefil.h:458
int nFields
Definition shapefil.h:431
int bUpdated
Definition shapefil.h:447
int nHeaderLength
Definition shapefil.h:428
int * panFieldSize
Definition shapefil.h:433
char * pszCurrentRecord
Definition shapefil.h:441
int bCurrentRecordModified
Definition shapefil.h:440
char * pszHeader
Definition shapefil.h:437
int nUpdateYearSince1900
Definition shapefil.h:457
SAFile fp
Definition shapefil.h:423
char * pachFieldType
Definition shapefil.h:435
int bRequireNextWriteSeek
Definition shapefil.h:463
int nWorkFieldLength
Definition shapefil.h:443
SAHooks sHooks
Definition shapefil.h:421
int bNoHeader
Definition shapefil.h:446
int iLanguageDriver
Definition shapefil.h:454
int nRecords
Definition shapefil.h:425
char * pszWorkField
Definition shapefil.h:444
double dfDoubleField
Definition shapefil.h:450
int nIntField
Definition shapefil.h:451
int nCurrentRecord
Definition shapefil.h:439
void(* Error)(const char *message)
Definition shapefil.h:164
SAFile(* FOpen)(const char *filename, const char *access)
Definition shapefil.h:155
SAOffset(* FTell)(SAFile file)
Definition shapefil.h:159
int(* FFlush)(SAFile file)
Definition shapefil.h:160
SAOffset(* FWrite)(void *p, SAOffset size, SAOffset nmemb, SAFile file)
Definition shapefil.h:157
double(* Atof)(const char *str)
Definition shapefil.h:165
int(* Remove)(const char *filename)
Definition shapefil.h:162
int(* FClose)(SAFile file)
Definition shapefil.h:161
SAOffset(* FRead)(void *p, SAOffset size, SAOffset nmemb, SAFile file)
Definition shapefil.h:156
SAOffset(* FSeek)(SAFile file, SAOffset offset, int whence)
Definition shapefil.h:158
SAFile fpSHX
Definition shapefil.h:182
int nShapeType
Definition shapefil.h:184
SAFile fpSHP
Definition shapefil.h:181
int nMaxRecords
Definition shapefil.h:189
SHPObject * psCachedObject
Definition shapefil.h:204
int nBufSize
Definition shapefil.h:199
unsigned int * panRecSize
Definition shapefil.h:191
SAHooks sHooks
Definition shapefil.h:179
double adBoundsMin[4]
Definition shapefil.h:193
int nRecords
Definition shapefil.h:188
unsigned char * pabyObjectBuf
Definition shapefil.h:202
int bUpdated
Definition shapefil.h:196
int nObjectBufSize
Definition shapefil.h:203
unsigned int nFileSize
Definition shapefil.h:186
unsigned int * panRecOffset
Definition shapefil.h:190
int bFastModeReadObject
Definition shapefil.h:201
unsigned char * pabyRec
Definition shapefil.h:198
double adBoundsMax[4]
Definition shapefil.h:194
SHPTreeNode * psRoot
Definition shapefil.h:358
SHPHandle hSHP
Definition shapefil.h:352
int nDimension
Definition shapefil.h:355
int nMaxDepth
Definition shapefil.h:354
int nTotalCount
Definition shapefil.h:356
SHPObject ** papsShapeObj
Definition shapefil.h:344
int * panShapeIds
Definition shapefil.h:343
struct shape_tree_node * apsSubNode[MAX_SUBNODE]
Definition shapefil.h:347
double adfBoundsMax[4]
Definition shapefil.h:338
double adfBoundsMin[4]
Definition shapefil.h:337
int bFastModeReadObject
Definition shapefil.h:269
double dfYMax
Definition shapefil.h:264
double * padfX
Definition shapefil.h:253
double dfXMin
Definition shapefil.h:258
int * panPartType
Definition shapefil.h:250
double dfYMin
Definition shapefil.h:259
double * padfY
Definition shapefil.h:254
double dfMMax
Definition shapefil.h:266
double * padfZ
Definition shapefil.h:255
double dfZMax
Definition shapefil.h:265
double dfXMax
Definition shapefil.h:263
int * panPartStart
Definition shapefil.h:249
double * padfM
Definition shapefil.h:256
double dfMMin
Definition shapefil.h:261
double dfZMin
Definition shapefil.h:260
int bMeasureIsUsed
Definition shapefil.h:268