0

刚开始玩mysql空间:

ID       BDY

4BCTD   152.936368,-27.22613|152.936525,-27.226409|152.937087,-27.228033|152.937327,-....

我有一个由 ID 和 BDY 组成的 BDY 表。

CREATE TABLE tbl_geom 
(ID VARCHAR(4),
BDY text,
GEOLOC GEOMETRY);

BDY 有纬度、经度文本,我想将边界转换为称为 GEOLOC 的空间列。

试过这个但没有用:

UPDATE  tbl_geom b SET  GEOLOC = POLYFROMTEXT('SELECT  bdy  FROM tbl_geom a');

一直返回 null

即使这些查询返回 null

SELECT GeomFromText('SELECT  bdy  FROM tbl_geom a');

SELECT polyFromText('SELECT  bdy  FROM tbl_geom a');

SELECT AsText(bdy) FROM tbl_geom;

任何帮助深表感谢。

4

1 回答 1

0

我认为您的查询应该是

UPDATE `tbl_geom` SET `GEOLOC` = POLYFROMTEXT(CONCAT('POLYGON((', REPLACE(REPLACE(`bdy`, ',', ' '), '|', ','), '))'));

这个:

  • 将 bdy 中的逗号转换为空格
  • 将管道转换为逗号
  • 在 POLYGON 调用中置顶和拖尾
  • 更新 GEOLOC
于 2012-10-15T13:31:49.140 回答