如何在Mysql中将Javascript对象格式化为多边形

如何在Mysql中将Javascript对象格式化为多边形,javascript,mysql,polygon,Javascript,Mysql,Polygon,我想在Mysql数据库中将Javascript对象存储为多边形。 我可以定义x和y的起点和终点,以提供四个角: var polygon = [ xstart +' '+ ystart, xend +' '+ ystart, xend +' '+ yend, xstart +' '+ yend, xstart +' '+ ystart ]; 我可以将此对象格式化为字符串 polygon = "ST_GeomFromText('POLYGON(("+ pol

我想在Mysql数据库中将Javascript对象存储为多边形。 我可以定义x和y的起点和终点,以提供四个角:

var polygon = [
    xstart +' '+ ystart,
    xend +' '+ ystart,
    xend +' '+ yend,
    xstart +' '+ yend,
    xstart +' '+ ystart
];
我可以将此对象格式化为字符串

polygon = "ST_GeomFromText('POLYGON(("+ polygon.toString() +"))'";
当我将其插入Mysql数据库时

INSERT INTO `caption` (`caption_id`, `caption_area`) VALUES (NULL, '\'POLYGON((0.28 0.33,0.35 0.33,0.35 0.45,0.28 0.45,0.28 0.33))\'')
查询失败

#1416 - Cannot get geometry object from data you send to the GEOMETRY field
如何格式化Javascript对象或查询,以便将多边形正确插入数据库?

在mysql中,必须使用


我不确定您需要什么结尾的数字0。

多边形是开放地理空间联盟OpenGIS中定义的MySQL空间扩展的空间数据类型。 您可以在MySQL中为四个多边形定义空间数据类型。以下是使用LINESTRING的示例:

    LINESTRING(0.28540775806607094 0.3356063323928521, 0.35407728596306665      0.3356063323928521, 0.35407728596306665 0.45764498813705906, 0.28540775806607094 0.45764498813705906, 0.28540775806607094 0.3356063323928521)
因此,它使用以下方法将标题区域存储为文本:

    SET @g = 'LINESTRING(0.28540775806607094 0.3356063323928521, 0.35407728596306665 0.3356063323928521, 0.35407728596306665 0.45764498813705906, 0.28540775806607094 0.45764498813705906, 0.28540775806607094 0.3356063323928521)';

    INTO `caption` (`caption_id`, `caption_area`) VALUES (NULL,ST_AsText(ST_GeomFromText(@g)));
还有一个多边形示例:

    SET @g = 'POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))';
    INTO `caption` (`caption_id`, `caption_area`)
    VALUES  (NULL,ST_AsText(ST_GeomFromText(@g)));

查询仍然失败。我更新了我的问题,加入了你的建议。谢谢。这是因为我们有一个字符串而不是代码,所以在构建查询时请显示它必须看起来像插入到
标题
标题id
标题区域
)值(NULL,ST\u GeomFromText('POLYGON((0.28 0.33,0.35 0.33,0.35 0.45,0.28 0.33'))您是正确的。查询仍然失败,因为我使用的是一条准备好的语句。我想存储多边形而不是线字符串。
    SET @g = 'POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))';
    INTO `caption` (`caption_id`, `caption_area`)
    VALUES  (NULL,ST_AsText(ST_GeomFromText(@g)));