Поиск K ближайших узлов.
#include <gis/gis_kdtree.h>int gis_kd_knn( gis_kd_tree_t *tree, int k, double *coors, struct gis_kd_uniq_id *ids, double *dists );
kd-tree
Функция осуществляет поиск ближайших узлов в дереве к точке, описанной массивом координат, переданных в качестве параметра coors.Идентификаторы найденных точек помещаются в массив ids, расстояния в массив dists.
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 );point[0] = 19;point[1] = 14;struct gis_kd_uniq_id found[1];double distances[1];if ( gis_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 картографического фреймворка