Classes | Functions

# cpl_quad_tree.h File Reference

`#include "cpl_port.h"`

Go to the source code of this file.

## Classes
struct | CPLRectObj
## Functions
CPLQuadTree * | CPLQuadTreeCreate (const CPLRectObj *pGlobalBounds, CPLQuadTreeGetBoundsFunc pfnGetBounds)
void | CPLQuadTreeDestroy (CPLQuadTree *hQuadtree)
void | CPLQuadTreeSetBucketCapacity (CPLQuadTree *hQuadtree, int nBucketCapacity)
int | CPLQuadTreeGetAdvisedMaxDepth (int nExpectedFeatures)
void | CPLQuadTreeSetMaxDepth (CPLQuadTree *hQuadtree, int nMaxDepth)
void | CPLQuadTreeInsert (CPLQuadTree *hQuadtree, void *hFeature)
void ** | CPLQuadTreeSearch (const CPLQuadTree *hQuadtree, const CPLRectObj *pAoi, int *pnFeatureCount)
void | CPLQuadTreeForeach (const CPLQuadTree *hQuadtree, CPLQuadTreeForeachFunc pfnForeach, void *pUserData)

## Detailed Description

Quad tree implementation.

A quadtree is a tree data structure in which each internal node has up to four children. Quadtrees are most often used to partition a two dimensional space by recursively subdividing it into four quadrants or regions

## Function Documentation

CPLQuadTree* CPLQuadTreeCreate | ( | const CPLRectObj * | pGlobalBounds,
|  | CPLQuadTreeGetBoundsFunc | pfnGetBounds |
| ) |  |  |

Create a new quadtree

Parameters:

  | pGlobalBounds | a pointer to the global extent of all the elements that will be inserted
  | pfnGetBounds | a user provided function to get the bounding box of the inserted elements

Returns:
  a newly allocated quadtree

void CPLQuadTreeDestroy | ( | CPLQuadTree * | hQuadTree | ) |

Destroy a quadtree

Parameters:

  | hQuadTree | the quad tree to destroy

void CPLQuadTreeForeach | ( | const CPLQuadTree * | hQuadTree,
|  | CPLQuadTreeForeachFunc | pfnForeach,
|  | void * | pUserData |
| ) |  |  |

Walk through the quadtree and runs the provided function on all the elements

This function is provided with the user_data argument of pfnForeach. It must return TRUE to go on the walk through the hash set, or FALSE to make it stop.

Note : the structure of the quadtree must *NOT* be modified during the walk.

Parameters:

  | hQuadTree | the quad tree
  | pfnForeach | the function called on each element.
  | pUserData | the user data provided to the function.

int CPLQuadTreeGetAdvisedMaxDepth | ( | int | nExpectedFeatures | ) |

Returns the optimal depth of a quadtree to hold nExpectedFeatures

Parameters:

  | nExpectedFeatures | the expected maximum number of elements to be inserted

Returns:
  the optimal depth of a quadtree to hold nExpectedFeatures

void CPLQuadTreeInsert | ( | CPLQuadTree * | hQuadTree,
|  | void * | hFeature |
| ) |  |  |

Insert a feature into a quadtree

Parameters:

  | hQuadTree | the quad tree
  | hFeature | the feature to insert

void** CPLQuadTreeSearch | ( | const CPLQuadTree * | hQuadTree,
|  | const CPLRectObj * | pAoi,
|  | int * | pnFeatureCount |
| ) |  |  |

Returns all the elements inserted whose bounding box intersects the provided area of interest

Parameters:

  | hQuadTree | the quad tree
  | pAoi | the pointer to the area of interest
  | pnFeatureCount | the user data provided to the function.

Returns:
  an array of features that must be freed with CPLFree

void CPLQuadTreeSetBucketCapacity | ( | CPLQuadTree * | hQuadTree,
|  | int | nBucketCapacity |
| ) |  |  |

Set the maximum capacity of a node of a quadtree. The default value is 8. Note that the maximum capacity will only be honoured if the features inserted have a point geometry. Otherwise it may be exceeded.

Parameters:

  | hQuadTree | the quad tree
  | nBucketCapacity | the maximum capactiy of a node of a quadtree

void CPLQuadTreeSetMaxDepth | ( | CPLQuadTree * | hQuadTree,
|  | int | nMaxDepth |
| ) |  |  |

Set the maximum depth of a quadtree. By default, quad trees have no maximum depth, but a maximum bucket capacity.

Parameters:

  | hQuadTree | the quad tree
  | nMaxDepth | the maximum depth allowed

Generated for GDAL by 1.7.1.