K-ближайшие соседи и географический индекс MySql

У меня есть набор изображений с геотегами в базе данных mySql. Вы можете рассматривать мою таблицу изображений как:

create table `Pictures` (

location Point NOT NULL, 
timeCreated timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

SPATIAL INDEX(location)

)ENGINE= MyISAM DEFAULT CHARSET=utf8;

Я намерен выполнить алгоритм K-ближайшего соседа на основе местоположения изображений. Скажем, если K=10, выберите 10 изображений, географически ближайших к местоположению пользователя.

Я ценю ваши предложения.


person olix20    schedule 02.03.2012    source источник
comment
Там какие-то ограничения? Например, это фиксированный набор изображений или изображения добавляются и удаляются?   -  person Tim    schedule 02.03.2012
comment
Фотографии @Tim постоянно добавляются мобильными пользователями.   -  person olix20    schedule 02.03.2012
comment
Вы спросили конкретно о KNN. Выбранный ответ - формула hversine не имеет к этому никакого отношения. Если вам нужна ближайшая точка, вам придется уточнить свой вопрос. Стесняясь этого, я не уверен в том, о чем вы спрашиваете, и думаю, что это может запутать людей, которые ищут KNN.   -  person Evan Carroll    schedule 08.08.2018


Ответы (2)


Взгляните на ссылку ниже. Я считаю, что он решает ту же проблему, что и у вас, исключительно с использованием запросов MySQL (если ваша проблема состоит в том, чтобы найти 10 ближайших изображений к местоположению пользователей).

Расстояние большого круга MySQL (формула Хаверсина)

Я надеюсь, что это может помочь вам решить вашу проблему.

person Aristotelis Kostopoulos    schedule 04.03.2012
comment
Использование формулы гаверсинуса означает, что вам нужно вычислить расстояние для всех точек. Даже если вам нужно всего 10 ближайших точек. - person user4951; 21.06.2012
comment
@ Джим Тио: Я согласен с тем, что вам нужно рассчитать расстояние до всех точек с учетом ссылки, которую я разместил. Не могли бы вы предоставить лучшее рабочее решение этой проблемы? - person Aristotelis Kostopoulos; 25.06.2012
comment
Кажется, для моего sql нет. Я перехожу на монгодб. Вы можете эмулировать его, сначала выполнив поиск в маленьком прямоугольнике. Если у mysql есть команда для этого, мне этого будет достаточно. - person user4951; 25.06.2012

Нет поддержки KNN.

Более правильный и точный ответ заключается в том, что на данный момент ни MySQL, ни MariaDB не поддерживают KNN. Хотя PostGIS делает бесплатное пространственное расширение для PostgreSQL.

person Evan Carroll    schedule 21.01.2019