Estoy usando MySQL Spatial Extensions para almacenar datos sobre carreteras y hoteles. Guardo los datos del hotel como un Punto mientras almaceno los datos del camino como LineString. Las tablas se ven asíEncontrar N LineString más cercano desde un punto usando MySQL Spatial Extensions
CREATE TABLE IF NOT EXISTS `Hotels` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`name` text,
`coordinate` point NOT NULL,
PRIMARY KEY (`id`),
SPATIAL KEY `coordinate` (`coordinate`),
)
CREATE TABLE IF NOT EXISTS `Roads` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`name` text,
`route` linestring NOT NULL,
PRIMARY KEY (`id`),
SPATIAL KEY `coordinate` (`route`),
)
La visualización de una instancia sería así.
Mi problema se da un número N y un punto P, ¿cuál es la consulta SQL para encontrar caminos más cercanos N desde el punto P? La distancia se define por la distancia perpendicular más pequeña entre un segmento en el camino al punto como se muestra arriba. (aunque en la realidad, la distancia más cercana debe estar entre la puerta de la autopista y un hotel, pero en este caso, podemos ingresar a la carretera desde cualquier punto: P)
Si no hay una sola solución de declaración SQL para esto problema, una consulta SQL intermedia y un post-procesamiento son aceptables para mí. Pero, ¿qué sería una consulta SQL eficiente y cómo post-procesar los datos?
¿Ya has recibido tu respuesta? :) – bonCodigo
Asegúrate de utilizar MySQL 5.5; de lo contrario, la funcionalidad espacial no se implementa lo suficiente como para responder a tu pregunta – TheSteve0