我正在构建一个Node.js应用程序来管理我所在地区的兴趣点。我通过使用wkx将latlong坐标转换为WKB缓冲区来插入POI,然后将其插入到MySQL中的POINT列中。查询是用Knex.js构建的。下面是查询的样子:
INSERT INTO `places` (`name`, `coordinate`)
VALUES ('Null Island', X'00000000010100000000000000000000000000000000000000')它抛出了Cannot get geometry object from data you send to the GEOMETRY field。
我对它进行了修改,结果变成了这样:
INSERT INTO `places` (`name`, `coordinate`)
VALUES ('Null Island', UNHEX('00000000010100000000000000000000000000000000000000'))但还是没用。我最终只能通过使用ST_GEOMFROMTEXT(0 0)才能让它工作。即使我把它搞成这样,它也能工作:
INSERT INTO `places` (`name`, `coordinate`)
VALUES ('Null Island', UNHEX(HEX(ST_GEOMFROMTEXT('POINT(0 0)')))怎么了?如何使它直接从缓冲区工作?我怀疑我的问题与这一个相似。
发布于 2017-08-04 03:22:18
在内部,MySQL以与WKT或WKB格式不同的格式存储几何值。(内部格式类似于WKB,但有一个初始的4个字节来表示SRID。)
因此,不能直接插入WKB值(例如由wkx生成的值)。相反,使用ST_GEOMFROMWKB() (如描述的这里。 )
https://stackoverflow.com/questions/45480503
复制相似问题