kd_knn()

Поиск K ближайших узлов.

Прототип:

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

Аргументы:

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

Библиотека:

kd-tree

Описание:

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

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

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[1];
double distances[1];
if ( kd_knn( kd_t, 1, (double *)point, found, distances) != 1 )
{
printf( "KD-tree error: can't find 2 nearest points" );
return 1;
}
if ( found[0].attr != 2 )
{
printf( "KD-tree found incorrect point\n" );
return 1;
}

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

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

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




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