如何在 Mysql 中将 Javascript 对象格式化为多边形
How to format a Javascript object as a polygon in Mysql
我想将 Javascript 对象作为多边形存储在 Mysql 数据库中。
我可以定义 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中你必须使用ST_GeomFromText
polygon = "ST_GeomFromText('POLYGON("+ polygon.toString() +")')";
我不确定你需要什么最后的数字 0。
POLYGON 是开放地理空间联盟 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)
因此,它将 caption_area 存储为 TEXT 使用:
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)));
我想将 Javascript 对象作为多边形存储在 Mysql 数据库中。 我可以定义 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中你必须使用ST_GeomFromText
polygon = "ST_GeomFromText('POLYGON("+ polygon.toString() +")')";
我不确定你需要什么最后的数字 0。
POLYGON 是开放地理空间联盟 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)
因此,它将 caption_area 存储为 TEXT 使用:
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)));