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
00033
00034 #ifndef GEOS_C_H_INCLUDED
00035 #define GEOS_C_H_INCLUDED
00036
00037 #ifndef __cplusplus
00038 # include <stddef.h>
00039 #else
00040 # include <cstddef>
00041 using std::size_t;
00042 #endif
00043
00044 #ifdef __cplusplus
00045 extern "C" {
00046 #endif
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059 #if defined(_MSC_VER)
00060 #include <geos/version.h>
00061 #define GEOS_CAPI_VERSION_MAJOR 1
00062 #define GEOS_CAPI_VERSION_MINOR 9
00063 #define GEOS_CAPI_VERSION_PATCH 0
00064 #define GEOS_CAPI_VERSION "3.5.0-CAPI-1.9.0"
00065 #else
00066 #ifndef GEOS_VERSION_MAJOR
00067 #define GEOS_VERSION_MAJOR 3
00068 #endif
00069 #ifndef GEOS_VERSION_MINOR
00070 #define GEOS_VERSION_MINOR 5
00071 #endif
00072 #ifndef GEOS_VERSION_PATCH
00073 #define GEOS_VERSION_PATCH 0
00074 #endif
00075 #ifndef GEOS_VERSION
00076 #define GEOS_VERSION "3.5.0"
00077 #endif
00078 #ifndef GEOS_JTS_PORT
00079 #define GEOS_JTS_PORT "1.13.0"
00080 #endif
00081
00082 #define GEOS_CAPI_VERSION_MAJOR 1
00083 #define GEOS_CAPI_VERSION_MINOR 9
00084 #define GEOS_CAPI_VERSION_PATCH 0
00085 #define GEOS_CAPI_VERSION "3.5.0-CAPI-1.9.0"
00086 #endif
00087
00088 #define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR
00089 #define GEOS_CAPI_LAST_INTERFACE (GEOS_CAPI_VERSION_MAJOR+GEOS_CAPI_VERSION_MINOR)
00090
00091
00092
00093
00094
00095
00096
00097 typedef struct GEOSContextHandle_HS *GEOSContextHandle_t;
00098
00099 typedef void (*GEOSMessageHandler)(const char *fmt, ...);
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111 typedef void (*GEOSMessageHandler_r)(const char *message, void *userdata);
00112
00113
00114
00115
00116
00117
00118
00119 #ifndef GEOSGeometry
00120 typedef struct GEOSGeom_t GEOSGeometry;
00121 typedef struct GEOSPrepGeom_t GEOSPreparedGeometry;
00122 typedef struct GEOSCoordSeq_t GEOSCoordSequence;
00123 typedef struct GEOSSTRtree_t GEOSSTRtree;
00124 typedef struct GEOSBufParams_t GEOSBufferParams;
00125 #endif
00126
00127
00128
00129
00130 typedef GEOSGeometry* GEOSGeom;
00131 typedef GEOSCoordSequence* GEOSCoordSeq;
00132
00133
00134
00135
00136
00137
00138 enum GEOSGeomTypes {
00139 GEOS_POINT,
00140 GEOS_LINESTRING,
00141 GEOS_LINEARRING,
00142 GEOS_POLYGON,
00143 GEOS_MULTIPOINT,
00144 GEOS_MULTILINESTRING,
00145 GEOS_MULTIPOLYGON,
00146 GEOS_GEOMETRYCOLLECTION
00147 };
00148
00149
00150 enum GEOSByteOrders {
00151 GEOS_WKB_XDR = 0,
00152 GEOS_WKB_NDR = 1
00153 };
00154
00155 typedef void (*GEOSQueryCallback)(void *item, void *userdata);
00156
00157
00158
00159
00160
00161
00162
00163 #include <geos/export.h>
00164
00165
00166
00167
00168
00169
00170
00171 typedef void (GEOSInterruptCallback)();
00172 extern GEOSInterruptCallback GEOS_DLL *GEOS_interruptRegisterCallback(GEOSInterruptCallback* cb);
00173
00174 extern void GEOS_DLL GEOS_interruptRequest();
00175
00176 extern void GEOS_DLL GEOS_interruptCancel();
00177
00178
00179
00180
00181
00182
00183 extern GEOSContextHandle_t GEOS_DLL initGEOS_r(
00184 GEOSMessageHandler notice_function,
00185 GEOSMessageHandler error_function);
00186
00187
00188
00189 extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
00190
00191 extern GEOSContextHandle_t GEOS_DLL GEOS_init_r();
00192 extern void GEOS_DLL GEOS_finish_r(GEOSContextHandle_t handle);
00193
00194
00195 extern GEOSMessageHandler GEOS_DLL GEOSContext_setNoticeHandler_r(GEOSContextHandle_t extHandle,
00196 GEOSMessageHandler nf);
00197 extern GEOSMessageHandler GEOS_DLL GEOSContext_setErrorHandler_r(GEOSContextHandle_t extHandle,
00198 GEOSMessageHandler ef);
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209 extern GEOSMessageHandler_r GEOS_DLL GEOSContext_setNoticeMessageHandler_r(GEOSContextHandle_t extHandle,
00210 GEOSMessageHandler_r nf,
00211 void *userData);
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222 extern GEOSMessageHandler_r GEOS_DLL GEOSContext_setErrorMessageHandler_r(GEOSContextHandle_t extHandle,
00223 GEOSMessageHandler_r ef,
00224 void *userData);
00225
00226 extern const char GEOS_DLL *GEOSversion();
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT_r(GEOSContextHandle_t handle,
00237 const char *wkt);
00238 extern char GEOS_DLL *GEOSGeomToWKT_r(GEOSContextHandle_t handle,
00239 const GEOSGeometry* g);
00240
00241
00242
00243
00244
00245
00246 extern int GEOS_DLL GEOS_getWKBOutputDims_r(GEOSContextHandle_t handle);
00247 extern int GEOS_DLL GEOS_setWKBOutputDims_r(GEOSContextHandle_t handle,
00248 int newDims);
00249
00250
00251
00252
00253
00254
00255 extern int GEOS_DLL GEOS_getWKBByteOrder_r(GEOSContextHandle_t handle);
00256 extern int GEOS_DLL GEOS_setWKBByteOrder_r(GEOSContextHandle_t handle,
00257 int byteOrder);
00258
00259 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf_r(GEOSContextHandle_t handle,
00260 const unsigned char *wkb,
00261 size_t size);
00262 extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(GEOSContextHandle_t handle,
00263 const GEOSGeometry* g,
00264 size_t *size);
00265
00266 extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf_r(GEOSContextHandle_t handle,
00267 const unsigned char *hex,
00268 size_t size);
00269 extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(GEOSContextHandle_t handle,
00270 const GEOSGeometry* g,
00271 size_t *size);
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create_r(
00285 GEOSContextHandle_t handle,
00286 unsigned int size,
00287 unsigned int dims);
00288
00289
00290
00291
00292
00293 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_clone_r(
00294 GEOSContextHandle_t handle,
00295 const GEOSCoordSequence* s);
00296
00297
00298
00299
00300 extern void GEOS_DLL GEOSCoordSeq_destroy_r(GEOSContextHandle_t handle,
00301 GEOSCoordSequence* s);
00302
00303
00304
00305
00306
00307 extern int GEOS_DLL GEOSCoordSeq_setX_r(GEOSContextHandle_t handle,
00308 GEOSCoordSequence* s, unsigned int idx,
00309 double val);
00310 extern int GEOS_DLL GEOSCoordSeq_setY_r(GEOSContextHandle_t handle,
00311 GEOSCoordSequence* s, unsigned int idx,
00312 double val);
00313 extern int GEOS_DLL GEOSCoordSeq_setZ_r(GEOSContextHandle_t handle,
00314 GEOSCoordSequence* s, unsigned int idx,
00315 double val);
00316 extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(GEOSContextHandle_t handle,
00317 GEOSCoordSequence* s,
00318 unsigned int idx,
00319 unsigned int dim, double val);
00320
00321
00322
00323
00324
00325 extern int GEOS_DLL GEOSCoordSeq_getX_r(GEOSContextHandle_t handle,
00326 const GEOSCoordSequence* s,
00327 unsigned int idx, double *val);
00328 extern int GEOS_DLL GEOSCoordSeq_getY_r(GEOSContextHandle_t handle,
00329 const GEOSCoordSequence* s,
00330 unsigned int idx, double *val);
00331 extern int GEOS_DLL GEOSCoordSeq_getZ_r(GEOSContextHandle_t handle,
00332 const GEOSCoordSequence* s,
00333 unsigned int idx, double *val);
00334 extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(GEOSContextHandle_t handle,
00335 const GEOSCoordSequence* s,
00336 unsigned int idx,
00337 unsigned int dim, double *val);
00338
00339
00340
00341
00342 extern int GEOS_DLL GEOSCoordSeq_getSize_r(GEOSContextHandle_t handle,
00343 const GEOSCoordSequence* s,
00344 unsigned int *size);
00345 extern int GEOS_DLL GEOSCoordSeq_getDimensions_r(GEOSContextHandle_t handle,
00346 const GEOSCoordSequence* s,
00347 unsigned int *dims);
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363 extern double GEOS_DLL GEOSProject_r(GEOSContextHandle_t handle,
00364 const GEOSGeometry *g,
00365 const GEOSGeometry *p);
00366
00367
00368
00369 extern GEOSGeometry GEOS_DLL *GEOSInterpolate_r(GEOSContextHandle_t handle,
00370 const GEOSGeometry *g,
00371 double d);
00372
00373 extern double GEOS_DLL GEOSProjectNormalized_r(GEOSContextHandle_t handle,
00374 const GEOSGeometry *g,
00375 const GEOSGeometry *p);
00376
00377 extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized_r(
00378 GEOSContextHandle_t handle,
00379 const GEOSGeometry *g,
00380 double d);
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390 extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(GEOSContextHandle_t handle,
00391 const GEOSGeometry* g,
00392 double width, int quadsegs);
00393
00394 enum GEOSBufCapStyles {
00395 GEOSBUF_CAP_ROUND=1,
00396 GEOSBUF_CAP_FLAT=2,
00397 GEOSBUF_CAP_SQUARE=3
00398 };
00399
00400 enum GEOSBufJoinStyles {
00401 GEOSBUF_JOIN_ROUND=1,
00402 GEOSBUF_JOIN_MITRE=2,
00403 GEOSBUF_JOIN_BEVEL=3
00404 };
00405
00406
00407 extern GEOSBufferParams GEOS_DLL *GEOSBufferParams_create_r(
00408 GEOSContextHandle_t handle);
00409 extern void GEOS_DLL GEOSBufferParams_destroy_r(
00410 GEOSContextHandle_t handle,
00411 GEOSBufferParams* parms);
00412
00413
00414 extern int GEOS_DLL GEOSBufferParams_setEndCapStyle_r(
00415 GEOSContextHandle_t handle,
00416 GEOSBufferParams* p,
00417 int style);
00418
00419
00420 extern int GEOS_DLL GEOSBufferParams_setJoinStyle_r(
00421 GEOSContextHandle_t handle,
00422 GEOSBufferParams* p,
00423 int joinStyle);
00424
00425
00426 extern int GEOS_DLL GEOSBufferParams_setMitreLimit_r(
00427 GEOSContextHandle_t handle,
00428 GEOSBufferParams* p,
00429 double mitreLimit);
00430
00431
00432 extern int GEOS_DLL GEOSBufferParams_setQuadrantSegments_r(
00433 GEOSContextHandle_t handle,
00434 GEOSBufferParams* p,
00435 int quadSegs);
00436
00437
00438
00439 extern int GEOS_DLL GEOSBufferParams_setSingleSided_r(
00440 GEOSContextHandle_t handle,
00441 GEOSBufferParams* p,
00442 int singleSided);
00443
00444
00445 extern GEOSGeometry GEOS_DLL *GEOSBufferWithParams_r(
00446 GEOSContextHandle_t handle,
00447 const GEOSGeometry* g,
00448 const GEOSBufferParams* p,
00449 double width);
00450
00451
00452 extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle_r(GEOSContextHandle_t handle,
00453 const GEOSGeometry* g, double width, int quadsegs, int endCapStyle,
00454 int joinStyle, double mitreLimit);
00455
00456
00457
00458 extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer_r(
00459 GEOSContextHandle_t handle,
00460 const GEOSGeometry* g, double width, int quadsegs,
00461 int joinStyle, double mitreLimit, int leftSide);
00462
00463
00464
00465
00466
00467
00468
00469
00470 extern GEOSGeometry GEOS_DLL *GEOSOffsetCurve_r(GEOSContextHandle_t handle,
00471 const GEOSGeometry* g, double width, int quadsegs,
00472 int joinStyle, double mitreLimit);
00473
00474
00475
00476
00477
00478
00479
00480
00481
00482
00483 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint_r(
00484 GEOSContextHandle_t handle,
00485 GEOSCoordSequence* s);
00486 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPoint_r(
00487 GEOSContextHandle_t handle);
00488 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing_r(
00489 GEOSContextHandle_t handle,
00490 GEOSCoordSequence* s);
00491 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLineString_r(
00492 GEOSContextHandle_t handle,
00493 GEOSCoordSequence* s);
00494 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyLineString_r(
00495 GEOSContextHandle_t handle);
00496
00497
00498
00499
00500
00501
00502 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPolygon_r(
00503 GEOSContextHandle_t handle);
00504 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPolygon_r(
00505 GEOSContextHandle_t handle,
00506 GEOSGeometry* shell,
00507 GEOSGeometry** holes,
00508 unsigned int nholes);
00509 extern GEOSGeometry GEOS_DLL *GEOSGeom_createCollection_r(
00510 GEOSContextHandle_t handle, int type,
00511 GEOSGeometry* *geoms,
00512 unsigned int ngeoms);
00513 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyCollection_r(
00514 GEOSContextHandle_t handle, int type);
00515
00516 extern GEOSGeometry GEOS_DLL *GEOSGeom_clone_r(GEOSContextHandle_t handle,
00517 const GEOSGeometry* g);
00518
00519
00520
00521
00522
00523
00524
00525 extern void GEOS_DLL GEOSGeom_destroy_r(GEOSContextHandle_t handle,
00526 GEOSGeometry* g);
00527
00528
00529
00530
00531
00532
00533
00534 extern GEOSGeometry GEOS_DLL *GEOSEnvelope_r(GEOSContextHandle_t handle,
00535 const GEOSGeometry* g);
00536 extern GEOSGeometry GEOS_DLL *GEOSIntersection_r(GEOSContextHandle_t handle,
00537 const GEOSGeometry* g1,
00538 const GEOSGeometry* g2);
00539 extern GEOSGeometry GEOS_DLL *GEOSConvexHull_r(GEOSContextHandle_t handle,
00540 const GEOSGeometry* g);
00541 extern GEOSGeometry GEOS_DLL *GEOSDifference_r(GEOSContextHandle_t handle,
00542 const GEOSGeometry* g1,
00543 const GEOSGeometry* g2);
00544 extern GEOSGeometry GEOS_DLL *GEOSSymDifference_r(GEOSContextHandle_t handle,
00545 const GEOSGeometry* g1,
00546 const GEOSGeometry* g2);
00547 extern GEOSGeometry GEOS_DLL *GEOSBoundary_r(GEOSContextHandle_t handle,
00548 const GEOSGeometry* g);
00549 extern GEOSGeometry GEOS_DLL *GEOSUnion_r(GEOSContextHandle_t handle,
00550 const GEOSGeometry* g1,
00551 const GEOSGeometry* g2);
00552 extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion_r(GEOSContextHandle_t handle,
00553 const GEOSGeometry* g);
00554
00555 extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded_r(GEOSContextHandle_t handle,
00556 const GEOSGeometry* g);
00557 extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface_r(GEOSContextHandle_t handle,
00558 const GEOSGeometry* g);
00559 extern GEOSGeometry GEOS_DLL *GEOSGetCentroid_r(GEOSContextHandle_t handle,
00560 const GEOSGeometry* g);
00561 extern GEOSGeometry GEOS_DLL *GEOSNode_r(GEOSContextHandle_t handle,
00562 const GEOSGeometry* g);
00563
00564
00565 extern GEOSGeometry GEOS_DLL *GEOSClipByRect_r(GEOSContextHandle_t handle,
00566 const GEOSGeometry* g,
00567 double xmin, double ymin,
00568 double xmax, double ymax);
00569
00570
00571
00572
00573
00574
00575
00576
00577
00578
00579
00580
00581
00582
00583
00584
00585
00586
00587
00588
00589
00590
00591
00592
00593
00594
00595
00596
00597
00598
00599
00600
00601
00602 extern GEOSGeometry GEOS_DLL *GEOSPolygonize_r(GEOSContextHandle_t handle,
00603 const GEOSGeometry *const geoms[],
00604 unsigned int ngeoms);
00605 extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges_r(
00606 GEOSContextHandle_t handle,
00607 const GEOSGeometry * const geoms[],
00608 unsigned int ngeoms);
00609 extern GEOSGeometry GEOS_DLL *GEOSPolygonize_full_r(GEOSContextHandle_t handle,
00610 const GEOSGeometry* input, GEOSGeometry** cuts,
00611 GEOSGeometry** dangles, GEOSGeometry** invalidRings);
00612
00613 extern GEOSGeometry GEOS_DLL *GEOSLineMerge_r(GEOSContextHandle_t handle,
00614 const GEOSGeometry* g);
00615 extern GEOSGeometry GEOS_DLL *GEOSSimplify_r(GEOSContextHandle_t handle,
00616 const GEOSGeometry* g,
00617 double tolerance);
00618 extern GEOSGeometry GEOS_DLL *GEOSTopologyPreserveSimplify_r(
00619 GEOSContextHandle_t handle,
00620 const GEOSGeometry* g, double tolerance);
00621
00622
00623
00624
00625
00626
00627 extern GEOSGeometry GEOS_DLL *GEOSGeom_extractUniquePoints_r(
00628 GEOSContextHandle_t handle,
00629 const GEOSGeometry* g);
00630
00631
00632
00633
00634
00635
00636
00637
00638
00639
00640
00641
00642 extern GEOSGeometry GEOS_DLL *GEOSSharedPaths_r(GEOSContextHandle_t handle,
00643 const GEOSGeometry* g1, const GEOSGeometry* g2);
00644
00645
00646
00647
00648
00649 extern GEOSGeometry GEOS_DLL *GEOSSnap_r(GEOSContextHandle_t handle,
00650 const GEOSGeometry* g1, const GEOSGeometry* g2, double tolerance);
00651
00652
00653
00654
00655
00656
00657
00658
00659
00660
00661
00662 extern GEOSGeometry GEOS_DLL * GEOSDelaunayTriangulation_r(
00663 GEOSContextHandle_t handle,
00664 const GEOSGeometry *g,
00665 double tolerance,
00666 int onlyEdges);
00667
00668
00669
00670
00671
00672
00673
00674
00675
00676
00677
00678
00679
00680
00681 extern GEOSGeometry GEOS_DLL * GEOSVoronoiDiagram_r(
00682 GEOSContextHandle_t extHandle,
00683 const GEOSGeometry *g,
00684 const GEOSGeometry *env,
00685 double tolerance,
00686 int onlyEdges);
00687
00688
00689
00690
00691
00692
00693
00694
00695 extern char GEOS_DLL GEOSDisjoint_r(GEOSContextHandle_t handle,
00696 const GEOSGeometry* g1,
00697 const GEOSGeometry* g2);
00698 extern char GEOS_DLL GEOSTouches_r(GEOSContextHandle_t handle,
00699 const GEOSGeometry* g1,
00700 const GEOSGeometry* g2);
00701 extern char GEOS_DLL GEOSIntersects_r(GEOSContextHandle_t handle,
00702 const GEOSGeometry* g1,
00703 const GEOSGeometry* g2);
00704 extern char GEOS_DLL GEOSCrosses_r(GEOSContextHandle_t handle,
00705 const GEOSGeometry* g1,
00706 const GEOSGeometry* g2);
00707 extern char GEOS_DLL GEOSWithin_r(GEOSContextHandle_t handle,
00708 const GEOSGeometry* g1,
00709 const GEOSGeometry* g2);
00710 extern char GEOS_DLL GEOSContains_r(GEOSContextHandle_t handle,
00711 const GEOSGeometry* g1,
00712 const GEOSGeometry* g2);
00713 extern char GEOS_DLL GEOSOverlaps_r(GEOSContextHandle_t handle,
00714 const GEOSGeometry* g1,
00715 const GEOSGeometry* g2);
00716 extern char GEOS_DLL GEOSEquals_r(GEOSContextHandle_t handle,
00717 const GEOSGeometry* g1,
00718 const GEOSGeometry* g2);
00719 extern char GEOS_DLL GEOSEqualsExact_r(GEOSContextHandle_t handle,
00720 const GEOSGeometry* g1,
00721 const GEOSGeometry* g2,
00722 double tolerance);
00723 extern char GEOS_DLL GEOSCovers_r(GEOSContextHandle_t handle,
00724 const GEOSGeometry* g1,
00725 const GEOSGeometry* g2);
00726 extern char GEOS_DLL GEOSCoveredBy_r(GEOSContextHandle_t handle,
00727 const GEOSGeometry* g1,
00728 const GEOSGeometry* g2);
00729
00730
00731
00732
00733
00734
00735
00736
00737
00738
00739 extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare_r(
00740 GEOSContextHandle_t handle,
00741 const GEOSGeometry* g);
00742
00743 extern void GEOS_DLL GEOSPreparedGeom_destroy_r(GEOSContextHandle_t handle,
00744 const GEOSPreparedGeometry* g);
00745
00746 extern char GEOS_DLL GEOSPreparedContains_r(GEOSContextHandle_t handle,
00747 const GEOSPreparedGeometry* pg1,
00748 const GEOSGeometry* g2);
00749 extern char GEOS_DLL GEOSPreparedContainsProperly_r(GEOSContextHandle_t handle,
00750 const GEOSPreparedGeometry* pg1,
00751 const GEOSGeometry* g2);
00752 extern char GEOS_DLL GEOSPreparedCoveredBy_r(GEOSContextHandle_t handle,
00753 const GEOSPreparedGeometry* pg1,
00754 const GEOSGeometry* g2);
00755 extern char GEOS_DLL GEOSPreparedCovers_r(GEOSContextHandle_t handle,
00756 const GEOSPreparedGeometry* pg1,
00757 const GEOSGeometry* g2);
00758 extern char GEOS_DLL GEOSPreparedCrosses_r(GEOSContextHandle_t handle,
00759 const GEOSPreparedGeometry* pg1,
00760 const GEOSGeometry* g2);
00761 extern char GEOS_DLL GEOSPreparedDisjoint_r(GEOSContextHandle_t handle,
00762 const GEOSPreparedGeometry* pg1,
00763 const GEOSGeometry* g2);
00764 extern char GEOS_DLL GEOSPreparedIntersects_r(GEOSContextHandle_t handle,
00765 const GEOSPreparedGeometry* pg1,
00766 const GEOSGeometry* g2);
00767 extern char GEOS_DLL GEOSPreparedOverlaps_r(GEOSContextHandle_t handle,
00768 const GEOSPreparedGeometry* pg1,
00769 const GEOSGeometry* g2);
00770 extern char GEOS_DLL GEOSPreparedTouches_r(GEOSContextHandle_t handle,
00771 const GEOSPreparedGeometry* pg1,
00772 const GEOSGeometry* g2);
00773 extern char GEOS_DLL GEOSPreparedWithin_r(GEOSContextHandle_t handle,
00774 const GEOSPreparedGeometry* pg1,
00775 const GEOSGeometry* g2);
00776
00777
00778
00779
00780
00781
00782
00783
00784
00785
00786
00787 extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create_r(
00788 GEOSContextHandle_t handle,
00789 size_t nodeCapacity);
00790 extern void GEOS_DLL GEOSSTRtree_insert_r(GEOSContextHandle_t handle,
00791 GEOSSTRtree *tree,
00792 const GEOSGeometry *g,
00793 void *item);
00794 extern void GEOS_DLL GEOSSTRtree_query_r(GEOSContextHandle_t handle,
00795 GEOSSTRtree *tree,
00796 const GEOSGeometry *g,
00797 GEOSQueryCallback callback,
00798 void *userdata);
00799 extern void GEOS_DLL GEOSSTRtree_iterate_r(GEOSContextHandle_t handle,
00800 GEOSSTRtree *tree,
00801 GEOSQueryCallback callback,
00802 void *userdata);
00803 extern char GEOS_DLL GEOSSTRtree_remove_r(GEOSContextHandle_t handle,
00804 GEOSSTRtree *tree,
00805 const GEOSGeometry *g,
00806 void *item);
00807 extern void GEOS_DLL GEOSSTRtree_destroy_r(GEOSContextHandle_t handle,
00808 GEOSSTRtree *tree);
00809
00810
00811
00812
00813
00814
00815
00816
00817 extern char GEOS_DLL GEOSisEmpty_r(GEOSContextHandle_t handle,
00818 const GEOSGeometry* g);
00819 extern char GEOS_DLL GEOSisSimple_r(GEOSContextHandle_t handle,
00820 const GEOSGeometry* g);
00821 extern char GEOS_DLL GEOSisRing_r(GEOSContextHandle_t handle,
00822 const GEOSGeometry* g);
00823 extern char GEOS_DLL GEOSHasZ_r(GEOSContextHandle_t handle,
00824 const GEOSGeometry* g);
00825 extern char GEOS_DLL GEOSisClosed_r(GEOSContextHandle_t handle,
00826 const GEOSGeometry *g);
00827
00828
00829
00830
00831
00832
00833
00834
00835 enum GEOSRelateBoundaryNodeRules {
00836
00837
00838
00839 GEOSRELATE_BNR_MOD2=1,
00840 GEOSRELATE_BNR_OGC=1,
00841 GEOSRELATE_BNR_ENDPOINT=2,
00842 GEOSRELATE_BNR_MULTIVALENT_ENDPOINT=3,
00843 GEOSRELATE_BNR_MONOVALENT_ENDPOINT=4
00844 };
00845
00846
00847 extern char GEOS_DLL GEOSRelatePattern_r(GEOSContextHandle_t handle,
00848 const GEOSGeometry* g1,
00849 const GEOSGeometry* g2,
00850 const char *pat);
00851
00852
00853 extern char GEOS_DLL *GEOSRelate_r(GEOSContextHandle_t handle,
00854 const GEOSGeometry* g1,
00855 const GEOSGeometry* g2);
00856
00857
00858 extern char GEOS_DLL GEOSRelatePatternMatch_r(GEOSContextHandle_t handle,
00859 const char *mat,
00860 const char *pat);
00861
00862
00863 extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(GEOSContextHandle_t handle,
00864 const GEOSGeometry* g1,
00865 const GEOSGeometry* g2,
00866 int bnr);
00867
00868
00869
00870
00871
00872
00873
00874
00875 enum GEOSValidFlags {
00876 GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE=1
00877 };
00878
00879
00880 extern char GEOS_DLL GEOSisValid_r(GEOSContextHandle_t handle,
00881 const GEOSGeometry* g);
00882
00883
00884 extern char GEOS_DLL *GEOSisValidReason_r(GEOSContextHandle_t handle,
00885 const GEOSGeometry* g);
00886
00887
00888
00889
00890
00891
00892 extern char GEOS_DLL GEOSisValidDetail_r(GEOSContextHandle_t handle,
00893 const GEOSGeometry* g,
00894 int flags,
00895 char** reason,
00896 GEOSGeometry** location);
00897
00898
00899
00900
00901
00902
00903
00904
00905 extern char GEOS_DLL *GEOSGeomType_r(GEOSContextHandle_t handle,
00906 const GEOSGeometry* g);
00907
00908
00909 extern int GEOS_DLL GEOSGeomTypeId_r(GEOSContextHandle_t handle,
00910 const GEOSGeometry* g);
00911
00912
00913 extern int GEOS_DLL GEOSGetSRID_r(GEOSContextHandle_t handle,
00914 const GEOSGeometry* g);
00915
00916 extern void GEOS_DLL GEOSSetSRID_r(GEOSContextHandle_t handle,
00917 GEOSGeometry* g, int SRID);
00918
00919
00920
00921
00922
00923
00924
00925 extern int GEOS_DLL GEOSGetNumGeometries_r(GEOSContextHandle_t handle,
00926 const GEOSGeometry* g);
00927
00928
00929
00930
00931
00932
00933
00934
00935
00936 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
00937 GEOSContextHandle_t handle,
00938 const GEOSGeometry* g, int n);
00939
00940
00941 extern int GEOS_DLL GEOSNormalize_r(GEOSContextHandle_t handle,
00942 GEOSGeometry* g);
00943
00944
00945 extern int GEOS_DLL GEOSGetNumInteriorRings_r(GEOSContextHandle_t handle,
00946 const GEOSGeometry* g);
00947
00948
00949 extern int GEOS_DLL GEOSGeomGetNumPoints_r(GEOSContextHandle_t handle,
00950 const GEOSGeometry* g);
00951
00952
00953 extern int GEOS_DLL GEOSGeomGetX_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *x);
00954 extern int GEOS_DLL GEOSGeomGetY_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *y);
00955
00956
00957
00958
00959
00960
00961 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN_r(
00962 GEOSContextHandle_t handle,
00963 const GEOSGeometry* g, int n);
00964
00965
00966
00967
00968
00969
00970 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing_r(
00971 GEOSContextHandle_t handle,
00972 const GEOSGeometry* g);
00973
00974
00975 extern int GEOS_DLL GEOSGetNumCoordinates_r(GEOSContextHandle_t handle,
00976 const GEOSGeometry* g);
00977
00978
00979
00980
00981
00982 extern const GEOSCoordSequence GEOS_DLL *GEOSGeom_getCoordSeq_r(
00983 GEOSContextHandle_t handle,
00984 const GEOSGeometry* g);
00985
00986
00987
00988
00989 extern int GEOS_DLL GEOSGeom_getDimensions_r(GEOSContextHandle_t handle,
00990 const GEOSGeometry* g);
00991
00992
00993
00994
00995 extern int GEOS_DLL GEOSGeom_getCoordinateDimension_r(GEOSContextHandle_t handle,
00996 const GEOSGeometry* g);
00997
00998
00999
01000
01001
01002 extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n);
01003 extern GEOSGeometry GEOS_DLL *GEOSGeomGetStartPoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g);
01004 extern GEOSGeometry GEOS_DLL *GEOSGeomGetEndPoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g);
01005
01006
01007
01008
01009
01010
01011
01012
01013 extern int GEOS_DLL GEOSArea_r(GEOSContextHandle_t handle,
01014 const GEOSGeometry* g, double *area);
01015 extern int GEOS_DLL GEOSLength_r(GEOSContextHandle_t handle,
01016 const GEOSGeometry* g, double *length);
01017 extern int GEOS_DLL GEOSDistance_r(GEOSContextHandle_t handle,
01018 const GEOSGeometry* g1,
01019 const GEOSGeometry* g2, double *dist);
01020 extern int GEOS_DLL GEOSHausdorffDistance_r(GEOSContextHandle_t handle,
01021 const GEOSGeometry *g1,
01022 const GEOSGeometry *g2,
01023 double *dist);
01024 extern int GEOS_DLL GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t handle,
01025 const GEOSGeometry *g1,
01026 const GEOSGeometry *g2,
01027 double densifyFrac, double *dist);
01028 extern int GEOS_DLL GEOSGeomGetLength_r(GEOSContextHandle_t handle,
01029 const GEOSGeometry *g, double *length);
01030
01031
01032
01033
01034 extern GEOSCoordSequence GEOS_DLL *GEOSNearestPoints_r(
01035 GEOSContextHandle_t handle, const GEOSGeometry* g1, const GEOSGeometry* g2);
01036
01037
01038
01039
01040
01041
01042
01043
01044
01045
01046
01047
01048
01049
01050
01051
01052 extern int GEOS_DLL GEOSOrientationIndex_r(GEOSContextHandle_t handle,
01053 double Ax, double Ay, double Bx, double By, double Px, double Py);
01054
01055
01056
01057
01058
01059
01060
01061
01062 typedef struct GEOSWKTReader_t GEOSWKTReader;
01063 typedef struct GEOSWKTWriter_t GEOSWKTWriter;
01064 typedef struct GEOSWKBReader_t GEOSWKBReader;
01065 typedef struct GEOSWKBWriter_t GEOSWKBWriter;
01066
01067
01068
01069 extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create_r(
01070 GEOSContextHandle_t handle);
01071 extern void GEOS_DLL GEOSWKTReader_destroy_r(GEOSContextHandle_t handle,
01072 GEOSWKTReader* reader);
01073 extern GEOSGeometry GEOS_DLL *GEOSWKTReader_read_r(GEOSContextHandle_t handle,
01074 GEOSWKTReader* reader,
01075 const char *wkt);
01076
01077
01078 extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create_r(
01079 GEOSContextHandle_t handle);
01080 extern void GEOS_DLL GEOSWKTWriter_destroy_r(GEOSContextHandle_t handle,
01081 GEOSWKTWriter* writer);
01082 extern char GEOS_DLL *GEOSWKTWriter_write_r(GEOSContextHandle_t handle,
01083 GEOSWKTWriter* writer,
01084 const GEOSGeometry* g);
01085 extern void GEOS_DLL GEOSWKTWriter_setTrim_r(GEOSContextHandle_t handle,
01086 GEOSWKTWriter *writer,
01087 char trim);
01088 extern void GEOS_DLL GEOSWKTWriter_setRoundingPrecision_r(GEOSContextHandle_t handle,
01089 GEOSWKTWriter *writer,
01090 int precision);
01091 extern void GEOS_DLL GEOSWKTWriter_setOutputDimension_r(GEOSContextHandle_t handle,
01092 GEOSWKTWriter *writer,
01093 int dim);
01094 extern int GEOS_DLL GEOSWKTWriter_getOutputDimension_r(GEOSContextHandle_t handle,
01095 GEOSWKTWriter *writer);
01096 extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(GEOSContextHandle_t handle,
01097 GEOSWKTWriter *writer,
01098 int useOld3D);
01099
01100
01101 extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create_r(
01102 GEOSContextHandle_t handle);
01103 extern void GEOS_DLL GEOSWKBReader_destroy_r(GEOSContextHandle_t handle,
01104 GEOSWKBReader* reader);
01105 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_read_r(GEOSContextHandle_t handle,
01106 GEOSWKBReader* reader,
01107 const unsigned char *wkb,
01108 size_t size);
01109 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_readHEX_r(
01110 GEOSContextHandle_t handle,
01111 GEOSWKBReader* reader,
01112 const unsigned char *hex,
01113 size_t size);
01114
01115
01116 extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create_r(
01117 GEOSContextHandle_t handle);
01118 extern void GEOS_DLL GEOSWKBWriter_destroy_r(GEOSContextHandle_t handle,
01119 GEOSWKBWriter* writer);
01120
01121
01122 extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
01123 GEOSContextHandle_t handle,
01124 GEOSWKBWriter* writer,
01125 const GEOSGeometry* g,
01126 size_t *size);
01127 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
01128 GEOSContextHandle_t handle,
01129 GEOSWKBWriter* writer,
01130 const GEOSGeometry* g,
01131 size_t *size);
01132
01133
01134
01135
01136
01137 extern int GEOS_DLL GEOSWKBWriter_getOutputDimension_r(
01138 GEOSContextHandle_t handle,
01139 const GEOSWKBWriter* writer);
01140 extern void GEOS_DLL GEOSWKBWriter_setOutputDimension_r(
01141 GEOSContextHandle_t handle,
01142 GEOSWKBWriter* writer, int newDimension);
01143
01144
01145
01146
01147
01148 extern int GEOS_DLL GEOSWKBWriter_getByteOrder_r(GEOSContextHandle_t handle,
01149 const GEOSWKBWriter* writer);
01150 extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(GEOSContextHandle_t handle,
01151 GEOSWKBWriter* writer,
01152 int byteOrder);
01153
01154
01155
01156
01157 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID_r(GEOSContextHandle_t handle,
01158 const GEOSWKBWriter* writer);
01159 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID_r(GEOSContextHandle_t handle,
01160 GEOSWKBWriter* writer, const char writeSRID);
01161
01162
01163
01164
01165
01166
01167 extern void GEOS_DLL GEOSFree_r(GEOSContextHandle_t handle, void *buffer);
01168
01169
01170
01171
01172 #ifndef GEOS_USE_ONLY_R_API
01173
01174
01175
01176
01177
01178
01179
01180 extern void GEOS_DLL initGEOS(GEOSMessageHandler notice_function,
01181 GEOSMessageHandler error_function);
01182 extern void GEOS_DLL finishGEOS(void);
01183
01184
01185
01186
01187
01188
01189
01190
01191 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(const char *wkt);
01192 extern char GEOS_DLL *GEOSGeomToWKT(const GEOSGeometry* g);
01193
01194
01195
01196
01197
01198 extern int GEOS_DLL GEOS_getWKBOutputDims();
01199 extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims);
01200
01201
01202
01203
01204
01205 extern int GEOS_DLL GEOS_getWKBByteOrder();
01206 extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder);
01207
01208 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size);
01209 extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(const GEOSGeometry* g, size_t *size);
01210
01211 extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size);
01212 extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(const GEOSGeometry* g, size_t *size);
01213
01214
01215
01216
01217
01218
01219
01220
01221
01222
01223
01224
01225 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims);
01226
01227
01228
01229
01230
01231 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_clone(const GEOSCoordSequence* s);
01232
01233
01234
01235
01236 extern void GEOS_DLL GEOSCoordSeq_destroy(GEOSCoordSequence* s);
01237
01238
01239
01240
01241
01242 extern int GEOS_DLL GEOSCoordSeq_setX(GEOSCoordSequence* s,
01243 unsigned int idx, double val);
01244 extern int GEOS_DLL GEOSCoordSeq_setY(GEOSCoordSequence* s,
01245 unsigned int idx, double val);
01246 extern int GEOS_DLL GEOSCoordSeq_setZ(GEOSCoordSequence* s,
01247 unsigned int idx, double val);
01248 extern int GEOS_DLL GEOSCoordSeq_setOrdinate(GEOSCoordSequence* s,
01249 unsigned int idx, unsigned int dim, double val);
01250
01251
01252
01253
01254
01255 extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
01256 unsigned int idx, double *val);
01257 extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
01258 unsigned int idx, double *val);
01259 extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s,
01260 unsigned int idx, double *val);
01261 extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
01262 unsigned int idx, unsigned int dim, double *val);
01263
01264
01265
01266
01267 extern int GEOS_DLL GEOSCoordSeq_getSize(const GEOSCoordSequence* s,
01268 unsigned int *size);
01269 extern int GEOS_DLL GEOSCoordSeq_getDimensions(const GEOSCoordSequence* s,
01270 unsigned int *dims);
01271
01272
01273
01274
01275
01276
01277
01278
01279
01280
01281
01282
01283
01284
01285
01286 extern double GEOS_DLL GEOSProject(const GEOSGeometry *g,
01287 const GEOSGeometry* p);
01288
01289
01290
01291 extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry *g,
01292 double d);
01293
01294 extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry *g,
01295 const GEOSGeometry* p);
01296
01297 extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized(const GEOSGeometry *g,
01298 double d);
01299
01300
01301
01302
01303
01304
01305
01306
01307
01308 extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g,
01309 double width, int quadsegs);
01310
01311
01312 extern GEOSBufferParams GEOS_DLL *GEOSBufferParams_create();
01313 extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
01314
01315
01316 extern int GEOS_DLL GEOSBufferParams_setEndCapStyle(
01317 GEOSBufferParams* p,
01318 int style);
01319
01320
01321 extern int GEOS_DLL GEOSBufferParams_setJoinStyle(
01322 GEOSBufferParams* p,
01323 int joinStyle);
01324
01325
01326 extern int GEOS_DLL GEOSBufferParams_setMitreLimit(
01327 GEOSBufferParams* p,
01328 double mitreLimit);
01329
01330
01331 extern int GEOS_DLL GEOSBufferParams_setQuadrantSegments(
01332 GEOSBufferParams* p,
01333 int quadSegs);
01334
01335
01336
01337 extern int GEOS_DLL GEOSBufferParams_setSingleSided(
01338 GEOSBufferParams* p,
01339 int singleSided);
01340
01341
01342 extern GEOSGeometry GEOS_DLL *GEOSBufferWithParams(
01343 const GEOSGeometry* g,
01344 const GEOSBufferParams* p,
01345 double width);
01346
01347
01348 extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle(const GEOSGeometry* g,
01349 double width, int quadsegs, int endCapStyle, int joinStyle,
01350 double mitreLimit);
01351
01352
01353
01354 extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer(const GEOSGeometry* g,
01355 double width, int quadsegs, int joinStyle, double mitreLimit,
01356 int leftSide);
01357
01358
01359
01360
01361
01362
01363
01364
01365 extern GEOSGeometry GEOS_DLL *GEOSOffsetCurve(const GEOSGeometry* g,
01366 double width, int quadsegs, int joinStyle, double mitreLimit);
01367
01368
01369
01370
01371
01372
01373
01374
01375
01376 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint(GEOSCoordSequence* s);
01377 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPoint();
01378 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing(GEOSCoordSequence* s);
01379 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLineString(GEOSCoordSequence* s);
01380 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyLineString();
01381
01382
01383
01384
01385
01386
01387 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPolygon();
01388 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPolygon(GEOSGeometry* shell,
01389 GEOSGeometry** holes, unsigned int nholes);
01390 extern GEOSGeometry GEOS_DLL *GEOSGeom_createCollection(int type,
01391 GEOSGeometry* *geoms, unsigned int ngeoms);
01392 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyCollection(int type);
01393
01394 extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g);
01395
01396
01397
01398
01399
01400
01401
01402 extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
01403
01404
01405
01406
01407
01408
01409
01410 extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g);
01411 extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2);
01412 extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g);
01413 extern GEOSGeometry GEOS_DLL *GEOSDifference(const GEOSGeometry* g1, const GEOSGeometry* g2);
01414 extern GEOSGeometry GEOS_DLL *GEOSSymDifference(const GEOSGeometry* g1, const GEOSGeometry* g2);
01415 extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g);
01416 extern GEOSGeometry GEOS_DLL *GEOSUnion(const GEOSGeometry* g1, const GEOSGeometry* g2);
01417 extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(const GEOSGeometry* g);
01418
01419
01420 extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded(const GEOSGeometry* g);
01421 extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface(const GEOSGeometry* g);
01422 extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g);
01423 extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g);
01424 extern GEOSGeometry GEOS_DLL *GEOSClipByRect(const GEOSGeometry* g, double xmin, double ymin, double xmax, double ymax);
01425
01426
01427
01428
01429
01430 extern GEOSGeometry GEOS_DLL *GEOSPolygonize(const GEOSGeometry * const geoms[], unsigned int ngeoms);
01431 extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges(const GEOSGeometry * const geoms[], unsigned int ngeoms);
01432
01433
01434
01435
01436
01437
01438
01439
01440
01441
01442
01443
01444
01445
01446
01447
01448
01449
01450
01451
01452
01453
01454
01455
01456
01457
01458
01459 extern GEOSGeometry GEOS_DLL *GEOSPolygonize_full(const GEOSGeometry* input,
01460 GEOSGeometry** cuts, GEOSGeometry** dangles, GEOSGeometry** invalid);
01461
01462 extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g);
01463 extern GEOSGeometry GEOS_DLL *GEOSSimplify(const GEOSGeometry* g, double tolerance);
01464 extern GEOSGeometry GEOS_DLL *GEOSTopologyPreserveSimplify(const GEOSGeometry* g,
01465 double tolerance);
01466
01467
01468
01469
01470
01471
01472 extern GEOSGeometry GEOS_DLL *GEOSGeom_extractUniquePoints(
01473 const GEOSGeometry* g);
01474
01475
01476
01477
01478
01479
01480
01481
01482
01483
01484
01485
01486 extern GEOSGeometry GEOS_DLL *GEOSSharedPaths(const GEOSGeometry* g1,
01487 const GEOSGeometry* g2);
01488
01489
01490
01491
01492
01493 extern GEOSGeometry GEOS_DLL *GEOSSnap(const GEOSGeometry* g1,
01494 const GEOSGeometry* g2, double tolerance);
01495
01496
01497
01498
01499
01500
01501
01502
01503
01504
01505
01506 extern GEOSGeometry GEOS_DLL * GEOSDelaunayTriangulation(
01507 const GEOSGeometry *g,
01508 double tolerance,
01509 int onlyEdges);
01510
01511
01512
01513
01514
01515
01516
01517
01518
01519
01520
01521
01522
01523
01524 extern GEOSGeometry GEOS_DLL * GEOSVoronoiDiagram(
01525 const GEOSGeometry *g,
01526 const GEOSGeometry *env,
01527 double tolerance,
01528 int onlyEdges);
01529
01530
01531
01532
01533
01534
01535
01536 extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2);
01537 extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2);
01538 extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2);
01539 extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2);
01540 extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
01541 extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2);
01542 extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2);
01543 extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2);
01544 extern char GEOS_DLL GEOSEqualsExact(const GEOSGeometry* g1, const GEOSGeometry* g2, double tolerance);
01545 extern char GEOS_DLL GEOSCovers(const GEOSGeometry* g1, const GEOSGeometry* g2);
01546 extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g2);
01547
01548
01549
01550
01551
01552
01553
01554
01555
01556
01557 extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g);
01558
01559 extern void GEOS_DLL GEOSPreparedGeom_destroy(const GEOSPreparedGeometry* g);
01560
01561 extern char GEOS_DLL GEOSPreparedContains(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
01562 extern char GEOS_DLL GEOSPreparedContainsProperly(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
01563 extern char GEOS_DLL GEOSPreparedCoveredBy(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
01564 extern char GEOS_DLL GEOSPreparedCovers(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
01565 extern char GEOS_DLL GEOSPreparedCrosses(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
01566 extern char GEOS_DLL GEOSPreparedDisjoint(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
01567 extern char GEOS_DLL GEOSPreparedIntersects(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
01568 extern char GEOS_DLL GEOSPreparedOverlaps(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
01569 extern char GEOS_DLL GEOSPreparedTouches(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
01570 extern char GEOS_DLL GEOSPreparedWithin(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
01571
01572
01573
01574
01575
01576
01577
01578
01579
01580
01581
01582 extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity);
01583 extern void GEOS_DLL GEOSSTRtree_insert(GEOSSTRtree *tree,
01584 const GEOSGeometry *g,
01585 void *item);
01586 extern void GEOS_DLL GEOSSTRtree_query(GEOSSTRtree *tree,
01587 const GEOSGeometry *g,
01588 GEOSQueryCallback callback,
01589 void *userdata);
01590 extern void GEOS_DLL GEOSSTRtree_iterate(GEOSSTRtree *tree,
01591 GEOSQueryCallback callback,
01592 void *userdata);
01593 extern char GEOS_DLL GEOSSTRtree_remove(GEOSSTRtree *tree,
01594 const GEOSGeometry *g,
01595 void *item);
01596 extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
01597
01598
01599
01600
01601
01602
01603
01604
01605 extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g);
01606 extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g);
01607 extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g);
01608 extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g);
01609 extern char GEOS_DLL GEOSisClosed(const GEOSGeometry *g);
01610
01611
01612
01613
01614
01615
01616
01617
01618 extern char GEOS_DLL GEOSRelatePattern(const GEOSGeometry* g1, const GEOSGeometry* g2, const char *pat);
01619
01620
01621 extern char GEOS_DLL *GEOSRelate(const GEOSGeometry* g1, const GEOSGeometry* g2);
01622
01623
01624 extern char GEOS_DLL GEOSRelatePatternMatch(const char *mat, const char *pat);
01625
01626
01627 extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(const GEOSGeometry* g1,
01628 const GEOSGeometry* g2,
01629 int bnr);
01630
01631
01632
01633
01634
01635
01636
01637
01638 extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g);
01639
01640
01641 extern char GEOS_DLL *GEOSisValidReason(const GEOSGeometry *g);
01642
01643
01644
01645
01646
01647
01648 extern char GEOS_DLL GEOSisValidDetail(const GEOSGeometry* g,
01649 int flags,
01650 char** reason, GEOSGeometry** location);
01651
01652
01653
01654
01655
01656
01657
01658
01659 extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g);
01660
01661
01662 extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g);
01663
01664
01665 extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g);
01666
01667 extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
01668
01669
01670
01671
01672
01673
01674
01675 extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
01676
01677
01678
01679
01680
01681
01682
01683
01684
01685 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(const GEOSGeometry* g, int n);
01686
01687
01688 extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
01689
01690
01691 extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g);
01692
01693
01694 extern int GEOS_DLL GEOSGeomGetNumPoints(const GEOSGeometry* g);
01695
01696
01697 extern int GEOS_DLL GEOSGeomGetX(const GEOSGeometry *g, double *x);
01698 extern int GEOS_DLL GEOSGeomGetY(const GEOSGeometry *g, double *y);
01699
01700
01701
01702
01703
01704
01705 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(const GEOSGeometry* g, int n);
01706
01707
01708
01709
01710
01711
01712 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(const GEOSGeometry* g);
01713
01714
01715 extern int GEOS_DLL GEOSGetNumCoordinates(const GEOSGeometry* g);
01716
01717
01718
01719
01720
01721 extern const GEOSCoordSequence GEOS_DLL *GEOSGeom_getCoordSeq(const GEOSGeometry* g);
01722
01723
01724
01725
01726 extern int GEOS_DLL GEOSGeom_getDimensions(const GEOSGeometry* g);
01727
01728
01729
01730
01731 extern int GEOS_DLL GEOSGeom_getCoordinateDimension(const GEOSGeometry* g);
01732
01733
01734
01735
01736
01737 extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(const GEOSGeometry *g, int n);
01738 extern GEOSGeometry GEOS_DLL *GEOSGeomGetStartPoint(const GEOSGeometry *g);
01739 extern GEOSGeometry GEOS_DLL *GEOSGeomGetEndPoint(const GEOSGeometry *g);
01740
01741
01742
01743
01744
01745
01746
01747
01748 extern int GEOS_DLL GEOSArea(const GEOSGeometry* g, double *area);
01749 extern int GEOS_DLL GEOSLength(const GEOSGeometry* g, double *length);
01750 extern int GEOS_DLL GEOSDistance(const GEOSGeometry* g1, const GEOSGeometry* g2,
01751 double *dist);
01752 extern int GEOS_DLL GEOSHausdorffDistance(const GEOSGeometry *g1,
01753 const GEOSGeometry *g2, double *dist);
01754 extern int GEOS_DLL GEOSHausdorffDistanceDensify(const GEOSGeometry *g1,
01755 const GEOSGeometry *g2, double densifyFrac, double *dist);
01756 extern int GEOS_DLL GEOSGeomGetLength(const GEOSGeometry *g, double *length);
01757
01758
01759
01760
01761 extern GEOSCoordSequence GEOS_DLL *GEOSNearestPoints(
01762 const GEOSGeometry* g1, const GEOSGeometry* g2);
01763
01764
01765
01766
01767
01768
01769
01770
01771
01772
01773
01774
01775
01776
01777
01778
01779 extern int GEOS_DLL GEOSOrientationIndex(double Ax, double Ay, double Bx, double By,
01780 double Px, double Py);
01781
01782
01783
01784
01785
01786
01787
01788
01789 extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create();
01790 extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
01791 extern GEOSGeometry GEOS_DLL *GEOSWKTReader_read(GEOSWKTReader* reader, const char *wkt);
01792
01793
01794 extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create();
01795 extern void GEOS_DLL GEOSWKTWriter_destroy(GEOSWKTWriter* writer);
01796 extern char GEOS_DLL *GEOSWKTWriter_write(GEOSWKTWriter* writer, const GEOSGeometry* g);
01797 extern void GEOS_DLL GEOSWKTWriter_setTrim(GEOSWKTWriter *writer, char trim);
01798 extern void GEOS_DLL GEOSWKTWriter_setRoundingPrecision(GEOSWKTWriter *writer, int precision);
01799 extern void GEOS_DLL GEOSWKTWriter_setOutputDimension(GEOSWKTWriter *writer, int dim);
01800 extern int GEOS_DLL GEOSWKTWriter_getOutputDimension(GEOSWKTWriter *writer);
01801 extern void GEOS_DLL GEOSWKTWriter_setOld3D(GEOSWKTWriter *writer, int useOld3D);
01802
01803
01804 extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create();
01805 extern void GEOS_DLL GEOSWKBReader_destroy(GEOSWKBReader* reader);
01806 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_read(GEOSWKBReader* reader, const unsigned char *wkb, size_t size);
01807 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_readHEX(GEOSWKBReader* reader, const unsigned char *hex, size_t size);
01808
01809
01810 extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create();
01811 extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
01812
01813
01814 extern unsigned char GEOS_DLL *GEOSWKBWriter_write(GEOSWKBWriter* writer, const GEOSGeometry* g, size_t *size);
01815 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(GEOSWKBWriter* writer, const GEOSGeometry* g, size_t *size);
01816
01817
01818
01819
01820
01821 extern int GEOS_DLL GEOSWKBWriter_getOutputDimension(const GEOSWKBWriter* writer);
01822 extern void GEOS_DLL GEOSWKBWriter_setOutputDimension(GEOSWKBWriter* writer, int newDimension);
01823
01824
01825
01826
01827
01828 extern int GEOS_DLL GEOSWKBWriter_getByteOrder(const GEOSWKBWriter* writer);
01829 extern void GEOS_DLL GEOSWKBWriter_setByteOrder(GEOSWKBWriter* writer, int byteOrder);
01830
01831
01832
01833
01834 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(const GEOSWKBWriter* writer);
01835 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(GEOSWKBWriter* writer, const char writeSRID);
01836
01837
01838
01839
01840
01841 extern void GEOS_DLL GEOSFree(void *buffer);
01842
01843 #endif
01844
01845
01846 #ifdef __cplusplus
01847 }
01848 #endif
01849
01850 #endif