与其他数据库(如Postgres)相比,MySQL在地理空间方面的应用有点晚,但随着5.6和5.7版本的发布,许多新的GIS功能最终得以实现。例如,在5.7中,我们得到了:ST_Distance_Sphere可计算球体上两点之间的距离。
InnoDB空间索引
GeoJSON集成,引用RFC的话,“一种基于JSON的地理空间数据交换格式。”
有很多有趣的事情我们现在可以完成使用这些新的情势。今天我将展示一个非常简单的例子,说明如何使用多边形和点进行搜索。这里的目标是回答“这一点在这个城市吗?”?”.
定义点
首先,让我们创建一个带有名称和一组坐标的“places”表。但是,我将使用一个点,而不是将纬度和经度存储为两个不同的浮动。CREATE TABLE `places` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(256) DEFAULT NULL,
`coordinates` point DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
然后让我们在巴黎和纽约增加几个地方进行基本测试。存储新点的方法非常前卫:INSERT INTO `places` ( `name`, `coordinates`)
VALUES ("Eiffel Tower", POINT(48.858271, 2.293795));
INSERT INTO