|
LWT_BE_IFACE * | lwt_CreateBackendIface (const LWT_BE_DATA *data) |
| Create a new backend interface. More...
|
|
void | lwt_BackendIfaceRegisterCallbacks (LWT_BE_IFACE *iface, const LWT_BE_CALLBACKS *cb) |
| Register backend callbacks into the opaque iface handler. More...
|
|
void | lwt_FreeBackendIface (LWT_BE_IFACE *iface) |
| Release memory associated with an LWT_BE_IFACE. More...
|
|
const char * | lwt_be_lastErrorMessage (const LWT_BE_IFACE *be) |
|
LWT_BE_TOPOLOGY * | lwt_be_loadTopologyByName (LWT_BE_IFACE *be, const char *name) |
|
static int | lwt_be_topoGetSRID (LWT_TOPOLOGY *topo) |
|
static double | lwt_be_topoGetPrecision (LWT_TOPOLOGY *topo) |
|
static int | lwt_be_topoHasZ (LWT_TOPOLOGY *topo) |
|
int | lwt_be_freeTopology (LWT_TOPOLOGY *topo) |
|
LWT_ISO_NODE * | lwt_be_getNodeById (LWT_TOPOLOGY *topo, const LWT_ELEMID *ids, int *numelems, int fields) |
|
LWT_ISO_NODE * | lwt_be_getNodeWithinDistance2D (LWT_TOPOLOGY *topo, LWPOINT *pt, double dist, int *numelems, int fields, int limit) |
|
static LWT_ISO_NODE * | lwt_be_getNodeWithinBox2D (const LWT_TOPOLOGY *topo, const GBOX *box, int *numelems, int fields, int limit) |
|
static LWT_ISO_EDGE * | lwt_be_getEdgeWithinBox2D (const LWT_TOPOLOGY *topo, const GBOX *box, int *numelems, int fields, int limit) |
|
static LWT_ISO_FACE * | lwt_be_getFaceWithinBox2D (const LWT_TOPOLOGY *topo, const GBOX *box, int *numelems, int fields, int limit) |
|
int | lwt_be_insertNodes (LWT_TOPOLOGY *topo, LWT_ISO_NODE *node, int numelems) |
|
static int | lwt_be_insertFaces (LWT_TOPOLOGY *topo, LWT_ISO_FACE *face, int numelems) |
|
static int | lwt_be_deleteFacesById (const LWT_TOPOLOGY *topo, const LWT_ELEMID *ids, int numelems) |
|
static int | lwt_be_deleteNodesById (const LWT_TOPOLOGY *topo, const LWT_ELEMID *ids, int numelems) |
|
LWT_ELEMID | lwt_be_getNextEdgeId (LWT_TOPOLOGY *topo) |
|
LWT_ISO_EDGE * | lwt_be_getEdgeById (LWT_TOPOLOGY *topo, const LWT_ELEMID *ids, int *numelems, int fields) |
|
static LWT_ISO_FACE * | lwt_be_getFaceById (LWT_TOPOLOGY *topo, const LWT_ELEMID *ids, int *numelems, int fields) |
|
static LWT_ISO_EDGE * | lwt_be_getEdgeByNode (LWT_TOPOLOGY *topo, const LWT_ELEMID *ids, int *numelems, int fields) |
|
static LWT_ISO_EDGE * | lwt_be_getEdgeByFace (LWT_TOPOLOGY *topo, const LWT_ELEMID *ids, int *numelems, int fields, const GBOX *box) |
|
static LWT_ISO_NODE * | lwt_be_getNodeByFace (LWT_TOPOLOGY *topo, const LWT_ELEMID *ids, int *numelems, int fields, const GBOX *box) |
|
LWT_ISO_EDGE * | lwt_be_getEdgeWithinDistance2D (LWT_TOPOLOGY *topo, LWPOINT *pt, double dist, int *numelems, int fields, int limit) |
|
int | lwt_be_insertEdges (LWT_TOPOLOGY *topo, LWT_ISO_EDGE *edge, int numelems) |
|
int | lwt_be_updateEdges (LWT_TOPOLOGY *topo, const LWT_ISO_EDGE *sel_edge, int sel_fields, const LWT_ISO_EDGE *upd_edge, int upd_fields, const LWT_ISO_EDGE *exc_edge, int exc_fields) |
|
static int | lwt_be_updateNodes (LWT_TOPOLOGY *topo, const LWT_ISO_NODE *sel_node, int sel_fields, const LWT_ISO_NODE *upd_node, int upd_fields, const LWT_ISO_NODE *exc_node, int exc_fields) |
|
static int | lwt_be_updateFacesById (LWT_TOPOLOGY *topo, const LWT_ISO_FACE *faces, int numfaces) |
|
static int | lwt_be_updateEdgesById (LWT_TOPOLOGY *topo, const LWT_ISO_EDGE *edges, int numedges, int upd_fields) |
|
static int | lwt_be_updateNodesById (LWT_TOPOLOGY *topo, const LWT_ISO_NODE *nodes, int numnodes, int upd_fields) |
|
int | lwt_be_deleteEdges (LWT_TOPOLOGY *topo, const LWT_ISO_EDGE *sel_edge, int sel_fields) |
|
LWT_ELEMID | lwt_be_getFaceContainingPoint (LWT_TOPOLOGY *topo, LWPOINT *pt) |
|
int | lwt_be_updateTopoGeomEdgeSplit (LWT_TOPOLOGY *topo, LWT_ELEMID split_edge, LWT_ELEMID new_edge1, LWT_ELEMID new_edge2) |
|
static int | lwt_be_updateTopoGeomFaceSplit (LWT_TOPOLOGY *topo, LWT_ELEMID split_face, LWT_ELEMID new_face1, LWT_ELEMID new_face2) |
|
static int | lwt_be_checkTopoGeomRemEdge (LWT_TOPOLOGY *topo, LWT_ELEMID edge_id, LWT_ELEMID face_left, LWT_ELEMID face_right) |
|
static int | lwt_be_checkTopoGeomRemNode (LWT_TOPOLOGY *topo, LWT_ELEMID node_id, LWT_ELEMID eid1, LWT_ELEMID eid2) |
|
static int | lwt_be_updateTopoGeomFaceHeal (LWT_TOPOLOGY *topo, LWT_ELEMID face1, LWT_ELEMID face2, LWT_ELEMID newface) |
|
static int | lwt_be_updateTopoGeomEdgeHeal (LWT_TOPOLOGY *topo, LWT_ELEMID edge1, LWT_ELEMID edge2, LWT_ELEMID newedge) |
|
static LWT_ELEMID * | lwt_be_getRingEdges (LWT_TOPOLOGY *topo, LWT_ELEMID edge, int *numedges, int limit) |
|
int | lwt_be_ExistsCoincidentNode (LWT_TOPOLOGY *topo, LWPOINT *pt) |
|
int | lwt_be_ExistsEdgeIntersectingPoint (LWT_TOPOLOGY *topo, LWPOINT *pt) |
|
static LWGEOM * | _lwt_toposnap (LWGEOM *src, LWGEOM *tgt, double tol) |
|
static void | _lwt_release_faces (LWT_ISO_FACE *faces, int num_faces) |
|
static void | _lwt_release_edges (LWT_ISO_EDGE *edges, int num_edges) |
|
static void | _lwt_release_nodes (LWT_ISO_NODE *nodes, int num_nodes) |
|
LWT_TOPOLOGY * | lwt_LoadTopology (LWT_BE_IFACE *iface, const char *name) |
| Loads an existing topology by name from the database. More...
|
|
void | lwt_FreeTopology (LWT_TOPOLOGY *topo) |
| Release memory associated with an LWT_TOPOLOGY. More...
|
|
static LWT_ELEMID | _lwt_AddIsoNode (LWT_TOPOLOGY *topo, LWT_ELEMID face, LWPOINT *pt, int skipISOChecks, int checkFace) |
|
LWT_ELEMID | lwt_AddIsoNode (LWT_TOPOLOGY *topo, LWT_ELEMID face, LWPOINT *pt, int skipISOChecks) |
| Add an isolated node. More...
|
|
static int | _lwt_CheckEdgeCrossing (LWT_TOPOLOGY *topo, LWT_ELEMID start_node, LWT_ELEMID end_node, const LWLINE *geom, LWT_ELEMID myself) |
|
LWT_ELEMID | lwt_AddIsoEdge (LWT_TOPOLOGY *topo, LWT_ELEMID startNode, LWT_ELEMID endNode, const LWLINE *geom) |
| Add an isolated edge connecting two existing isolated nodes. More...
|
|
static LWCOLLECTION * | _lwt_EdgeSplit (LWT_TOPOLOGY *topo, LWT_ELEMID edge, LWPOINT *pt, int skipISOChecks, LWT_ISO_EDGE **oldedge) |
|
LWT_ELEMID | lwt_ModEdgeSplit (LWT_TOPOLOGY *topo, LWT_ELEMID edge, LWPOINT *pt, int skipISOChecks) |
| Split an edge by a node, modifying the original edge and adding a new one. More...
|
|
LWT_ELEMID | lwt_NewEdgesSplit (LWT_TOPOLOGY *topo, LWT_ELEMID edge, LWPOINT *pt, int skipISOChecks) |
| Split an edge by a node, replacing it with two new edges. More...
|
|
static int | _lwt_FirstDistinctVertex2D (const POINTARRAY *pa, POINT2D *ref, int from, int dir, POINT2D *op) |
|
static int | _lwt_InitEdgeEndByLine (edgeend *fee, edgeend *lee, LWLINE *edge, POINT2D *fp, POINT2D *lp) |
|
static int | _lwt_FindAdjacentEdges (LWT_TOPOLOGY *topo, LWT_ELEMID node, edgeend *data, edgeend *other, int myedge_id) |
|
static int | _lwt_GetInteriorEdgePoint (const LWLINE *edge, POINT2D *ip) |
|
static LWPOLY * | _lwt_MakeRingShell (LWT_TOPOLOGY *topo, LWT_ELEMID *signed_edge_ids, int num_signed_edge_ids) |
|
static LWT_ELEMID | _lwt_AddFaceSplit (LWT_TOPOLOGY *topo, LWT_ELEMID sedge, LWT_ELEMID face, int mbr_only) |
|
static LWT_ELEMID | _lwt_AddEdge (LWT_TOPOLOGY *topo, LWT_ELEMID start_node, LWT_ELEMID end_node, LWLINE *geom, int skipChecks, int modFace) |
|
LWT_ELEMID | lwt_AddEdgeModFace (LWT_TOPOLOGY *topo, LWT_ELEMID start_node, LWT_ELEMID end_node, LWLINE *geom, int skipChecks) |
| Add a new edge possibly splitting a face (modifying it) More...
|
|
LWT_ELEMID | lwt_AddEdgeNewFaces (LWT_TOPOLOGY *topo, LWT_ELEMID start_node, LWT_ELEMID end_node, LWLINE *geom, int skipChecks) |
| Add a new edge possibly splitting a face (replacing with two new faces) More...
|
|
static LWGEOM * | _lwt_FaceByEdges (LWT_TOPOLOGY *topo, LWT_ISO_EDGE *edges, int numfaceedges) |
|
LWGEOM * | lwt_GetFaceGeometry (LWT_TOPOLOGY *topo, LWT_ELEMID faceid) |
| Return the geometry of a face. More...
|
|
static int | _lwt_FindNextRingEdge (const POINTARRAY *ring, int from, const LWT_ISO_EDGE *edges, int numedges) |
|
static void | _lwt_ReverseElemidArray (LWT_ELEMID *ary, int from, int to) |
|
static void | _lwt_RotateElemidArray (LWT_ELEMID *ary, int from, int to, int rotidx) |
|
int | lwt_GetFaceEdges (LWT_TOPOLOGY *topo, LWT_ELEMID face_id, LWT_ELEMID **out) |
| Return the list of directed edges bounding a face. More...
|
|
int | lwt_ChangeEdgeGeom (LWT_TOPOLOGY *topo, LWT_ELEMID edge_id, LWLINE *geom) |
| Changes the shape of an edge without affecting the topology structure. More...
|
|
static LWT_ISO_NODE * | _lwt_GetIsoNode (LWT_TOPOLOGY *topo, LWT_ELEMID nid) |
|
int | lwt_MoveIsoNode (LWT_TOPOLOGY *topo, LWT_ELEMID nid, LWPOINT *pt) |
| Move an isolated node. More...
|
|
int | lwt_RemoveIsoNode (LWT_TOPOLOGY *topo, LWT_ELEMID nid) |
| Remove an isolated node. More...
|
|
int | lwt_RemIsoEdge (LWT_TOPOLOGY *topo, LWT_ELEMID id) |
| Remove an isolated edge. More...
|
|
static int | _lwt_UpdateEdgeFaceRef (LWT_TOPOLOGY *topo, LWT_ELEMID of, LWT_ELEMID nf) |
|
static int | _lwt_UpdateNodeFaceRef (LWT_TOPOLOGY *topo, LWT_ELEMID of, LWT_ELEMID nf) |
|
static LWT_ELEMID | _lwt_RemEdge (LWT_TOPOLOGY *topo, LWT_ELEMID edge_id, int modFace) |
|
LWT_ELEMID | lwt_RemEdgeModFace (LWT_TOPOLOGY *topo, LWT_ELEMID edge_id) |
| Remove an edge, possibly merging two faces (replacing one with the other) More...
|
|
LWT_ELEMID | lwt_RemEdgeNewFace (LWT_TOPOLOGY *topo, LWT_ELEMID edge_id) |
| Remove an edge, possibly merging two faces (replacing both with a new one) More...
|
|
static LWT_ELEMID | _lwt_HealEdges (LWT_TOPOLOGY *topo, LWT_ELEMID eid1, LWT_ELEMID eid2, int modEdge) |
|
LWT_ELEMID | lwt_ModEdgeHeal (LWT_TOPOLOGY *topo, LWT_ELEMID e1, LWT_ELEMID e2) |
| Merge two edges, modifying the first and deleting the second. More...
|
|
LWT_ELEMID | lwt_NewEdgeHeal (LWT_TOPOLOGY *topo, LWT_ELEMID e1, LWT_ELEMID e2) |
| Merge two edges, replacing both with a new one. More...
|
|
LWT_ELEMID | lwt_GetNodeByPoint (LWT_TOPOLOGY *topo, LWPOINT *pt, double tol) |
| Retrieve the id of a node at a point location. More...
|
|
LWT_ELEMID | lwt_GetEdgeByPoint (LWT_TOPOLOGY *topo, LWPOINT *pt, double tol) |
| Find the edge-id of an edge that intersects a given point. More...
|
|
LWT_ELEMID | lwt_GetFaceByPoint (LWT_TOPOLOGY *topo, LWPOINT *pt, double tol) |
| Find the face-id of a face containing a given point. More...
|
|
static double | _lwt_minToleranceDouble (double d) |
|
static double | _lwt_minTolerance (LWGEOM *g) |
|
static int | compare_scored_pointer (const void *si1, const void *si2) |
|
static LWT_ELEMID | _lwt_AddPoint (LWT_TOPOLOGY *topo, LWPOINT *point, double tol, int findFace, int *moved) |
|
LWT_ELEMID | lwt_AddPoint (LWT_TOPOLOGY *topo, LWPOINT *point, double tol) |
| Adds a point to the topology. More...
|
|
static LWT_ELEMID | _lwt_GetEqualEdge (LWT_TOPOLOGY *topo, LWLINE *edge) |
|
static LWT_ELEMID | _lwt_AddLineEdge (LWT_TOPOLOGY *topo, LWLINE *edge, double tol, int handleFaceSplit) |
|
static LWGEOM * | _lwt_split_by_nodes (const LWGEOM *g, const LWGEOM *nodes) |
|
static LWT_ELEMID * | _lwt_AddLine (LWT_TOPOLOGY *topo, LWLINE *line, double tol, int *nedges, int handleFaceSplit) |
|
LWT_ELEMID * | lwt_AddLine (LWT_TOPOLOGY *topo, LWLINE *line, double tol, int *nedges) |
| Adds a linestring to the topology. More...
|
|
LWT_ELEMID * | lwt_AddLineNoFace (LWT_TOPOLOGY *topo, LWLINE *line, double tol, int *nedges) |
| Adds a linestring to the topology without determining generated faces. More...
|
|
LWT_ELEMID * | lwt_AddPolygon (LWT_TOPOLOGY *topo, LWPOLY *poly, double tol, int *nfaces) |
| Adds a polygon to the topology. More...
|
|
static int | compare_iso_edges_by_id (const void *si1, const void *si2) |
|
static LWT_ISO_EDGE * | _lwt_getIsoEdgeById (LWT_ISO_EDGE_TABLE *tab, LWT_ELEMID id) |
|
static int | _lwt_EdgeRingIterator_next (LWT_EDGERING_POINT_ITERATOR *it, POINT2D *pt) |
|
static LWT_EDGERING_POINT_ITERATOR * | _lwt_EdgeRingIterator_begin (LWT_EDGERING *er) |
|
static int | _lwt_FetchNextUnvisitedEdge (__attribute__((__unused__)) LWT_TOPOLOGY *topo, LWT_ISO_EDGE_TABLE *etab, int from) |
|
static LWT_ISO_EDGE * | _lwt_FetchAllEdges (LWT_TOPOLOGY *topo, int *numedges) |
|
static int | _lwt_UpdateEdgeRingSideFace (LWT_TOPOLOGY *topo, LWT_EDGERING *ring, LWT_ELEMID face) |
|
static LWT_EDGERING * | _lwt_BuildEdgeRing (__attribute__((__unused__)) LWT_TOPOLOGY *topo, LWT_ISO_EDGE_TABLE *edges, LWT_ISO_EDGE *edge, int side) |
|
static double | _lwt_EdgeRingSignedArea (LWT_EDGERING_POINT_ITERATOR *it) |
|
static int | _lwt_EdgeRingIsCCW (LWT_EDGERING *ring) |
|
static int | _lwt_EdgeRingCrossingCount (const POINT2D *p, LWT_EDGERING_POINT_ITERATOR *it) |
|
static int | _lwt_EdgeRingContainsPoint (LWT_EDGERING *ring, POINT2D *p) |
|
static GBOX * | _lwt_EdgeRingGetBbox (LWT_EDGERING *ring) |
|
static LWT_ELEMID | _lwt_EdgeRingGetFace (LWT_EDGERING *ring) |
|
static int | _lwt_RegisterFaceOnEdgeSide (LWT_TOPOLOGY *topo, LWT_ISO_EDGE *edge, int side, LWT_ISO_EDGE_TABLE *edges, LWT_EDGERING_ARRAY *holes, LWT_EDGERING_ARRAY *shells, LWT_ELEMID *registered) |
|
static void | _lwt_AccumulateCanditates (void *item, void *userdata) |
|
static LWT_ELEMID | _lwt_FindFaceContainingRing (LWT_TOPOLOGY *topo, LWT_EDGERING *ring, LWT_EDGERING_ARRAY *shells) |
|
static int | _lwt_CheckFacesExist (LWT_TOPOLOGY *topo) |
|
int | lwt_Polygonize (LWT_TOPOLOGY *topo) |
|