我正在构建一个管理我所在地区兴趣点的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)')))
出了什么问题?如何让它直接从缓冲区工作? 我怀疑我的问题与this one类似。
答案 0 :(得分:0)
来自MySQL Reference Manual on Supported Spatial Data Formats:
在内部,MySQL以与WKT或WKB格式不同的格式存储几何值。 (内部格式类似于WKB,但最初的4个字节表示SRID。)
因此,插入WKB值(例如wkx
)生成的值不能直接完成。相反,请按照here.
ST_GEOMFROMWKB()