00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef GEOS_C_H_INCLUDED
00033 #define GEOS_C_H_INCLUDED
00034
00035 #ifndef __cplusplus
00036 # include <stddef.h>
00037 #else
00038 # include <cstddef>
00039 using std::size_t;
00040 #endif
00041
00042 #ifdef __cplusplus
00043 extern "C" {
00044 #endif
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057 #if defined(_MSC_VER)
00058 #include <geos/version.h>
00059 #define GEOS_CAPI_VERSION_MAJOR 1
00060 #define GEOS_CAPI_VERSION_MINOR 8
00061 #define GEOS_CAPI_VERSION_PATCH 2
00062 #define GEOS_CAPI_VERSION "3.4.2-CAPI-1.8.2"
00063 #else
00064 #ifndef GEOS_VERSION_MAJOR
00065 #define GEOS_VERSION_MAJOR 3
00066 #endif
00067 #ifndef GEOS_VERSION_MINOR
00068 #define GEOS_VERSION_MINOR 4
00069 #endif
00070 #ifndef GEOS_VERSION_PATCH
00071 #define GEOS_VERSION_PATCH 2
00072 #endif
00073 #ifndef GEOS_VERSION
00074 #define GEOS_VERSION "3.4.2"
00075 #endif
00076 #ifndef GEOS_JTS_PORT
00077 #define GEOS_JTS_PORT "1.12.0"
00078 #endif
00079
00080 #define GEOS_CAPI_VERSION_MAJOR 1
00081 #define GEOS_CAPI_VERSION_MINOR 8
00082 #define GEOS_CAPI_VERSION_PATCH 2
00083 #define GEOS_CAPI_VERSION "3.4.2-CAPI-1.8.2"
00084 #endif
00085
00086 #define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR
00087 #define GEOS_CAPI_LAST_INTERFACE (GEOS_CAPI_VERSION_MAJOR+GEOS_CAPI_VERSION_MINOR)
00088
00089
00090
00091
00092
00093
00094
00095 typedef void (*GEOSMessageHandler)(const char *fmt, ...);
00096
00097
00098
00099
00100
00101
00102
00103 #ifndef GEOSGeometry
00104 typedef struct GEOSGeom_t GEOSGeometry;
00105 typedef struct GEOSPrepGeom_t GEOSPreparedGeometry;
00106 typedef struct GEOSCoordSeq_t GEOSCoordSequence;
00107 typedef struct GEOSSTRtree_t GEOSSTRtree;
00108 typedef struct GEOSBufParams_t GEOSBufferParams;
00109 #endif
00110
00111
00112
00113
00114 typedef GEOSGeometry* GEOSGeom;
00115 typedef GEOSCoordSequence* GEOSCoordSeq;
00116
00117
00118
00119
00120
00121
00122 enum GEOSGeomTypes {
00123 GEOS_POINT,
00124 GEOS_LINESTRING,
00125 GEOS_LINEARRING,
00126 GEOS_POLYGON,
00127 GEOS_MULTIPOINT,
00128 GEOS_MULTILINESTRING,
00129 GEOS_MULTIPOLYGON,
00130 GEOS_GEOMETRYCOLLECTION
00131 };
00132
00133
00134 enum GEOSByteOrders {
00135 GEOS_WKB_XDR = 0,
00136 GEOS_WKB_NDR = 1
00137 };
00138
00139 typedef struct GEOSContextHandle_HS *GEOSContextHandle_t;
00140
00141 typedef void (*GEOSQueryCallback)(void *item, void *userdata);
00142
00143
00144
00145
00146
00147
00148
00149 #include <geos/export.h>
00150
00151 extern void GEOS_DLL initGEOS(GEOSMessageHandler notice_function,
00152 GEOSMessageHandler error_function);
00153 extern void GEOS_DLL finishGEOS(void);
00154
00155
00156
00157
00158
00159
00160
00161 typedef void (GEOSInterruptCallback)();
00162 extern GEOSInterruptCallback GEOS_DLL *GEOS_interruptRegisterCallback(GEOSInterruptCallback* cb);
00163
00164 extern void GEOS_DLL GEOS_interruptRequest();
00165
00166 extern void GEOS_DLL GEOS_interruptCancel();
00167
00168
00169 extern GEOSContextHandle_t GEOS_DLL initGEOS_r(
00170 GEOSMessageHandler notice_function,
00171 GEOSMessageHandler error_function);
00172 extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
00173
00174 extern GEOSMessageHandler GEOS_DLL GEOSContext_setNoticeHandler_r(GEOSContextHandle_t extHandle,
00175 GEOSMessageHandler nf);
00176 extern GEOSMessageHandler GEOS_DLL GEOSContext_setErrorHandler_r(GEOSContextHandle_t extHandle,
00177 GEOSMessageHandler ef);
00178
00179 extern const char GEOS_DLL *GEOSversion();
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(const char *wkt);
00190 extern char GEOS_DLL *GEOSGeomToWKT(const GEOSGeometry* g);
00191
00192 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT_r(GEOSContextHandle_t handle,
00193 const char *wkt);
00194 extern char GEOS_DLL *GEOSGeomToWKT_r(GEOSContextHandle_t handle,
00195 const GEOSGeometry* g);
00196
00197
00198
00199
00200
00201 extern int GEOS_DLL GEOS_getWKBOutputDims();
00202 extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims);
00203
00204 extern int GEOS_DLL GEOS_getWKBOutputDims_r(GEOSContextHandle_t handle);
00205 extern int GEOS_DLL GEOS_setWKBOutputDims_r(GEOSContextHandle_t handle,
00206 int newDims);
00207
00208
00209
00210
00211
00212 extern int GEOS_DLL GEOS_getWKBByteOrder();
00213 extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder);
00214
00215 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size);
00216 extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(const GEOSGeometry* g, size_t *size);
00217
00218 extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size);
00219 extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(const GEOSGeometry* g, size_t *size);
00220
00221 extern int GEOS_DLL GEOS_getWKBByteOrder_r(GEOSContextHandle_t handle);
00222 extern int GEOS_DLL GEOS_setWKBByteOrder_r(GEOSContextHandle_t handle,
00223 int byteOrder);
00224
00225 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf_r(GEOSContextHandle_t handle,
00226 const unsigned char *wkb,
00227 size_t size);
00228 extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(GEOSContextHandle_t handle,
00229 const GEOSGeometry* g,
00230 size_t *size);
00231
00232 extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf_r(GEOSContextHandle_t handle,
00233 const unsigned char *hex,
00234 size_t size);
00235 extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(GEOSContextHandle_t handle,
00236 const GEOSGeometry* g,
00237 size_t *size);
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims);
00251
00252 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create_r(
00253 GEOSContextHandle_t handle,
00254 unsigned int size,
00255 unsigned int dims);
00256
00257
00258
00259
00260
00261 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_clone(const GEOSCoordSequence* s);
00262
00263 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_clone_r(
00264 GEOSContextHandle_t handle,
00265 const GEOSCoordSequence* s);
00266
00267
00268
00269
00270 extern void GEOS_DLL GEOSCoordSeq_destroy(GEOSCoordSequence* s);
00271
00272 extern void GEOS_DLL GEOSCoordSeq_destroy_r(GEOSContextHandle_t handle,
00273 GEOSCoordSequence* s);
00274
00275
00276
00277
00278
00279 extern int GEOS_DLL GEOSCoordSeq_setX(GEOSCoordSequence* s,
00280 unsigned int idx, double val);
00281 extern int GEOS_DLL GEOSCoordSeq_setY(GEOSCoordSequence* s,
00282 unsigned int idx, double val);
00283 extern int GEOS_DLL GEOSCoordSeq_setZ(GEOSCoordSequence* s,
00284 unsigned int idx, double val);
00285 extern int GEOS_DLL GEOSCoordSeq_setOrdinate(GEOSCoordSequence* s,
00286 unsigned int idx, unsigned int dim, double val);
00287
00288 extern int GEOS_DLL GEOSCoordSeq_setX_r(GEOSContextHandle_t handle,
00289 GEOSCoordSequence* s, unsigned int idx,
00290 double val);
00291 extern int GEOS_DLL GEOSCoordSeq_setY_r(GEOSContextHandle_t handle,
00292 GEOSCoordSequence* s, unsigned int idx,
00293 double val);
00294 extern int GEOS_DLL GEOSCoordSeq_setZ_r(GEOSContextHandle_t handle,
00295 GEOSCoordSequence* s, unsigned int idx,
00296 double val);
00297 extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(GEOSContextHandle_t handle,
00298 GEOSCoordSequence* s,
00299 unsigned int idx,
00300 unsigned int dim, double val);
00301
00302
00303
00304
00305
00306 extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
00307 unsigned int idx, double *val);
00308 extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
00309 unsigned int idx, double *val);
00310 extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s,
00311 unsigned int idx, double *val);
00312 extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
00313 unsigned int idx, unsigned int dim, double *val);
00314
00315 extern int GEOS_DLL GEOSCoordSeq_getX_r(GEOSContextHandle_t handle,
00316 const GEOSCoordSequence* s,
00317 unsigned int idx, double *val);
00318 extern int GEOS_DLL GEOSCoordSeq_getY_r(GEOSContextHandle_t handle,
00319 const GEOSCoordSequence* s,
00320 unsigned int idx, double *val);
00321 extern int GEOS_DLL GEOSCoordSeq_getZ_r(GEOSContextHandle_t handle,
00322 const GEOSCoordSequence* s,
00323 unsigned int idx, double *val);
00324 extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(GEOSContextHandle_t handle,
00325 const GEOSCoordSequence* s,
00326 unsigned int idx,
00327 unsigned int dim, double *val);
00328
00329
00330
00331
00332 extern int GEOS_DLL GEOSCoordSeq_getSize(const GEOSCoordSequence* s,
00333 unsigned int *size);
00334 extern int GEOS_DLL GEOSCoordSeq_getDimensions(const GEOSCoordSequence* s,
00335 unsigned int *dims);
00336
00337 extern int GEOS_DLL GEOSCoordSeq_getSize_r(GEOSContextHandle_t handle,
00338 const GEOSCoordSequence* s,
00339 unsigned int *size);
00340 extern int GEOS_DLL GEOSCoordSeq_getDimensions_r(GEOSContextHandle_t handle,
00341 const GEOSCoordSequence* s,
00342 unsigned int *dims);
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358 extern double GEOS_DLL GEOSProject(const GEOSGeometry *g,
00359 const GEOSGeometry* p);
00360 extern double GEOS_DLL GEOSProject_r(GEOSContextHandle_t handle,
00361 const GEOSGeometry *g,
00362 const GEOSGeometry *p);
00363
00364
00365
00366 extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry *g,
00367 double d);
00368 extern GEOSGeometry GEOS_DLL *GEOSInterpolate_r(GEOSContextHandle_t handle,
00369 const GEOSGeometry *g,
00370 double d);
00371
00372 extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry *g,
00373 const GEOSGeometry* p);
00374 extern double GEOS_DLL GEOSProjectNormalized_r(GEOSContextHandle_t handle,
00375 const GEOSGeometry *g,
00376 const GEOSGeometry *p);
00377
00378 extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized(const GEOSGeometry *g,
00379 double d);
00380 extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized_r(
00381 GEOSContextHandle_t handle,
00382 const GEOSGeometry *g,
00383 double d);
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393 extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g,
00394 double width, int quadsegs);
00395 extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(GEOSContextHandle_t handle,
00396 const GEOSGeometry* g,
00397 double width, int quadsegs);
00398
00399 enum GEOSBufCapStyles {
00400 GEOSBUF_CAP_ROUND=1,
00401 GEOSBUF_CAP_FLAT=2,
00402 GEOSBUF_CAP_SQUARE=3
00403 };
00404
00405 enum GEOSBufJoinStyles {
00406 GEOSBUF_JOIN_ROUND=1,
00407 GEOSBUF_JOIN_MITRE=2,
00408 GEOSBUF_JOIN_BEVEL=3
00409 };
00410
00411
00412 extern GEOSBufferParams GEOS_DLL *GEOSBufferParams_create();
00413 extern GEOSBufferParams GEOS_DLL *GEOSBufferParams_create_r(
00414 GEOSContextHandle_t handle);
00415 extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
00416 extern void GEOS_DLL GEOSBufferParams_destroy_r(
00417 GEOSContextHandle_t handle,
00418 GEOSBufferParams* parms);
00419
00420
00421 extern int GEOS_DLL GEOSBufferParams_setEndCapStyle(
00422 GEOSBufferParams* p,
00423 int style);
00424 extern int GEOS_DLL GEOSBufferParams_setEndCapStyle_r(
00425 GEOSContextHandle_t handle,
00426 GEOSBufferParams* p,
00427 int style);
00428
00429
00430 extern int GEOS_DLL GEOSBufferParams_setJoinStyle(
00431 GEOSBufferParams* p,
00432 int joinStyle);
00433 extern int GEOS_DLL GEOSBufferParams_setJoinStyle_r(
00434 GEOSContextHandle_t handle,
00435 GEOSBufferParams* p,
00436 int joinStyle);
00437
00438
00439 extern int GEOS_DLL GEOSBufferParams_setMitreLimit(
00440 GEOSBufferParams* p,
00441 double mitreLimit);
00442 extern int GEOS_DLL GEOSBufferParams_setMitreLimit_r(
00443 GEOSContextHandle_t handle,
00444 GEOSBufferParams* p,
00445 double mitreLimit);
00446
00447
00448 extern int GEOS_DLL GEOSBufferParams_setQuadrantSegments(
00449 GEOSBufferParams* p,
00450 int quadSegs);
00451 extern int GEOS_DLL GEOSBufferParams_setQuadrantSegments_r(
00452 GEOSContextHandle_t handle,
00453 GEOSBufferParams* p,
00454 int quadSegs);
00455
00456
00457
00458 extern int GEOS_DLL GEOSBufferParams_setSingleSided(
00459 GEOSBufferParams* p,
00460 int singleSided);
00461 extern int GEOS_DLL GEOSBufferParams_setSingleSided_r(
00462 GEOSContextHandle_t handle,
00463 GEOSBufferParams* p,
00464 int singleSided);
00465
00466
00467 extern GEOSGeometry GEOS_DLL *GEOSBufferWithParams(
00468 const GEOSGeometry* g,
00469 const GEOSBufferParams* p,
00470 double width);
00471 extern GEOSGeometry GEOS_DLL *GEOSBufferWithParams_r(
00472 GEOSContextHandle_t handle,
00473 const GEOSGeometry* g,
00474 const GEOSBufferParams* p,
00475 double width);
00476
00477
00478 extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle(const GEOSGeometry* g,
00479 double width, int quadsegs, int endCapStyle, int joinStyle,
00480 double mitreLimit);
00481 extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle_r(GEOSContextHandle_t handle,
00482 const GEOSGeometry* g, double width, int quadsegs, int endCapStyle,
00483 int joinStyle, double mitreLimit);
00484
00485
00486
00487 extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer(const GEOSGeometry* g,
00488 double width, int quadsegs, int joinStyle, double mitreLimit,
00489 int leftSide);
00490 extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer_r(
00491 GEOSContextHandle_t handle,
00492 const GEOSGeometry* g, double width, int quadsegs,
00493 int joinStyle, double mitreLimit, int leftSide);
00494
00495
00496
00497
00498
00499
00500
00501
00502 extern GEOSGeometry GEOS_DLL *GEOSOffsetCurve(const GEOSGeometry* g,
00503 double width, int quadsegs, int joinStyle, double mitreLimit);
00504 extern GEOSGeometry GEOS_DLL *GEOSOffsetCurve_r(GEOSContextHandle_t handle,
00505 const GEOSGeometry* g, double width, int quadsegs,
00506 int joinStyle, double mitreLimit);
00507
00508
00509
00510
00511
00512
00513
00514
00515
00516
00517 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint(GEOSCoordSequence* s);
00518 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPoint();
00519 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing(GEOSCoordSequence* s);
00520 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLineString(GEOSCoordSequence* s);
00521 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyLineString();
00522
00523 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint_r(
00524 GEOSContextHandle_t handle,
00525 GEOSCoordSequence* s);
00526 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPoint_r(
00527 GEOSContextHandle_t handle);
00528 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing_r(
00529 GEOSContextHandle_t handle,
00530 GEOSCoordSequence* s);
00531 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLineString_r(
00532 GEOSContextHandle_t handle,
00533 GEOSCoordSequence* s);
00534 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyLineString_r(
00535 GEOSContextHandle_t handle);
00536
00537
00538
00539
00540
00541
00542 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPolygon();
00543 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPolygon(GEOSGeometry* shell,
00544 GEOSGeometry** holes, unsigned int nholes);
00545 extern GEOSGeometry GEOS_DLL *GEOSGeom_createCollection(int type,
00546 GEOSGeometry* *geoms, unsigned int ngeoms);
00547 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyCollection(int type);
00548
00549 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPolygon_r(
00550 GEOSContextHandle_t handle);
00551 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPolygon_r(
00552 GEOSContextHandle_t handle,
00553 GEOSGeometry* shell,
00554 GEOSGeometry** holes,
00555 unsigned int nholes);
00556 extern GEOSGeometry GEOS_DLL *GEOSGeom_createCollection_r(
00557 GEOSContextHandle_t handle, int type,
00558 GEOSGeometry* *geoms,
00559 unsigned int ngeoms);
00560 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyCollection_r(
00561 GEOSContextHandle_t handle, int type);
00562
00563 extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g);
00564
00565 extern GEOSGeometry GEOS_DLL *GEOSGeom_clone_r(GEOSContextHandle_t handle,
00566 const GEOSGeometry* g);
00567
00568
00569
00570
00571
00572
00573
00574 extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
00575
00576 extern void GEOS_DLL GEOSGeom_destroy_r(GEOSContextHandle_t handle,
00577 GEOSGeometry* g);
00578
00579
00580
00581
00582
00583
00584
00585 extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g);
00586 extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2);
00587 extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g);
00588 extern GEOSGeometry GEOS_DLL *GEOSDifference(const GEOSGeometry* g1, const GEOSGeometry* g2);
00589 extern GEOSGeometry GEOS_DLL *GEOSSymDifference(const GEOSGeometry* g1, const GEOSGeometry* g2);
00590 extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g);
00591 extern GEOSGeometry GEOS_DLL *GEOSUnion(const GEOSGeometry* g1, const GEOSGeometry* g2);
00592 extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(const GEOSGeometry* g);
00593
00594
00595 extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded(const GEOSGeometry* g);
00596 extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface(const GEOSGeometry* g);
00597 extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g);
00598 extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g);
00599
00600 extern GEOSGeometry GEOS_DLL *GEOSEnvelope_r(GEOSContextHandle_t handle,
00601 const GEOSGeometry* g);
00602 extern GEOSGeometry GEOS_DLL *GEOSIntersection_r(GEOSContextHandle_t handle,
00603 const GEOSGeometry* g1,
00604 const GEOSGeometry* g2);
00605 extern GEOSGeometry GEOS_DLL *GEOSConvexHull_r(GEOSContextHandle_t handle,
00606 const GEOSGeometry* g);
00607 extern GEOSGeometry GEOS_DLL *GEOSDifference_r(GEOSContextHandle_t handle,
00608 const GEOSGeometry* g1,
00609 const GEOSGeometry* g2);
00610 extern GEOSGeometry GEOS_DLL *GEOSSymDifference_r(GEOSContextHandle_t handle,
00611 const GEOSGeometry* g1,
00612 const GEOSGeometry* g2);
00613 extern GEOSGeometry GEOS_DLL *GEOSBoundary_r(GEOSContextHandle_t handle,
00614 const GEOSGeometry* g);
00615 extern GEOSGeometry GEOS_DLL *GEOSUnion_r(GEOSContextHandle_t handle,
00616 const GEOSGeometry* g1,
00617 const GEOSGeometry* g2);
00618 extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion_r(GEOSContextHandle_t handle,
00619 const GEOSGeometry* g);
00620 extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded_r(GEOSContextHandle_t handle,
00621 const GEOSGeometry* g);
00622 extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface_r(GEOSContextHandle_t handle,
00623 const GEOSGeometry* g);
00624 extern GEOSGeometry GEOS_DLL *GEOSGetCentroid_r(GEOSContextHandle_t handle,
00625 const GEOSGeometry* g);
00626 extern GEOSGeometry GEOS_DLL *GEOSNode_r(GEOSContextHandle_t handle,
00627 const GEOSGeometry* g);
00628
00629
00630
00631
00632
00633 extern GEOSGeometry GEOS_DLL *GEOSPolygonize(const GEOSGeometry * const geoms[], unsigned int ngeoms);
00634 extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges(const GEOSGeometry * const geoms[], unsigned int ngeoms);
00635
00636
00637
00638
00639
00640
00641
00642
00643
00644
00645
00646
00647
00648
00649
00650
00651
00652
00653
00654
00655
00656
00657
00658
00659
00660
00661
00662 extern GEOSGeometry GEOS_DLL *GEOSPolygonize_full(const GEOSGeometry* input,
00663 GEOSGeometry** cuts, GEOSGeometry** dangles, GEOSGeometry** invalid);
00664
00665 extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g);
00666 extern GEOSGeometry GEOS_DLL *GEOSSimplify(const GEOSGeometry* g, double tolerance);
00667 extern GEOSGeometry GEOS_DLL *GEOSTopologyPreserveSimplify(const GEOSGeometry* g,
00668 double tolerance);
00669
00670 extern GEOSGeometry GEOS_DLL *GEOSPolygonize_r(GEOSContextHandle_t handle,
00671 const GEOSGeometry *const geoms[],
00672 unsigned int ngeoms);
00673 extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges_r(
00674 GEOSContextHandle_t handle,
00675 const GEOSGeometry * const geoms[],
00676 unsigned int ngeoms);
00677 extern GEOSGeometry GEOS_DLL *GEOSPolygonize_full_r(GEOSContextHandle_t handle,
00678 const GEOSGeometry* input, GEOSGeometry** cuts,
00679 GEOSGeometry** dangles, GEOSGeometry** invalidRings);
00680
00681 extern GEOSGeometry GEOS_DLL *GEOSLineMerge_r(GEOSContextHandle_t handle,
00682 const GEOSGeometry* g);
00683 extern GEOSGeometry GEOS_DLL *GEOSSimplify_r(GEOSContextHandle_t handle,
00684 const GEOSGeometry* g,
00685 double tolerance);
00686 extern GEOSGeometry GEOS_DLL *GEOSTopologyPreserveSimplify_r(
00687 GEOSContextHandle_t handle,
00688 const GEOSGeometry* g, double tolerance);
00689
00690
00691
00692
00693
00694
00695 extern GEOSGeometry GEOS_DLL *GEOSGeom_extractUniquePoints(
00696 const GEOSGeometry* g);
00697 extern GEOSGeometry GEOS_DLL *GEOSGeom_extractUniquePoints_r(
00698 GEOSContextHandle_t handle,
00699 const GEOSGeometry* g);
00700
00701
00702
00703
00704
00705
00706
00707
00708
00709
00710
00711
00712 extern GEOSGeometry GEOS_DLL *GEOSSharedPaths(const GEOSGeometry* g1,
00713 const GEOSGeometry* g2);
00714 extern GEOSGeometry GEOS_DLL *GEOSSharedPaths_r(GEOSContextHandle_t handle,
00715 const GEOSGeometry* g1, const GEOSGeometry* g2);
00716
00717
00718
00719
00720
00721 extern GEOSGeometry GEOS_DLL *GEOSSnap(const GEOSGeometry* g1,
00722 const GEOSGeometry* g2, double tolerance);
00723 extern GEOSGeometry GEOS_DLL *GEOSSnap_r(GEOSContextHandle_t handle,
00724 const GEOSGeometry* g1, const GEOSGeometry* g2, double tolerance);
00725
00726
00727
00728
00729
00730
00731
00732
00733
00734
00735
00736 extern GEOSGeometry GEOS_DLL * GEOSDelaunayTriangulation(
00737 const GEOSGeometry *g,
00738 double tolerance,
00739 int onlyEdges);
00740
00741 extern GEOSGeometry GEOS_DLL * GEOSDelaunayTriangulation_r(
00742 GEOSContextHandle_t handle,
00743 const GEOSGeometry *g,
00744 double tolerance,
00745 int onlyEdges);
00746
00747
00748
00749
00750
00751
00752
00753 extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2);
00754 extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2);
00755 extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2);
00756 extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2);
00757 extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
00758 extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2);
00759 extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2);
00760 extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2);
00761 extern char GEOS_DLL GEOSEqualsExact(const GEOSGeometry* g1, const GEOSGeometry* g2, double tolerance);
00762 extern char GEOS_DLL GEOSCovers(const GEOSGeometry* g1, const GEOSGeometry* g2);
00763 extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g2);
00764
00765 extern char GEOS_DLL GEOSDisjoint_r(GEOSContextHandle_t handle,
00766 const GEOSGeometry* g1,
00767 const GEOSGeometry* g2);
00768 extern char GEOS_DLL GEOSTouches_r(GEOSContextHandle_t handle,
00769 const GEOSGeometry* g1,
00770 const GEOSGeometry* g2);
00771 extern char GEOS_DLL GEOSIntersects_r(GEOSContextHandle_t handle,
00772 const GEOSGeometry* g1,
00773 const GEOSGeometry* g2);
00774 extern char GEOS_DLL GEOSCrosses_r(GEOSContextHandle_t handle,
00775 const GEOSGeometry* g1,
00776 const GEOSGeometry* g2);
00777 extern char GEOS_DLL GEOSWithin_r(GEOSContextHandle_t handle,
00778 const GEOSGeometry* g1,
00779 const GEOSGeometry* g2);
00780 extern char GEOS_DLL GEOSContains_r(GEOSContextHandle_t handle,
00781 const GEOSGeometry* g1,
00782 const GEOSGeometry* g2);
00783 extern char GEOS_DLL GEOSOverlaps_r(GEOSContextHandle_t handle,
00784 const GEOSGeometry* g1,
00785 const GEOSGeometry* g2);
00786 extern char GEOS_DLL GEOSEquals_r(GEOSContextHandle_t handle,
00787 const GEOSGeometry* g1,
00788 const GEOSGeometry* g2);
00789 extern char GEOS_DLL GEOSEqualsExact_r(GEOSContextHandle_t handle,
00790 const GEOSGeometry* g1,
00791 const GEOSGeometry* g2,
00792 double tolerance);
00793 extern char GEOS_DLL GEOSCovers_r(GEOSContextHandle_t handle,
00794 const GEOSGeometry* g1,
00795 const GEOSGeometry* g2);
00796 extern char GEOS_DLL GEOSCoveredBy_r(GEOSContextHandle_t handle,
00797 const GEOSGeometry* g1,
00798 const GEOSGeometry* g2);
00799
00800
00801
00802
00803
00804
00805
00806
00807
00808
00809 extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g);
00810
00811 extern void GEOS_DLL GEOSPreparedGeom_destroy(const GEOSPreparedGeometry* g);
00812
00813 extern char GEOS_DLL GEOSPreparedContains(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
00814 extern char GEOS_DLL GEOSPreparedContainsProperly(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
00815 extern char GEOS_DLL GEOSPreparedCoveredBy(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
00816 extern char GEOS_DLL GEOSPreparedCovers(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
00817 extern char GEOS_DLL GEOSPreparedCrosses(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
00818 extern char GEOS_DLL GEOSPreparedDisjoint(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
00819 extern char GEOS_DLL GEOSPreparedIntersects(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
00820 extern char GEOS_DLL GEOSPreparedOverlaps(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
00821 extern char GEOS_DLL GEOSPreparedTouches(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
00822 extern char GEOS_DLL GEOSPreparedWithin(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
00823
00824
00825
00826
00827 extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare_r(
00828 GEOSContextHandle_t handle,
00829 const GEOSGeometry* g);
00830
00831 extern void GEOS_DLL GEOSPreparedGeom_destroy_r(GEOSContextHandle_t handle,
00832 const GEOSPreparedGeometry* g);
00833
00834 extern char GEOS_DLL GEOSPreparedContains_r(GEOSContextHandle_t handle,
00835 const GEOSPreparedGeometry* pg1,
00836 const GEOSGeometry* g2);
00837 extern char GEOS_DLL GEOSPreparedContainsProperly_r(GEOSContextHandle_t handle,
00838 const GEOSPreparedGeometry* pg1,
00839 const GEOSGeometry* g2);
00840 extern char GEOS_DLL GEOSPreparedCoveredBy_r(GEOSContextHandle_t handle,
00841 const GEOSPreparedGeometry* pg1,
00842 const GEOSGeometry* g2);
00843 extern char GEOS_DLL GEOSPreparedCovers_r(GEOSContextHandle_t handle,
00844 const GEOSPreparedGeometry* pg1,
00845 const GEOSGeometry* g2);
00846 extern char GEOS_DLL GEOSPreparedCrosses_r(GEOSContextHandle_t handle,
00847 const GEOSPreparedGeometry* pg1,
00848 const GEOSGeometry* g2);
00849 extern char GEOS_DLL GEOSPreparedDisjoint_r(GEOSContextHandle_t handle,
00850 const GEOSPreparedGeometry* pg1,
00851 const GEOSGeometry* g2);
00852 extern char GEOS_DLL GEOSPreparedIntersects_r(GEOSContextHandle_t handle,
00853 const GEOSPreparedGeometry* pg1,
00854 const GEOSGeometry* g2);
00855 extern char GEOS_DLL GEOSPreparedOverlaps_r(GEOSContextHandle_t handle,
00856 const GEOSPreparedGeometry* pg1,
00857 const GEOSGeometry* g2);
00858 extern char GEOS_DLL GEOSPreparedTouches_r(GEOSContextHandle_t handle,
00859 const GEOSPreparedGeometry* pg1,
00860 const GEOSGeometry* g2);
00861 extern char GEOS_DLL GEOSPreparedWithin_r(GEOSContextHandle_t handle,
00862 const GEOSPreparedGeometry* pg1,
00863 const GEOSGeometry* g2);
00864
00865
00866
00867
00868
00869
00870
00871
00872
00873
00874
00875 extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity);
00876 extern void GEOS_DLL GEOSSTRtree_insert(GEOSSTRtree *tree,
00877 const GEOSGeometry *g,
00878 void *item);
00879 extern void GEOS_DLL GEOSSTRtree_query(GEOSSTRtree *tree,
00880 const GEOSGeometry *g,
00881 GEOSQueryCallback callback,
00882 void *userdata);
00883 extern void GEOS_DLL GEOSSTRtree_iterate(GEOSSTRtree *tree,
00884 GEOSQueryCallback callback,
00885 void *userdata);
00886 extern char GEOS_DLL GEOSSTRtree_remove(GEOSSTRtree *tree,
00887 const GEOSGeometry *g,
00888 void *item);
00889 extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
00890
00891
00892 extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create_r(
00893 GEOSContextHandle_t handle,
00894 size_t nodeCapacity);
00895 extern void GEOS_DLL GEOSSTRtree_insert_r(GEOSContextHandle_t handle,
00896 GEOSSTRtree *tree,
00897 const GEOSGeometry *g,
00898 void *item);
00899 extern void GEOS_DLL GEOSSTRtree_query_r(GEOSContextHandle_t handle,
00900 GEOSSTRtree *tree,
00901 const GEOSGeometry *g,
00902 GEOSQueryCallback callback,
00903 void *userdata);
00904 extern void GEOS_DLL GEOSSTRtree_iterate_r(GEOSContextHandle_t handle,
00905 GEOSSTRtree *tree,
00906 GEOSQueryCallback callback,
00907 void *userdata);
00908 extern char GEOS_DLL GEOSSTRtree_remove_r(GEOSContextHandle_t handle,
00909 GEOSSTRtree *tree,
00910 const GEOSGeometry *g,
00911 void *item);
00912 extern void GEOS_DLL GEOSSTRtree_destroy_r(GEOSContextHandle_t handle,
00913 GEOSSTRtree *tree);
00914
00915
00916
00917
00918
00919
00920
00921
00922 extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g);
00923 extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g);
00924 extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g);
00925 extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g);
00926 extern char GEOS_DLL GEOSisClosed(const GEOSGeometry *g);
00927
00928 extern char GEOS_DLL GEOSisEmpty_r(GEOSContextHandle_t handle,
00929 const GEOSGeometry* g);
00930 extern char GEOS_DLL GEOSisSimple_r(GEOSContextHandle_t handle,
00931 const GEOSGeometry* g);
00932 extern char GEOS_DLL GEOSisRing_r(GEOSContextHandle_t handle,
00933 const GEOSGeometry* g);
00934 extern char GEOS_DLL GEOSHasZ_r(GEOSContextHandle_t handle,
00935 const GEOSGeometry* g);
00936 extern char GEOS_DLL GEOSisClosed_r(GEOSContextHandle_t handle,
00937 const GEOSGeometry *g);
00938
00939
00940
00941
00942
00943
00944
00945
00946 enum GEOSRelateBoundaryNodeRules {
00947
00948
00949
00950 GEOSRELATE_BNR_MOD2=1,
00951 GEOSRELATE_BNR_OGC=1,
00952 GEOSRELATE_BNR_ENDPOINT=2,
00953 GEOSRELATE_BNR_MULTIVALENT_ENDPOINT=3,
00954 GEOSRELATE_BNR_MONOVALENT_ENDPOINT=4
00955 };
00956
00957
00958 extern char GEOS_DLL GEOSRelatePattern(const GEOSGeometry* g1, const GEOSGeometry* g2, const char *pat);
00959 extern char GEOS_DLL GEOSRelatePattern_r(GEOSContextHandle_t handle,
00960 const GEOSGeometry* g1,
00961 const GEOSGeometry* g2,
00962 const char *pat);
00963
00964
00965 extern char GEOS_DLL *GEOSRelate(const GEOSGeometry* g1, const GEOSGeometry* g2);
00966 extern char GEOS_DLL *GEOSRelate_r(GEOSContextHandle_t handle,
00967 const GEOSGeometry* g1,
00968 const GEOSGeometry* g2);
00969
00970
00971 extern char GEOS_DLL GEOSRelatePatternMatch(const char *mat, const char *pat);
00972 extern char GEOS_DLL GEOSRelatePatternMatch_r(GEOSContextHandle_t handle,
00973 const char *mat,
00974 const char *pat);
00975
00976
00977 extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(const GEOSGeometry* g1,
00978 const GEOSGeometry* g2,
00979 int bnr);
00980 extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(GEOSContextHandle_t handle,
00981 const GEOSGeometry* g1,
00982 const GEOSGeometry* g2,
00983 int bnr);
00984
00985
00986
00987
00988
00989
00990
00991
00992 enum GEOSValidFlags {
00993 GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE=1
00994 };
00995
00996
00997 extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g);
00998 extern char GEOS_DLL GEOSisValid_r(GEOSContextHandle_t handle,
00999 const GEOSGeometry* g);
01000
01001
01002 extern char GEOS_DLL *GEOSisValidReason(const GEOSGeometry *g);
01003 extern char GEOS_DLL *GEOSisValidReason_r(GEOSContextHandle_t handle,
01004 const GEOSGeometry* g);
01005
01006
01007
01008
01009
01010
01011 extern char GEOS_DLL GEOSisValidDetail(const GEOSGeometry* g,
01012 int flags,
01013 char** reason, GEOSGeometry** location);
01014 extern char GEOS_DLL GEOSisValidDetail_r(GEOSContextHandle_t handle,
01015 const GEOSGeometry* g,
01016 int flags,
01017 char** reason,
01018 GEOSGeometry** location);
01019
01020
01021
01022
01023
01024
01025
01026
01027 extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g);
01028
01029 extern char GEOS_DLL *GEOSGeomType_r(GEOSContextHandle_t handle,
01030 const GEOSGeometry* g);
01031
01032
01033 extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g);
01034
01035 extern int GEOS_DLL GEOSGeomTypeId_r(GEOSContextHandle_t handle,
01036 const GEOSGeometry* g);
01037
01038
01039 extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g);
01040 extern int GEOS_DLL GEOSGetSRID_r(GEOSContextHandle_t handle,
01041 const GEOSGeometry* g);
01042
01043 extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
01044 extern void GEOS_DLL GEOSSetSRID_r(GEOSContextHandle_t handle,
01045 GEOSGeometry* g, int SRID);
01046
01047
01048
01049
01050
01051
01052
01053 extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
01054
01055 extern int GEOS_DLL GEOSGetNumGeometries_r(GEOSContextHandle_t handle,
01056 const GEOSGeometry* g);
01057
01058
01059
01060
01061
01062
01063
01064
01065
01066 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(const GEOSGeometry* g, int n);
01067
01068 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
01069 GEOSContextHandle_t handle,
01070 const GEOSGeometry* g, int n);
01071
01072
01073 extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
01074
01075 extern int GEOS_DLL GEOSNormalize_r(GEOSContextHandle_t handle,
01076 GEOSGeometry* g);
01077
01078
01079 extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g);
01080
01081 extern int GEOS_DLL GEOSGetNumInteriorRings_r(GEOSContextHandle_t handle,
01082 const GEOSGeometry* g);
01083
01084
01085 extern int GEOS_DLL GEOSGeomGetNumPoints(const GEOSGeometry* g);
01086
01087 extern int GEOS_DLL GEOSGeomGetNumPoints_r(GEOSContextHandle_t handle,
01088 const GEOSGeometry* g);
01089
01090
01091 extern int GEOS_DLL GEOSGeomGetX(const GEOSGeometry *g, double *x);
01092 extern int GEOS_DLL GEOSGeomGetY(const GEOSGeometry *g, double *y);
01093
01094 extern int GEOS_DLL GEOSGeomGetX_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *x);
01095 extern int GEOS_DLL GEOSGeomGetY_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *y);
01096
01097
01098
01099
01100
01101
01102 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(const GEOSGeometry* g, int n);
01103
01104 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN_r(
01105 GEOSContextHandle_t handle,
01106 const GEOSGeometry* g, int n);
01107
01108
01109
01110
01111
01112
01113 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(const GEOSGeometry* g);
01114
01115 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing_r(
01116 GEOSContextHandle_t handle,
01117 const GEOSGeometry* g);
01118
01119
01120 extern int GEOS_DLL GEOSGetNumCoordinates(const GEOSGeometry* g);
01121
01122 extern int GEOS_DLL GEOSGetNumCoordinates_r(GEOSContextHandle_t handle,
01123 const GEOSGeometry* g);
01124
01125
01126
01127
01128
01129 extern const GEOSCoordSequence GEOS_DLL *GEOSGeom_getCoordSeq(const GEOSGeometry* g);
01130
01131 extern const GEOSCoordSequence GEOS_DLL *GEOSGeom_getCoordSeq_r(
01132 GEOSContextHandle_t handle,
01133 const GEOSGeometry* g);
01134
01135
01136
01137
01138 extern int GEOS_DLL GEOSGeom_getDimensions(const GEOSGeometry* g);
01139
01140 extern int GEOS_DLL GEOSGeom_getDimensions_r(GEOSContextHandle_t handle,
01141 const GEOSGeometry* g);
01142
01143
01144
01145
01146 extern int GEOS_DLL GEOSGeom_getCoordinateDimension(const GEOSGeometry* g);
01147
01148 extern int GEOS_DLL GEOSGeom_getCoordinateDimension_r(GEOSContextHandle_t handle,
01149 const GEOSGeometry* g);
01150
01151
01152
01153
01154
01155 extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(const GEOSGeometry *g, int n);
01156 extern GEOSGeometry GEOS_DLL *GEOSGeomGetStartPoint(const GEOSGeometry *g);
01157 extern GEOSGeometry GEOS_DLL *GEOSGeomGetEndPoint(const GEOSGeometry *g);
01158
01159 extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n);
01160 extern GEOSGeometry GEOS_DLL *GEOSGeomGetStartPoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g);
01161 extern GEOSGeometry GEOS_DLL *GEOSGeomGetEndPoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g);
01162
01163
01164
01165
01166
01167
01168
01169
01170 extern int GEOS_DLL GEOSArea(const GEOSGeometry* g, double *area);
01171 extern int GEOS_DLL GEOSLength(const GEOSGeometry* g, double *length);
01172 extern int GEOS_DLL GEOSDistance(const GEOSGeometry* g1, const GEOSGeometry* g2,
01173 double *dist);
01174 extern int GEOS_DLL GEOSHausdorffDistance(const GEOSGeometry *g1,
01175 const GEOSGeometry *g2, double *dist);
01176 extern int GEOS_DLL GEOSHausdorffDistanceDensify(const GEOSGeometry *g1,
01177 const GEOSGeometry *g2, double densifyFrac, double *dist);
01178 extern int GEOS_DLL GEOSGeomGetLength(const GEOSGeometry *g, double *length);
01179
01180 extern int GEOS_DLL GEOSArea_r(GEOSContextHandle_t handle,
01181 const GEOSGeometry* g, double *area);
01182 extern int GEOS_DLL GEOSLength_r(GEOSContextHandle_t handle,
01183 const GEOSGeometry* g, double *length);
01184 extern int GEOS_DLL GEOSDistance_r(GEOSContextHandle_t handle,
01185 const GEOSGeometry* g1,
01186 const GEOSGeometry* g2, double *dist);
01187 extern int GEOS_DLL GEOSHausdorffDistance_r(GEOSContextHandle_t handle,
01188 const GEOSGeometry *g1,
01189 const GEOSGeometry *g2,
01190 double *dist);
01191 extern int GEOS_DLL GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t handle,
01192 const GEOSGeometry *g1,
01193 const GEOSGeometry *g2,
01194 double densifyFrac, double *dist);
01195 extern int GEOS_DLL GEOSGeomGetLength_r(GEOSContextHandle_t handle,
01196 const GEOSGeometry *g, double *length);
01197
01198
01199
01200
01201 extern GEOSCoordSequence GEOS_DLL *GEOSNearestPoints(
01202 const GEOSGeometry* g1, const GEOSGeometry* g2);
01203 extern GEOSCoordSequence GEOS_DLL *GEOSNearestPoints_r(
01204 GEOSContextHandle_t handle, const GEOSGeometry* g1, const GEOSGeometry* g2);
01205
01206
01207
01208
01209
01210
01211
01212
01213
01214
01215
01216
01217
01218
01219
01220
01221 extern int GEOS_DLL GEOSOrientationIndex(double Ax, double Ay, double Bx, double By,
01222 double Px, double Py);
01223 extern int GEOS_DLL GEOSOrientationIndex_r(GEOSContextHandle_t handle,
01224 double Ax, double Ay, double Bx, double By, double Px, double Py);
01225
01226
01227
01228
01229
01230
01231
01232
01233 typedef struct GEOSWKTReader_t GEOSWKTReader;
01234 typedef struct GEOSWKTWriter_t GEOSWKTWriter;
01235 typedef struct GEOSWKBReader_t GEOSWKBReader;
01236 typedef struct GEOSWKBWriter_t GEOSWKBWriter;
01237
01238
01239
01240 extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create();
01241 extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
01242 extern GEOSGeometry GEOS_DLL *GEOSWKTReader_read(GEOSWKTReader* reader, const char *wkt);
01243
01244 extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create_r(
01245 GEOSContextHandle_t handle);
01246 extern void GEOS_DLL GEOSWKTReader_destroy_r(GEOSContextHandle_t handle,
01247 GEOSWKTReader* reader);
01248 extern GEOSGeometry GEOS_DLL *GEOSWKTReader_read_r(GEOSContextHandle_t handle,
01249 GEOSWKTReader* reader,
01250 const char *wkt);
01251
01252
01253 extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create();
01254 extern void GEOS_DLL GEOSWKTWriter_destroy(GEOSWKTWriter* writer);
01255 extern char GEOS_DLL *GEOSWKTWriter_write(GEOSWKTWriter* writer, const GEOSGeometry* g);
01256 extern void GEOS_DLL GEOSWKTWriter_setTrim(GEOSWKTWriter *writer, char trim);
01257 extern void GEOS_DLL GEOSWKTWriter_setRoundingPrecision(GEOSWKTWriter *writer, int precision);
01258 extern void GEOS_DLL GEOSWKTWriter_setOutputDimension(GEOSWKTWriter *writer, int dim);
01259 extern int GEOS_DLL GEOSWKTWriter_getOutputDimension(GEOSWKTWriter *writer);
01260 extern void GEOS_DLL GEOSWKTWriter_setOld3D(GEOSWKTWriter *writer, int useOld3D);
01261
01262 extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create_r(
01263 GEOSContextHandle_t handle);
01264 extern void GEOS_DLL GEOSWKTWriter_destroy_r(GEOSContextHandle_t handle,
01265 GEOSWKTWriter* writer);
01266 extern char GEOS_DLL *GEOSWKTWriter_write_r(GEOSContextHandle_t handle,
01267 GEOSWKTWriter* writer,
01268 const GEOSGeometry* g);
01269 extern void GEOS_DLL GEOSWKTWriter_setTrim_r(GEOSContextHandle_t handle,
01270 GEOSWKTWriter *writer,
01271 char trim);
01272 extern void GEOS_DLL GEOSWKTWriter_setRoundingPrecision_r(GEOSContextHandle_t handle,
01273 GEOSWKTWriter *writer,
01274 int precision);
01275 extern void GEOS_DLL GEOSWKTWriter_setOutputDimension_r(GEOSContextHandle_t handle,
01276 GEOSWKTWriter *writer,
01277 int dim);
01278 extern int GEOS_DLL GEOSWKTWriter_getOutputDimension_r(GEOSContextHandle_t handle,
01279 GEOSWKTWriter *writer);
01280 extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(GEOSContextHandle_t handle,
01281 GEOSWKTWriter *writer,
01282 int useOld3D);
01283
01284
01285 extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create();
01286 extern void GEOS_DLL GEOSWKBReader_destroy(GEOSWKBReader* reader);
01287 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_read(GEOSWKBReader* reader, const unsigned char *wkb, size_t size);
01288 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_readHEX(GEOSWKBReader* reader, const unsigned char *hex, size_t size);
01289
01290 extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create_r(
01291 GEOSContextHandle_t handle);
01292 extern void GEOS_DLL GEOSWKBReader_destroy_r(GEOSContextHandle_t handle,
01293 GEOSWKBReader* reader);
01294 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_read_r(GEOSContextHandle_t handle,
01295 GEOSWKBReader* reader,
01296 const unsigned char *wkb,
01297 size_t size);
01298 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_readHEX_r(
01299 GEOSContextHandle_t handle,
01300 GEOSWKBReader* reader,
01301 const unsigned char *hex,
01302 size_t size);
01303
01304
01305 extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create();
01306 extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
01307
01308 extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create_r(
01309 GEOSContextHandle_t handle);
01310 extern void GEOS_DLL GEOSWKBWriter_destroy_r(GEOSContextHandle_t handle,
01311 GEOSWKBWriter* writer);
01312
01313
01314 extern unsigned char GEOS_DLL *GEOSWKBWriter_write(GEOSWKBWriter* writer, const GEOSGeometry* g, size_t *size);
01315 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(GEOSWKBWriter* writer, const GEOSGeometry* g, size_t *size);
01316
01317 extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
01318 GEOSContextHandle_t handle,
01319 GEOSWKBWriter* writer,
01320 const GEOSGeometry* g,
01321 size_t *size);
01322 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
01323 GEOSContextHandle_t handle,
01324 GEOSWKBWriter* writer,
01325 const GEOSGeometry* g,
01326 size_t *size);
01327
01328
01329
01330
01331
01332 extern int GEOS_DLL GEOSWKBWriter_getOutputDimension(const GEOSWKBWriter* writer);
01333 extern void GEOS_DLL GEOSWKBWriter_setOutputDimension(GEOSWKBWriter* writer, int newDimension);
01334
01335 extern int GEOS_DLL GEOSWKBWriter_getOutputDimension_r(
01336 GEOSContextHandle_t handle,
01337 const GEOSWKBWriter* writer);
01338 extern void GEOS_DLL GEOSWKBWriter_setOutputDimension_r(
01339 GEOSContextHandle_t handle,
01340 GEOSWKBWriter* writer, int newDimension);
01341
01342
01343
01344
01345
01346 extern int GEOS_DLL GEOSWKBWriter_getByteOrder(const GEOSWKBWriter* writer);
01347 extern void GEOS_DLL GEOSWKBWriter_setByteOrder(GEOSWKBWriter* writer, int byteOrder);
01348
01349 extern int GEOS_DLL GEOSWKBWriter_getByteOrder_r(GEOSContextHandle_t handle,
01350 const GEOSWKBWriter* writer);
01351 extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(GEOSContextHandle_t handle,
01352 GEOSWKBWriter* writer,
01353 int byteOrder);
01354
01355
01356
01357
01358 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(const GEOSWKBWriter* writer);
01359 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(GEOSWKBWriter* writer, const char writeSRID);
01360
01361 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID_r(GEOSContextHandle_t handle,
01362 const GEOSWKBWriter* writer);
01363 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID_r(GEOSContextHandle_t handle,
01364 GEOSWKBWriter* writer, const char writeSRID);
01365
01366
01367
01368
01369
01370
01371 extern void GEOS_DLL GEOSFree(void *buffer);
01372 extern void GEOS_DLL GEOSFree_r(GEOSContextHandle_t handle, void *buffer);
01373
01374 #ifdef __cplusplus
01375 }
01376 #endif
01377
01378 #endif