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 #ifndef GEOS_C_H_INCLUDED
00030 #define GEOS_C_H_INCLUDED
00031
00032 #ifndef __cplusplus
00033 # include <stddef.h>
00034 #else
00035 # include <cstddef>
00036 using std::size_t;
00037 #endif
00038
00039 #ifdef __cplusplus
00040 extern "C" {
00041 #endif
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054 #if defined(_MSC_VER)
00055 #include <geos/version.h>
00056 #define GEOS_CAPI_VERSION_MAJOR 1
00057 #define GEOS_CAPI_VERSION_MINOR 6
00058 #define GEOS_CAPI_VERSION_PATCH 1
00059 #define GEOS_CAPI_VERSION "3.2.1-CAPI-1.6.1"
00060 #else
00061 #ifndef GEOS_VERSION_MAJOR
00062 #define GEOS_VERSION_MAJOR 3
00063 #endif
00064 #ifndef GEOS_VERSION_MINOR
00065 #define GEOS_VERSION_MINOR 2
00066 #endif
00067 #ifndef GEOS_VERSION_PATCH
00068 #define GEOS_VERSION_PATCH 1
00069 #endif
00070 #ifndef GEOS_VERSION
00071 #define GEOS_VERSION "3.2.1"
00072 #endif
00073 #ifndef GEOS_JTS_PORT
00074 #define GEOS_JTS_PORT "1.10.0"
00075 #endif
00076
00077 #define GEOS_CAPI_VERSION_MAJOR 1
00078 #define GEOS_CAPI_VERSION_MINOR 6
00079 #define GEOS_CAPI_VERSION_PATCH 1
00080 #define GEOS_CAPI_VERSION "3.2.1-CAPI-1.6.1"
00081 #endif
00082
00083 #define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR
00084 #define GEOS_CAPI_LAST_INTERFACE (GEOS_CAPI_VERSION_MAJOR+GEOS_CAPI_VERSION_MINOR)
00085
00086
00087
00088
00089
00090
00091
00092 typedef void (*GEOSMessageHandler)(const char *fmt, ...);
00093
00094
00095
00096
00097
00098
00099
00100 #ifndef GEOSGeometry
00101 typedef struct GEOSGeom_t GEOSGeometry;
00102 typedef struct GEOSPrepGeom_t GEOSPreparedGeometry;
00103 typedef struct GEOSCoordSeq_t GEOSCoordSequence;
00104 typedef struct GEOSSTRtree_t GEOSSTRtree;
00105 #endif
00106
00107
00108
00109
00110 typedef GEOSGeometry* GEOSGeom;
00111 typedef GEOSCoordSequence* GEOSCoordSeq;
00112
00113
00114
00115
00116
00117
00118 enum GEOSGeomTypes {
00119 GEOS_POINT,
00120 GEOS_LINESTRING,
00121 GEOS_LINEARRING,
00122 GEOS_POLYGON,
00123 GEOS_MULTIPOINT,
00124 GEOS_MULTILINESTRING,
00125 GEOS_MULTIPOLYGON,
00126 GEOS_GEOMETRYCOLLECTION
00127 };
00128
00129
00130 enum GEOSByteOrders {
00131 GEOS_WKB_XDR = 0,
00132 GEOS_WKB_NDR = 1
00133 };
00134
00135 typedef struct GEOSContextHandle_HS *GEOSContextHandle_t;
00136
00137 typedef void (*GEOSQueryCallback)(void *item, void *userdata);
00138
00139
00140
00141
00142
00143
00144
00145 #include <geos/export.h>
00146
00147 extern void GEOS_DLL initGEOS(GEOSMessageHandler notice_function,
00148 GEOSMessageHandler error_function);
00149 extern void GEOS_DLL finishGEOS(void);
00150
00151 extern GEOSContextHandle_t GEOS_DLL initGEOS_r(
00152 GEOSMessageHandler notice_function,
00153 GEOSMessageHandler error_function);
00154 extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
00155
00156 extern const char GEOS_DLL *GEOSversion();
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(const char *wkt);
00167 extern char GEOS_DLL *GEOSGeomToWKT(const GEOSGeometry* g);
00168
00169 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT_r(GEOSContextHandle_t handle,
00170 const char *wkt);
00171 extern char GEOS_DLL *GEOSGeomToWKT_r(GEOSContextHandle_t handle,
00172 const GEOSGeometry* g);
00173
00174
00175
00176
00177
00178 extern int GEOS_DLL GEOS_getWKBOutputDims();
00179 extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims);
00180
00181 extern int GEOS_DLL GEOS_getWKBOutputDims_r(GEOSContextHandle_t handle);
00182 extern int GEOS_DLL GEOS_setWKBOutputDims_r(GEOSContextHandle_t handle,
00183 int newDims);
00184
00185
00186
00187
00188
00189 extern int GEOS_DLL GEOS_getWKBByteOrder();
00190 extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder);
00191
00192 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size);
00193 extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(const GEOSGeometry* g, size_t *size);
00194
00195 extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size);
00196 extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(const GEOSGeometry* g, size_t *size);
00197
00198 extern int GEOS_DLL GEOS_getWKBByteOrder_r(GEOSContextHandle_t handle);
00199 extern int GEOS_DLL GEOS_setWKBByteOrder_r(GEOSContextHandle_t handle,
00200 int byteOrder);
00201
00202 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf_r(GEOSContextHandle_t handle,
00203 const unsigned char *wkb,
00204 size_t size);
00205 extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(GEOSContextHandle_t handle,
00206 const GEOSGeometry* g,
00207 size_t *size);
00208
00209 extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf_r(GEOSContextHandle_t handle,
00210 const unsigned char *hex,
00211 size_t size);
00212 extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(GEOSContextHandle_t handle,
00213 const GEOSGeometry* g,
00214 size_t *size);
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims);
00228
00229 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create_r(
00230 GEOSContextHandle_t handle,
00231 unsigned int size,
00232 unsigned int dims);
00233
00234
00235
00236
00237
00238 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_clone(const GEOSCoordSequence* s);
00239
00240 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_clone_r(
00241 GEOSContextHandle_t handle,
00242 const GEOSCoordSequence* s);
00243
00244
00245
00246
00247 extern void GEOS_DLL GEOSCoordSeq_destroy(GEOSCoordSequence* s);
00248
00249 extern void GEOS_DLL GEOSCoordSeq_destroy_r(GEOSContextHandle_t handle,
00250 GEOSCoordSequence* s);
00251
00252
00253
00254
00255
00256 extern int GEOS_DLL GEOSCoordSeq_setX(GEOSCoordSequence* s,
00257 unsigned int idx, double val);
00258 extern int GEOS_DLL GEOSCoordSeq_setY(GEOSCoordSequence* s,
00259 unsigned int idx, double val);
00260 extern int GEOS_DLL GEOSCoordSeq_setZ(GEOSCoordSequence* s,
00261 unsigned int idx, double val);
00262 extern int GEOS_DLL GEOSCoordSeq_setOrdinate(GEOSCoordSequence* s,
00263 unsigned int idx, unsigned int dim, double val);
00264
00265 extern int GEOS_DLL GEOSCoordSeq_setX_r(GEOSContextHandle_t handle,
00266 GEOSCoordSequence* s, unsigned int idx,
00267 double val);
00268 extern int GEOS_DLL GEOSCoordSeq_setY_r(GEOSContextHandle_t handle,
00269 GEOSCoordSequence* s, unsigned int idx,
00270 double val);
00271 extern int GEOS_DLL GEOSCoordSeq_setZ_r(GEOSContextHandle_t handle,
00272 GEOSCoordSequence* s, unsigned int idx,
00273 double val);
00274 extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(GEOSContextHandle_t handle,
00275 GEOSCoordSequence* s,
00276 unsigned int idx,
00277 unsigned int dim, double val);
00278
00279
00280
00281
00282
00283 extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
00284 unsigned int idx, double *val);
00285 extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
00286 unsigned int idx, double *val);
00287 extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s,
00288 unsigned int idx, double *val);
00289 extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
00290 unsigned int idx, unsigned int dim, double *val);
00291
00292 extern int GEOS_DLL GEOSCoordSeq_getX_r(GEOSContextHandle_t handle,
00293 const GEOSCoordSequence* s,
00294 unsigned int idx, double *val);
00295 extern int GEOS_DLL GEOSCoordSeq_getY_r(GEOSContextHandle_t handle,
00296 const GEOSCoordSequence* s,
00297 unsigned int idx, double *val);
00298 extern int GEOS_DLL GEOSCoordSeq_getZ_r(GEOSContextHandle_t handle,
00299 const GEOSCoordSequence* s,
00300 unsigned int idx, double *val);
00301 extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(GEOSContextHandle_t handle,
00302 const GEOSCoordSequence* s,
00303 unsigned int idx,
00304 unsigned int dim, double *val);
00305
00306
00307
00308
00309 extern int GEOS_DLL GEOSCoordSeq_getSize(const GEOSCoordSequence* s,
00310 unsigned int *size);
00311 extern int GEOS_DLL GEOSCoordSeq_getDimensions(const GEOSCoordSequence* s,
00312 unsigned int *dims);
00313
00314 extern int GEOS_DLL GEOSCoordSeq_getSize_r(GEOSContextHandle_t handle,
00315 const GEOSCoordSequence* s,
00316 unsigned int *size);
00317 extern int GEOS_DLL GEOSCoordSeq_getDimensions_r(GEOSContextHandle_t handle,
00318 const GEOSCoordSequence* s,
00319 unsigned int *dims);
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333 extern double GEOS_DLL GEOSProject(const GEOSGeometry *g,
00334 const GEOSGeometry* p);
00335 extern double GEOS_DLL GEOSProject_r(GEOSContextHandle_t handle,
00336 const GEOSGeometry *g,
00337 const GEOSGeometry *p);
00338
00339 extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry *g,
00340 double d);
00341 extern GEOSGeometry GEOS_DLL *GEOSInterpolate_r(GEOSContextHandle_t handle,
00342 const GEOSGeometry *g,
00343 double d);
00344
00345 extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry *g,
00346 const GEOSGeometry* p);
00347 extern double GEOS_DLL GEOSProjectNormalized_r(GEOSContextHandle_t handle,
00348 const GEOSGeometry *g,
00349 const GEOSGeometry *p);
00350
00351 extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized(const GEOSGeometry *g,
00352 double d);
00353 extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized_r(
00354 GEOSContextHandle_t handle,
00355 const GEOSGeometry *g,
00356 double d);
00357
00358
00359
00360
00361
00362
00363
00364 enum GEOSBufCapStyles {
00365 GEOSBUF_CAP_ROUND=1,
00366 GEOSBUF_CAP_FLAT=2,
00367 GEOSBUF_CAP_SQUARE=3
00368 };
00369
00370 enum GEOSBufJoinStyles {
00371 GEOSBUF_JOIN_ROUND=1,
00372 GEOSBUF_JOIN_MITRE=2,
00373 GEOSBUF_JOIN_BEVEL=3
00374 };
00375
00376
00377 extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g1,
00378 double width, int quadsegs);
00379 extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(GEOSContextHandle_t handle,
00380 const GEOSGeometry* g1,
00381 double width, int quadsegs);
00382
00383
00384 extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle(const GEOSGeometry* g1,
00385 double width, int quadsegs, int endCapStyle, int joinStyle,
00386 double mitreLimit);
00387 extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle_r(GEOSContextHandle_t handle,
00388 const GEOSGeometry* g1, double width, int quadsegs, int endCapStyle,
00389 int joinStyle, double mitreLimit);
00390
00391
00392 extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer(const GEOSGeometry* g1,
00393 double width, int quadsegs, int joinStyle, double mitreLimit,
00394 int leftSide);
00395 extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer_r(
00396 GEOSContextHandle_t handle,
00397 const GEOSGeometry* g1, double width, int quadsegs,
00398 int joinStyle, double mitreLimit, int leftSide);
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint(GEOSCoordSequence* s);
00410 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing(GEOSCoordSequence* s);
00411 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLineString(GEOSCoordSequence* s);
00412
00413 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint_r(
00414 GEOSContextHandle_t handle,
00415 GEOSCoordSequence* s);
00416 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing_r(
00417 GEOSContextHandle_t handle,
00418 GEOSCoordSequence* s);
00419 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLineString_r(
00420 GEOSContextHandle_t handle,
00421 GEOSCoordSequence* s);
00422
00423
00424
00425
00426
00427
00428 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPolygon(GEOSGeometry* shell,
00429 GEOSGeometry** holes, unsigned int nholes);
00430 extern GEOSGeometry GEOS_DLL *GEOSGeom_createCollection(int type,
00431 GEOSGeometry* *geoms, unsigned int ngeoms);
00432
00433 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPolygon_r(
00434 GEOSContextHandle_t handle,
00435 GEOSGeometry* shell,
00436 GEOSGeometry** holes,
00437 unsigned int nholes);
00438 extern GEOSGeometry GEOS_DLL *GEOSGeom_createCollection_r(
00439 GEOSContextHandle_t handle, int type,
00440 GEOSGeometry* *geoms,
00441 unsigned int ngeoms);
00442
00443 extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g);
00444
00445 extern GEOSGeometry GEOS_DLL *GEOSGeom_clone_r(GEOSContextHandle_t handle,
00446 const GEOSGeometry* g);
00447
00448
00449
00450
00451
00452
00453
00454 extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
00455
00456 extern void GEOS_DLL GEOSGeom_destroy_r(GEOSContextHandle_t handle,
00457 GEOSGeometry* g);
00458
00459
00460
00461
00462
00463
00464
00465 extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g1);
00466 extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2);
00467 extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g1);
00468 extern GEOSGeometry GEOS_DLL *GEOSDifference(const GEOSGeometry* g1, const GEOSGeometry* g2);
00469 extern GEOSGeometry GEOS_DLL *GEOSSymDifference(const GEOSGeometry* g1,
00470 const GEOSGeometry* g2);
00471 extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g1);
00472 extern GEOSGeometry GEOS_DLL *GEOSUnion(const GEOSGeometry* g1, const GEOSGeometry* g2);
00473 extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded(const GEOSGeometry* g1);
00474
00475 extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface(const GEOSGeometry* g1);
00476 extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g);
00477 extern char GEOS_DLL *GEOSRelate(const GEOSGeometry* g1, const GEOSGeometry* g2);
00478
00479 extern GEOSGeometry GEOS_DLL *GEOSEnvelope_r(GEOSContextHandle_t handle,
00480 const GEOSGeometry* g1);
00481 extern GEOSGeometry GEOS_DLL *GEOSIntersection_r(GEOSContextHandle_t handle,
00482 const GEOSGeometry* g1,
00483 const GEOSGeometry* g2);
00484 extern GEOSGeometry GEOS_DLL *GEOSConvexHull_r(GEOSContextHandle_t handle,
00485 const GEOSGeometry* g1);
00486 extern GEOSGeometry GEOS_DLL *GEOSDifference_r(GEOSContextHandle_t handle,
00487 const GEOSGeometry* g1,
00488 const GEOSGeometry* g2);
00489 extern GEOSGeometry GEOS_DLL *GEOSSymDifference_r(GEOSContextHandle_t handle,
00490 const GEOSGeometry* g1,
00491 const GEOSGeometry* g2);
00492 extern GEOSGeometry GEOS_DLL *GEOSBoundary_r(GEOSContextHandle_t handle,
00493 const GEOSGeometry* g1);
00494 extern GEOSGeometry GEOS_DLL *GEOSUnion_r(GEOSContextHandle_t handle,
00495 const GEOSGeometry* g1,
00496 const GEOSGeometry* g2);
00497 extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded_r(GEOSContextHandle_t handle, const GEOSGeometry* g1);
00498 extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface_r(GEOSContextHandle_t handle,
00499 const GEOSGeometry* g1);
00500 extern GEOSGeometry GEOS_DLL *GEOSGetCentroid_r(GEOSContextHandle_t handle,
00501 const GEOSGeometry* g);
00502 extern char GEOS_DLL *GEOSRelate_r(GEOSContextHandle_t handle,
00503 const GEOSGeometry* g1,
00504 const GEOSGeometry* g2);
00505
00506
00507
00508
00509
00510 extern GEOSGeometry GEOS_DLL *GEOSPolygonize(const GEOSGeometry * const geoms[], unsigned int ngeoms);
00511 extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges(const GEOSGeometry * const geoms[], unsigned int ngeoms);
00512
00513 extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g);
00514 extern GEOSGeometry GEOS_DLL *GEOSSimplify(const GEOSGeometry* g1, double tolerance);
00515 extern GEOSGeometry GEOS_DLL *GEOSTopologyPreserveSimplify(const GEOSGeometry* g1,
00516 double tolerance);
00517
00518 extern GEOSGeometry GEOS_DLL *GEOSPolygonize_r(GEOSContextHandle_t handle,
00519 const GEOSGeometry *const geoms[],
00520 unsigned int ngeoms);
00521 extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges_r(
00522 GEOSContextHandle_t handle,
00523 const GEOSGeometry * const geoms[],
00524 unsigned int ngeoms);
00525
00526 extern GEOSGeometry GEOS_DLL *GEOSLineMerge_r(GEOSContextHandle_t handle,
00527 const GEOSGeometry* g);
00528 extern GEOSGeometry GEOS_DLL *GEOSSimplify_r(GEOSContextHandle_t handle,
00529 const GEOSGeometry* g1,
00530 double tolerance);
00531 extern GEOSGeometry GEOS_DLL *GEOSTopologyPreserveSimplify_r(
00532 GEOSContextHandle_t handle,
00533 const GEOSGeometry* g1, double tolerance);
00534
00535
00536
00537
00538
00539
00540
00541 extern char GEOS_DLL GEOSRelatePattern(const GEOSGeometry* g1, const GEOSGeometry* g2,
00542 const char *pat);
00543 extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2);
00544 extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2);
00545 extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2);
00546 extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2);
00547 extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
00548 extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2);
00549 extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2);
00550 extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2);
00551 extern char GEOS_DLL GEOSEqualsExact(const GEOSGeometry* g1, const GEOSGeometry* g2, double tolerance);
00552
00553 extern char GEOS_DLL GEOSRelatePattern_r(GEOSContextHandle_t handle,
00554 const GEOSGeometry* g1,
00555 const GEOSGeometry* g2,
00556 const char *pat);
00557 extern char GEOS_DLL GEOSDisjoint_r(GEOSContextHandle_t handle,
00558 const GEOSGeometry* g1,
00559 const GEOSGeometry* g2);
00560 extern char GEOS_DLL GEOSTouches_r(GEOSContextHandle_t handle,
00561 const GEOSGeometry* g1,
00562 const GEOSGeometry* g2);
00563 extern char GEOS_DLL GEOSIntersects_r(GEOSContextHandle_t handle,
00564 const GEOSGeometry* g1,
00565 const GEOSGeometry* g2);
00566 extern char GEOS_DLL GEOSCrosses_r(GEOSContextHandle_t handle,
00567 const GEOSGeometry* g1,
00568 const GEOSGeometry* g2);
00569 extern char GEOS_DLL GEOSWithin_r(GEOSContextHandle_t handle,
00570 const GEOSGeometry* g1,
00571 const GEOSGeometry* g2);
00572 extern char GEOS_DLL GEOSContains_r(GEOSContextHandle_t handle,
00573 const GEOSGeometry* g1,
00574 const GEOSGeometry* g2);
00575 extern char GEOS_DLL GEOSOverlaps_r(GEOSContextHandle_t handle,
00576 const GEOSGeometry* g1,
00577 const GEOSGeometry* g2);
00578 extern char GEOS_DLL GEOSEquals_r(GEOSContextHandle_t handle,
00579 const GEOSGeometry* g1,
00580 const GEOSGeometry* g2);
00581 extern char GEOS_DLL GEOSEqualsExact_r(GEOSContextHandle_t handle,
00582 const GEOSGeometry* g1,
00583 const GEOSGeometry* g2,
00584 double tolerance);
00585
00586
00587
00588
00589
00590
00591
00592
00593
00594
00595 extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g);
00596
00597 extern void GEOS_DLL GEOSPreparedGeom_destroy(const GEOSPreparedGeometry* g);
00598
00599 extern char GEOS_DLL GEOSPreparedContains(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
00600 extern char GEOS_DLL GEOSPreparedContainsProperly(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
00601 extern char GEOS_DLL GEOSPreparedCovers(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
00602 extern char GEOS_DLL GEOSPreparedIntersects(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2);
00603
00604
00605
00606
00607 extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare_r(
00608 GEOSContextHandle_t handle,
00609 const GEOSGeometry* g);
00610
00611 extern void GEOS_DLL GEOSPreparedGeom_destroy_r(GEOSContextHandle_t handle,
00612 const GEOSPreparedGeometry* g);
00613
00614 extern char GEOS_DLL GEOSPreparedContains_r(GEOSContextHandle_t handle,
00615 const GEOSPreparedGeometry* pg1,
00616 const GEOSGeometry* g2);
00617 extern char GEOS_DLL GEOSPreparedContainsProperly_r(GEOSContextHandle_t handle,
00618 const GEOSPreparedGeometry* pg1,
00619 const GEOSGeometry* g2);
00620 extern char GEOS_DLL GEOSPreparedCovers_r(GEOSContextHandle_t handle,
00621 const GEOSPreparedGeometry* pg1,
00622 const GEOSGeometry* g2);
00623 extern char GEOS_DLL GEOSPreparedIntersects_r(GEOSContextHandle_t handle,
00624 const GEOSPreparedGeometry* pg1,
00625 const GEOSGeometry* g2);
00626
00627
00628
00629
00630
00631
00632
00633
00634
00635
00636
00637 extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity);
00638 extern void GEOS_DLL GEOSSTRtree_insert(GEOSSTRtree *tree,
00639 const GEOSGeometry *g,
00640 void *item);
00641 extern void GEOS_DLL GEOSSTRtree_query(GEOSSTRtree *tree,
00642 const GEOSGeometry *g,
00643 GEOSQueryCallback callback,
00644 void *userdata);
00645 extern void GEOS_DLL GEOSSTRtree_iterate(GEOSSTRtree *tree,
00646 GEOSQueryCallback callback,
00647 void *userdata);
00648 extern char GEOS_DLL GEOSSTRtree_remove(GEOSSTRtree *tree,
00649 const GEOSGeometry *g,
00650 void *item);
00651 extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
00652
00653
00654 extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create_r(
00655 GEOSContextHandle_t handle,
00656 size_t nodeCapacity);
00657 extern void GEOS_DLL GEOSSTRtree_insert_r(GEOSContextHandle_t handle,
00658 GEOSSTRtree *tree,
00659 const GEOSGeometry *g,
00660 void *item);
00661 extern void GEOS_DLL GEOSSTRtree_query_r(GEOSContextHandle_t handle,
00662 GEOSSTRtree *tree,
00663 const GEOSGeometry *g,
00664 GEOSQueryCallback callback,
00665 void *userdata);
00666 extern void GEOS_DLL GEOSSTRtree_iterate_r(GEOSContextHandle_t handle,
00667 GEOSSTRtree *tree,
00668 GEOSQueryCallback callback,
00669 void *userdata);
00670 extern char GEOS_DLL GEOSSTRtree_remove_r(GEOSContextHandle_t handle,
00671 GEOSSTRtree *tree,
00672 const GEOSGeometry *g,
00673 void *item);
00674 extern void GEOS_DLL GEOSSTRtree_destroy_r(GEOSContextHandle_t handle,
00675 GEOSSTRtree *tree);
00676
00677
00678
00679
00680
00681
00682
00683
00684 extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g1);
00685 extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g1);
00686 extern char GEOS_DLL *GEOSisValidReason(const GEOSGeometry *g1);
00687 extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g1);
00688 extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g1);
00689 extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g1);
00690
00691 extern char GEOS_DLL GEOSisEmpty_r(GEOSContextHandle_t handle,
00692 const GEOSGeometry* g1);
00693 extern char GEOS_DLL GEOSisValid_r(GEOSContextHandle_t handle,
00694 const GEOSGeometry* g1);
00695 extern char GEOS_DLL *GEOSisValidReason_r(GEOSContextHandle_t handle,
00696 const GEOSGeometry* g1);
00697 extern char GEOS_DLL GEOSisSimple_r(GEOSContextHandle_t handle,
00698 const GEOSGeometry* g1);
00699 extern char GEOS_DLL GEOSisRing_r(GEOSContextHandle_t handle,
00700 const GEOSGeometry* g1);
00701 extern char GEOS_DLL GEOSHasZ_r(GEOSContextHandle_t handle,
00702 const GEOSGeometry* g1);
00703
00704
00705
00706
00707
00708
00709
00710
00711 extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g1);
00712
00713 extern char GEOS_DLL *GEOSGeomType_r(GEOSContextHandle_t handle,
00714 const GEOSGeometry* g1);
00715
00716
00717 extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g1);
00718
00719 extern int GEOS_DLL GEOSGeomTypeId_r(GEOSContextHandle_t handle,
00720 const GEOSGeometry* g1);
00721
00722
00723 extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g);
00724 extern int GEOS_DLL GEOSGetSRID_r(GEOSContextHandle_t handle,
00725 const GEOSGeometry* g);
00726
00727 extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
00728 extern void GEOS_DLL GEOSSetSRID_r(GEOSContextHandle_t handle,
00729 GEOSGeometry* g, int SRID);
00730
00731
00732
00733
00734
00735
00736
00737 extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
00738
00739 extern int GEOS_DLL GEOSGetNumGeometries_r(GEOSContextHandle_t handle,
00740 const GEOSGeometry* g);
00741
00742
00743
00744
00745
00746
00747 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(const GEOSGeometry* g, int n);
00748
00749 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
00750 GEOSContextHandle_t handle,
00751 const GEOSGeometry* g, int n);
00752
00753
00754 extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g1);
00755
00756 extern int GEOS_DLL GEOSNormalize_r(GEOSContextHandle_t handle,
00757 GEOSGeometry* g1);
00758
00759
00760 extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g1);
00761
00762 extern int GEOS_DLL GEOSGetNumInteriorRings_r(GEOSContextHandle_t handle,
00763 const GEOSGeometry* g1);
00764
00765
00766
00767
00768
00769
00770 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(const GEOSGeometry* g, int n);
00771
00772 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN_r(
00773 GEOSContextHandle_t handle,
00774 const GEOSGeometry* g, int n);
00775
00776
00777
00778
00779
00780
00781 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(const GEOSGeometry* g);
00782
00783 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing_r(
00784 GEOSContextHandle_t handle,
00785 const GEOSGeometry* g);
00786
00787
00788 extern int GEOS_DLL GEOSGetNumCoordinates(const GEOSGeometry* g1);
00789
00790 extern int GEOS_DLL GEOSGetNumCoordinates_r(GEOSContextHandle_t handle,
00791 const GEOSGeometry* g1);
00792
00793
00794
00795
00796
00797 extern const GEOSCoordSequence GEOS_DLL *GEOSGeom_getCoordSeq(const GEOSGeometry* g);
00798
00799 extern const GEOSCoordSequence GEOS_DLL *GEOSGeom_getCoordSeq_r(
00800 GEOSContextHandle_t handle,
00801 const GEOSGeometry* g);
00802
00803
00804
00805
00806
00807 extern int GEOS_DLL GEOSGeom_getDimensions(const GEOSGeometry* g);
00808
00809 extern int GEOS_DLL GEOSGeom_getDimensions_r(GEOSContextHandle_t handle,
00810 const GEOSGeometry* g);
00811
00812
00813
00814
00815
00816
00817
00818
00819 extern int GEOS_DLL GEOSArea(const GEOSGeometry* g1, double *area);
00820 extern int GEOS_DLL GEOSLength(const GEOSGeometry* g1, double *length);
00821 extern int GEOS_DLL GEOSDistance(const GEOSGeometry* g1, const GEOSGeometry* g2,
00822 double *dist);
00823 extern int GEOS_DLL GEOSHausdorffDistance(const GEOSGeometry *g1,
00824 const GEOSGeometry *g2, double *dist);
00825 extern int GEOS_DLL GEOSHausdorffDistanceDensify(const GEOSGeometry *g1,
00826 const GEOSGeometry *g2, double densifyFrac, double *dist);
00827 extern int GEOS_DLL GEOSArea_r(GEOSContextHandle_t handle,
00828 const GEOSGeometry* g1, double *area);
00829 extern int GEOS_DLL GEOSLength_r(GEOSContextHandle_t handle,
00830 const GEOSGeometry* g1, double *length);
00831 extern int GEOS_DLL GEOSDistance_r(GEOSContextHandle_t handle,
00832 const GEOSGeometry* g1,
00833 const GEOSGeometry* g2, double *dist);
00834 extern int GEOS_DLL GEOSHausdorffDistance_r(GEOSContextHandle_t handle,
00835 const GEOSGeometry *g1,
00836 const GEOSGeometry *g2,
00837 double *dist);
00838 extern int GEOS_DLL GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t handle,
00839 const GEOSGeometry *g1,
00840 const GEOSGeometry *g2,
00841 double densifyFrac, double *dist);
00842
00843
00844
00845
00846
00847
00848
00849
00850 typedef struct GEOSWKTReader_t GEOSWKTReader;
00851 typedef struct GEOSWKTWriter_t GEOSWKTWriter;
00852 typedef struct GEOSWKBReader_t GEOSWKBReader;
00853 typedef struct GEOSWKBWriter_t GEOSWKBWriter;
00854
00855
00856
00857 extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create();
00858 extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
00859 extern GEOSGeometry GEOS_DLL *GEOSWKTReader_read(GEOSWKTReader* reader, const char *wkt);
00860
00861 extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create_r(
00862 GEOSContextHandle_t handle);
00863 extern void GEOS_DLL GEOSWKTReader_destroy_r(GEOSContextHandle_t handle,
00864 GEOSWKTReader* reader);
00865 extern GEOSGeometry GEOS_DLL *GEOSWKTReader_read_r(GEOSContextHandle_t handle,
00866 GEOSWKTReader* reader,
00867 const char *wkt);
00868
00869
00870 extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create();
00871 extern void GEOS_DLL GEOSWKTWriter_destroy(GEOSWKTWriter* writer);
00872 extern char GEOS_DLL *GEOSWKTWriter_write(GEOSWKTWriter* reader, const GEOSGeometry* g);
00873
00874 extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create_r(
00875 GEOSContextHandle_t handle);
00876 extern void GEOS_DLL GEOSWKTWriter_destroy_r(GEOSContextHandle_t handle,
00877 GEOSWKTWriter* writer);
00878 extern char GEOS_DLL *GEOSWKTWriter_write_r(GEOSContextHandle_t handle,
00879 GEOSWKTWriter* reader,
00880 const GEOSGeometry* g);
00881
00882
00883 extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create();
00884 extern void GEOS_DLL GEOSWKBReader_destroy(GEOSWKBReader* reader);
00885 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_read(GEOSWKBReader* reader, const unsigned char *wkb, size_t size);
00886 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_readHEX(GEOSWKBReader* reader, const unsigned char *hex, size_t size);
00887
00888 extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create_r(
00889 GEOSContextHandle_t handle);
00890 extern void GEOS_DLL GEOSWKBReader_destroy_r(GEOSContextHandle_t handle,
00891 GEOSWKBReader* reader);
00892 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_read_r(GEOSContextHandle_t handle,
00893 GEOSWKBReader* reader,
00894 const unsigned char *wkb,
00895 size_t size);
00896 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_readHEX_r(
00897 GEOSContextHandle_t handle,
00898 GEOSWKBReader* reader,
00899 const unsigned char *hex,
00900 size_t size);
00901
00902
00903 extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create();
00904 extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
00905
00906 extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create_r(
00907 GEOSContextHandle_t handle);
00908 extern void GEOS_DLL GEOSWKBWriter_destroy_r(GEOSContextHandle_t handle,
00909 GEOSWKBWriter* writer);
00910
00911
00912 extern unsigned char GEOS_DLL *GEOSWKBWriter_write(GEOSWKBWriter* writer, const GEOSGeometry* g, size_t *size);
00913 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(GEOSWKBWriter* writer, const GEOSGeometry* g, size_t *size);
00914
00915 extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
00916 GEOSContextHandle_t handle,
00917 GEOSWKBWriter* writer,
00918 const GEOSGeometry* g,
00919 size_t *size);
00920 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
00921 GEOSContextHandle_t handle,
00922 GEOSWKBWriter* writer,
00923 const GEOSGeometry* g,
00924 size_t *size);
00925
00926
00927
00928
00929
00930 extern int GEOS_DLL GEOSWKBWriter_getOutputDimension(const GEOSWKBWriter* writer);
00931 extern void GEOS_DLL GEOSWKBWriter_setOutputDimension(GEOSWKBWriter* writer, int newDimension);
00932
00933 extern int GEOS_DLL GEOSWKBWriter_getOutputDimension_r(
00934 GEOSContextHandle_t handle,
00935 const GEOSWKBWriter* writer);
00936 extern void GEOS_DLL GEOSWKBWriter_setOutputDimension_r(
00937 GEOSContextHandle_t handle,
00938 GEOSWKBWriter* writer, int newDimension);
00939
00940
00941
00942
00943
00944 extern int GEOS_DLL GEOSWKBWriter_getByteOrder(const GEOSWKBWriter* writer);
00945 extern void GEOS_DLL GEOSWKBWriter_setByteOrder(GEOSWKBWriter* writer, int byteOrder);
00946
00947 extern int GEOS_DLL GEOSWKBWriter_getByteOrder_r(GEOSContextHandle_t handle,
00948 const GEOSWKBWriter* writer);
00949 extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(GEOSContextHandle_t handle,
00950 GEOSWKBWriter* writer,
00951 int byteOrder);
00952
00953
00954
00955
00956 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(const GEOSWKBWriter* writer);
00957 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(GEOSWKBWriter* writer, const char writeSRID);
00958
00959 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID_r(GEOSContextHandle_t handle,
00960 const GEOSWKBWriter* writer);
00961 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID_r(GEOSContextHandle_t handle,
00962 GEOSWKBWriter* writer, const char writeSRID);
00963
00964
00965
00966
00967
00968
00969 extern void GEOS_DLL GEOSFree( void *buffer );
00970 extern void GEOS_DLL GEOSFree_r( GEOSContextHandle_t handle, void *buffer );
00971
00972 #ifdef __cplusplus
00973 }
00974 #endif
00975
00976 #endif