MySQL 存储坐标的不同方法

MySQL different approaches to store coordinates

我有一些 SQL for MySQL 可以将点和多边形插入数据库。此代码有效。但是我在网上看到有多种方法可以做到这一点,但不清楚什么是正确的方法。

这是我目前的方式: http://sqlfiddle.com/#!9/df0e51/1

CREATE TABLE `Grid` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `point` POINT DEFAULT NULL,
  `polygon` polygon DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB;

INSERT INTO `Grid`(point, polygon) 
VALUES(POINTFROMTEXT('POINT(49.227239 17.564932)'),POLYGONFROMTEXT('POLYGON((0 5, 2 5, 2 7, 0 7, 0 5))'));

不过,我也看到过使用几何类型和包含 ST_GeomFromText 的插入语句来实现完全相同的事情的教程。

我的问题是,是否有正确的方法来执行此操作,或者至少,我如何知道何时使用其中一种方法?

选择 ST_GeomFromText 有几个原因:

  • 它比 MySQL POINTFROM/POLYGONFROM 函数更通用,因为它查看文本定义并确定它是哪种几何图形,从而使您的代码可能更简洁。
  • 带有前缀 ST_ 的函数符合开放地理空间联盟为地理空间 SQL 定义的行为,因此可以跨不同的数据库类型移植。没有 ST_ 的 MySQL 别名可能只适用于 MySQL.