Suchen Sie mit MySQL Spatial Extensions von einem Punkt aus nach N nächstgelegenen LineString

Ich benutzeMySQL Spatial Extensions um Daten über Straßen und Hotels zu speichern. Ich speichere die Hoteldaten als Punkt, während ich die Straßendaten als LineString speichere. Die Tabellen sehen so aus

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`),
)

Die Visualisierung einer Instanz wäre so.

Mein Problem ist eine Nummer N und ein Punkt P gegeben, was ist die SQL-Abfrage, um N nächstgelegene Straßen von Punkt P zu finden? Die Entfernung wird durch die kleinste senkrechte Entfernung zwischen einem Straßensegment und dem oben gezeigten Punkt definiert. (Obwohl in der Realität die nächste Entfernung zwischen dem Autobahn-Tor und einem Hotel sein sollte, können wir in diesem Fall die Autobahn von jedem Punkt aus betreten: P)

Wenn es für dieses Problem keine Lösung für eine einzelne SQL-Anweisung gibt, sind eine zwischengeschaltete SQL-Abfrage und eine Nachbearbeitung für mich akzeptabel. Aber was wäre eine effiziente SQL-Abfrage und wie können die Daten nachbearbeitet werden?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage