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