Поиск узлов в заданном радиусе.
#include <gis/gis_kdtree.h>int gis_kd_dnn( gis_kd_tree_t *tree, double *coors, double radius, struct gis_kd_uniq_id **ids, double **dists);
kd-tree
Функция осуществляет поиск узлов в заданном радиусе до точки, описанной массивом координат, переданных в качестве параметра coors. Идентификаторы найденных точек помещаются в массив ids, расстояния в массив dists.
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 );point[0] = 19;point[1] = 14;struct gis_kd_uniq_id *found;double *distances, radius = 3;if ( ( count = gis_kd_dnn( kd_t, (double *)point, radius, &found, &distances )) == 0 ){printf( "KD-tree: gis_kd_dnn found nothing" );return 1;}if ( found->attr != 2 ){printf( "KD-tree found incorrect point\n" );return 1;}
ПК ЦКИ для ЗОСРВ «Нейтрино»
1.0.0
Предыдущий раздел: Описание API картографического фреймворка