MySQL中的边界框搜索

时间:2013-04-18 17:00:22

标签: php mysql geospatial bounding-box

我试图找出如何使用"左上角经度和纬度"从MySQL表中检索信息。和"右下角的纬度和经度"对于地理边界框。

CREATE TABLE `markers` (
  `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  `name` VARCHAR( 60 ) NOT NULL ,
  `address` VARCHAR( 80 ) NOT NULL ,
  `lat` decimal(10,7) NOT NULL ,
  `long` decimal(10,7) NOT NULL,
  `geopoint` point NOT NULL,
  PRIMARY KEY  (id),
  SPATIAL geopoint (geopoint)
) ENGINE = MYISAM ;

到目前为止,我有下面的SQL查询,我不确定它是否是检索信息的最有效和最有效的方式?

$sql = "SELECT * FROM `markers` WHERE (long BETWEEN '$west_long' AND '$east_long') AND (lat BETWEEN '$north_lat' AND '$south_lat')";

1 个答案:

答案 0 :(得分:0)

将两个纬度转换为距离(米,英里)有相当令人印象深刻的公式,经度相同。

只要您的请求位于地球的某个范围内,您应该使用第二个大大简化的扩展where条件来帮助MySQL缩小到正确的矩形。

如果您在php或sql中使用这些公式,这是您的选择 - 以米为单位的框可以转换为lat / long的框。

一个拉长形式的简单矩形永远不会是一个真正的矩形,就像你可以看到每个橙色。