kd_dnn()

Поиск узлов в заданном радиусе.

Прототип:

#include <gis/gis_kdtree.h>
int kd_dnn( gis_kd_tree_t *tree, double *coors, double radius, struct gis_kd_uniq_id **ids, double **dists);

Аргументы:

tree
Указатель на КД дерево
coors
Указатель на массив координат узла
radius
Значение радиуса поиска
ids
Пустой массив идентификаторов для записи id найденных узлов
dists
Пустой массив расстояний для записи дистанции до найденных узлов

Библиотека:

kd-tree

Описание:

Функция осуществляет поиск узлов в заданном радиусе до точки, описанной массивом координат, переданных в качестве параметра coors. Идентификаторы найденных точек помещаются в массив ids, расстояния в массив dists.

Возвращаемое значение:

count
Количество найденных узлов

Примеры использования:

int count;
gis_kd_tree_t *kd_t;
kd_t = kd_init( 2 );
struct gis_kd_uniq_id id;
double point[2];
id.obj = NULL;
id.attr = 1;
point[0] = 10;
point[1] = 10;
kd_add( kd_t, &point[0], &id );
id.obj = NULL;
id.attr = 2;
point[0] = 20;
point[1] = 15;
kd_add( kd_t, &point[0], &id );
point[0] = 19;
point[1] = 14;
struct gis_kd_uniq_id *found;
double *distances, radius = 3;
if ( ( count = kd_dnn( kd_t, (double *)point, radius, &found, &distances )) == 0 )
{
printf( "KD-tree: kd_dnn found nothing" );
return 1;
}
if ( found->attr != 2 )
{
printf( "KD-tree found incorrect point\n" );
return 1;
}

Классификация:

ПК ЦКИ для ЗОСРВ «Нейтрино»

Поддерживается в ПК ЦКИ, начиная с версии 1.0.0




Предыдущий раздел: Описание API картографического фреймворка