插入查询 MySQL 点值 returns ASCII
Insert and query MySQL point value returns ASCII
我有一个奇怪的问题。我试图在 PHP 中插入 MySQL 点坐标和 return,但我得到的是 ASCII 码而不是坐标。
这是我的SQL
CREATE TABLE `Grid` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`cntr_point` POINT DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB;
INSERT INTO `Grid`(cntr_point)
VALUES(POINTFROMTEXT('POINT(49.227239 17.564932)'));
在PHP中我有这样的代码(适用于其他领域):
$row['cntr_point']
但是我得到了这样的随机 ASCII 字符输出:
*H@v0b1@
当我反而期望看到我插入的坐标时。即使我跳过 PHP 并使用 SQLFiddle:
之类的东西,我似乎也会得到同样的结果
您可以使用 ST_AsText
:
SELECT id, ST_AsText(cntr_point) FROM Grid
输出:POINT(49.227239 17.564932)
或者您可以使用 ST_X
和 ST_Y
来获取坐标:
SELECT id, ST_X(cntr_point), ST_Y(cntr_point) FROM Grid;
POINT
数据类型包含二进制数据。尝试 ST_AsWkt() 使其显示为文本。
SELECT id, ST_AsWkt(cntr_point) FROM Grid
在 MySQL 的 OpenGIS 扩展中,像您的 POINT
列这样的几何列存储在所谓的 Well-Known Binary (WKB) format. ST_AsWkt() converts WKB to Well-Known Text (WKT) 中。
您在 INSERT 中使用的常量 'POINT(49.227239 17.564932)'
是 WKT 的一个示例。您用来加载 table 的 POINTFROMTEXT() 函数会以另一种方式转换。
所以,是的,如果您只需要 long/lat 数据,则必须从 php 程序中的 WKT 中提取它。或者,如果在您的应用中有意义,您可以使用 GeoPHP 直接处理 WKB。
我有一个奇怪的问题。我试图在 PHP 中插入 MySQL 点坐标和 return,但我得到的是 ASCII 码而不是坐标。
这是我的SQL
CREATE TABLE `Grid` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`cntr_point` POINT DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB;
INSERT INTO `Grid`(cntr_point)
VALUES(POINTFROMTEXT('POINT(49.227239 17.564932)'));
在PHP中我有这样的代码(适用于其他领域):
$row['cntr_point']
但是我得到了这样的随机 ASCII 字符输出:
*H@v0b1@
当我反而期望看到我插入的坐标时。即使我跳过 PHP 并使用 SQLFiddle:
之类的东西,我似乎也会得到同样的结果您可以使用 ST_AsText
:
SELECT id, ST_AsText(cntr_point) FROM Grid
输出:POINT(49.227239 17.564932)
或者您可以使用 ST_X
和 ST_Y
来获取坐标:
SELECT id, ST_X(cntr_point), ST_Y(cntr_point) FROM Grid;
POINT
数据类型包含二进制数据。尝试 ST_AsWkt() 使其显示为文本。
SELECT id, ST_AsWkt(cntr_point) FROM Grid
在 MySQL 的 OpenGIS 扩展中,像您的 POINT
列这样的几何列存储在所谓的 Well-Known Binary (WKB) format. ST_AsWkt() converts WKB to Well-Known Text (WKT) 中。
您在 INSERT 中使用的常量 'POINT(49.227239 17.564932)'
是 WKT 的一个示例。您用来加载 table 的 POINTFROMTEXT() 函数会以另一种方式转换。
所以,是的,如果您只需要 long/lat 数据,则必须从 php 程序中的 WKT 中提取它。或者,如果在您的应用中有意义,您可以使用 GeoPHP 直接处理 WKB。