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