SE_stable_search

Searches an stable using a set of spatial filters.

Usage syntax

LONG SE_stable_search (SE_STABLE stable, SHORT num_filters, const SE_FILTER *filters, BOOL (*func)
(void *argument, SE_SHAPE shape, const LONG user_id, const void *associated, SHORT num_filters, ULONG *search_masks), void *argument);

Parameters
stable The stable handle
num_filters The number of filters to apply to the search
filters An array of pointers to SE_FILTER structures
func A user-defined function called for each shape that satisfies the search

User function parameters

 
argument The user supplied argument
shape A pointer to a shape that satisfies the search
user_id The user-defined ID of the shape
associated A pointer to additional data associated with the shape
num_filters The number of filters satisfied by the search
search_masks The search mask for each filter's comparison against the found shape
argument Argument to be passed to the user-supplied function
Description

SE_stable_search searches an stable with a set of spatial filters. The spatial filters determine the type and order of search operations to apply to the shape table. Search constraints are supplied to the SE_stable_search function as an array of pointers to SE_FILTER structures.

For each shape that passes all the tests, a pointer is passed to a user-supplied function along with its associated data pointer, a user-supplied argument, and a vector of search masks. The search continues until all shapes meeting the criteria are found or the user function returns FALSE. If you specify no filters, all shapes in the stable are returned.

Structure definitions

typedef struct {
CHAR   table[SE_QUALIFIED_TABLE_NAME];    /* The spatial table name */
CHAR   column[SE_MAX_COLUMN_LEN];         /* The spatial column name */
LONG   filter_type;                       /* The type of spatial filter */
union  {
  SE_SHAPE shape;                         /* A shape object */
  struct {
   LONG id;                               /* An id for a filter feature */
   CHAR table[SE_QUALIFIED_TABLE_NAME];   /* The feature's spatial table */
  } id;
} filter;
LONG   method;                            /* The search method to satisfy */
CHAR  *cbm_source;                        /* Set only if the method is SM_CBM */
UCHAR *cbm_object_code;                   /* Internal system use only */
BOOL   truth;                             /* TRUE to pass method, FALSE if it must NOT pass */
} SE_FILTER;

filter_type:

 

SE_SHAPE_FILTER
SE_ID_FILTER

Search method:

 

SM_ENVP            /* Envelopes overlap */
SM_ENVP_BY_GRID    /* Envelopes overlap */
SM_CP              /* Common point */
SM_LCROSS          /* Line cross */
SM_COMMON          /* Common edge/line */
SM_CP_OR_LCROSS    /* Common point or line cross */
SM_LCROSS_OR_CP    /* Common point or line cross */
SM_ET_OR_AI        /* Edge touch or area intersect */
SM_AI_OR_ET        /* Edge touch or area intersect */
SM_AI              /* Area intersect */
SM_AI_NO_ET        /* Area intersect and no edge touch */
SM_PC              /* Primary contained in secondary */
SM_SC              /* Secondary contained in primary */
SM_PC_NO_ET        /* Primary contained and no edge touch */
SM_SC_NO_ET        /* Secondary contained and no edge touch */
SM_PIP             /* First point in primary in sec */
SM_IDENTICAL       /* Identical */

Returns

SE_SUCCESS
SE_INVALID_ENVELOPE

SE_INVALID_FILTER_TYPE

SE_INVALID_PARAM_VALUE

SE_INVALID_POINTER

SE_INVALID_SEARCH_METHOD

SE_INVALID_SHAPE

Notes

•  The returned shapes are read-only and can’t be used for certain arguments of thirty-four shape functions. See Application Development Support for the complete list.