在边界框中查找所有地理位置

时间:2016-06-11 13:07:30

标签: mysql database-design geolocation database-schema bounding-box

我有一个MySQL表(约有~100,000个条目),如下所示:

CREATE TABLE IF NOT EXISTS `poi` (
  `poi_id` int(10) unsigned NOT NULL auto_increment,
  `lat` decimal(10,6) default NULL,
  `lng` decimal(10,6) default NULL,
  PRIMARY KEY  (`poi_id`),
  KEY `lat` (`lat`),
  KEY `lng` (`lng`),
) ENGINE=InnoDB;

基本上我想对这些条目做的就是获取给定边界框(bbox)中的所有POI。

实现这一目标会有什么好处(快速但不太复杂)?

如果能带来任何好处,那么更改数据库架构(甚至DBMS)是我的选择。我怀疑我的天真模式是一种快速的方法。

BTW:我已经读过有关PostGIS的文章,但我并不是那么复杂。所以我宁愿坚持一个简单而干净的解决方案。

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

SELECT * 
FROM poi
WHERE lat >= @lat - @degrees 
AND lat <= @lat + @degrees
AND lng >= @lng - @degrees
AND lng <= @lng + @degrees

当然,您也可以传递lat和lng的上下参数,这可能更有效