Поиск узлов в заданном диапазоне.
#include <gis/gis_kdtree.h>int gis_kd_rnn( gis_kd_tree_t *tree, double *coors, struct gis_kd_uniq_id **ids);
kd-tree
Функция осуществляет поиск узлов в заданном диапазоне, который задается минимальными и максимальными значениеми через массив coors. Идентификаторы найденных точек помещаются в массив ids.
int count;gis_kd_tree_t *kd_t;kd_t = gis_kd_init( 2 );struct gis_kd_uniq_id id;double point[2];id.obj = NULL;id.attr = 1;point[0] = 10;point[1] = 10;gis_kd_add( kd_t, &point[0], &id );id.obj = NULL;id.attr = 2;point[0] = 20;point[1] = 15;gis_kd_add( kd_t, &point[0], &id );gis_kd_uniq_id *found;double range[4];range[0] = 14;range[1] = 14;range[2] = 21;range[3] = 21;if ( ( count = gis_kd_rnn( kd_t, (double *)range, &found )) == 0 ){printf( "KD-tree error: gis_kd_dnn failed" );return 1;}if ( found->attr != 2 ){printf( "KD-tree found incorrect point\n" );return 1;}
ПК ЦКИ для ЗОСРВ «Нейтрино»
1.0.0
Предыдущий раздел: Описание API картографического фреймворка