【问题标题】:Inserting coordinates into MySQL - PolyFromText SQL syntax error / returning null将坐标插入 MySQL - PolyFromText SQL 语法错误/返回 null
【发布时间】:2013-03-05 09:18:56
【问题描述】:

我正在尝试将多边形的地理坐标插入我的 MySQL 数据库。我有一个名为 polygon 类型的字段,我尝试运行所有这些查询,但仍然出现 SQL 语法错误:

SET @g = 'POLYGON((-74.13591384887695 40.93750722242824,-74.13522720336914 40.929726129575016,-74.15102005004883 40.9329683629703,-74.14329528808594 40.94256444133327))';
INSERT INTO 'zones' ('polygon') VALUES (PolyFromText(@g));

INSERT INTO 'zones' ('polygon') VALUES (PolyFromText('POLYGON((-74.13591384887695 40.93750722242824,-74.13522720336914 40.929726129575016,-74.15102005004883 40.9329683629703,-74.14329528808594 40.94256444133327))'));

INSERT INTO 'zones' ('polygon') VALUES (PolyFromText('POLYGON((-74.13591384887695 40.93750722242824,-74.13522720336914 40.929726129575016,-74.15102005004883 40.9329683629703,-74.14329528808594 40.94256444133327))', 0));

最后一个查询是使用 phpmyadmins 自己的地理空间工具生成的,并返回“列'多边形'不能为空”。任何帮助表示赞赏!

【问题讨论】:

  • 我试过 PolygonFromText、PolyFromText 和 GeomFromText - 它们都不起作用。

标签: mysql polygon geospatial spatial


【解决方案1】:

原因是因为null退出最后一点不等于第一点,是满足OSGeo标准WKT的条件,在某些实现中这是允许的,但是mysql对此有严格要求,在SQL Server文档中更好地解释条件。

看到这个

SELECT  Dimension(GeomFromText('POLYGON((-74.13591384887695 40.93750722242824,-74.13522720336914 40.929726129575016,-74.15102005004883 40.9329683629703,-74.14329528808594 40.94256444133327,-74.13591384887695 40.93750722242824)))'));

mysql的文档

http://dev.mysql.com/doc/refman/5.0/en/gis-class-polygon.html

sqlserver的文档

http://msdn.microsoft.com/en-us/library/bb964739(v=sql.105).aspx

【讨论】:

    【解决方案2】:

    截至 2020 年...

    您的查询应更改为

    INSERT INTO 'zones' ('polygon') VALUES (ST_PolygonFromText('POLYGON((-74.13591384887695 40.93750722242824,-74.13522720336914 40.929726129575016,-74.15102005004883 40.9329683629703,-74.14329528808594 40.94256444133327, -74.13591384887695 40.93750722242824))'));
    

    注意事项:

    1. 使用正确的多边形转换函数ST_PolygonFromText
    2. 正确使用嵌套括号来标注内部多边形
    3. 最后一个点等于第一个点 - 所以,多边形是闭合的

    【讨论】:

    • 错误代码:3037。提供给函数 st_polygonfromtext 的 GIS 数据无效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    相关资源
    最近更新 更多