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.
我有一些 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.