我使用MySQL Spatial Extensions來存儲有關道路和酒店的數據。我將酒店數據存儲爲Point,而將道路數據存儲爲LineString。表看起來像這樣使用MySQL Spatial Extensions從一個角度查找N個最近的LineString
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`),
)
一個實例的可視化就像這樣。
我的問題是給定一個數N和P點,什麼是SQL查詢來找到點P N最近的道路?距離由道路中的一段到上述點之間的最小垂直距離定義。 (儘管在現實中,最近的距離應該在高速公路大門和酒店之間,但在這種情況下,我們可以從任意點進入高速公路:P)
如果沒有單一的SQL語句解決方案問題,中間SQL查詢和後處理對我來說都是可以接受的。但是,什麼是高效的SQL查詢以及如何後處理數據呢?
你得到了答案嗎? :) – bonCodigo
請確保您使用MySQL 5.5,否則空間功能不足以解決您的問題 – TheSteve0