【发布时间】:2012-09-22 22:39:23
【问题描述】:
我使用MySQL Spatial Extensions 来存储有关道路和酒店的数据。我将酒店数据存储为点,而将道路数据存储为 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,从点 P 找到 N 条最近的道路的 SQL 查询是什么?该距离由道路中的一段与上图所示点之间的最小垂直距离定义。 (虽然在现实中,最近的距离应该是高速公路大门和酒店之间,但在这种情况下,我们可以从任何一点进入高速公路:P)
如果这个问题没有单一的 SQL 语句解决方案,我可以接受中间 SQL 查询和后处理。但是什么是高效的 SQL 查询以及如何对数据进行后处理?
【问题讨论】:
-
你得到答案了吗? :)
-
请确保您使用的是 MySQL 5.5,否则空间功能的实现不足以回答您的问题
标签: mysql geospatial