MySQL:为函数st_geometryfromtext提供的GIS数据无效

neu*_*ert 4 mysql gis spatial-index mysql-5.7

这是我的代码:

SET @poly =
    'Polygon((-98.07697478272888 30.123832577126326,
              -98.07697478272888 30.535734310413392,
              -97.48302581787107 30.535734310413392,
              -97.48302581787107 30.123832577126326))';

SELECT name
FROM county_shapes
WHERE MBRContains(ST_GeomFromText(@poly), SHAPE);
Run Code Online (Sandbox Code Playgroud)

每当我运行时,我得到一个"MySQL:提供给函数st_geometryfromtext的无效GIS数据"错误.

这会返回相同的错误:

SELECT name
FROM county_shapes
WHERE MBRContains(ST_GeomFromText('Polygon((-98.07697478272888 30.123832577126326,
              -98.07697478272888 30.535734310413392,
              -97.48302581787107 30.535734310413392,
              -97.48302581787107 30.123832577126326))'), SHAPE);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

cod*_*kie 13

您需要将第一个和最后一个点指定为相同.

试试这个.

SET @poly =
    'Polygon((-98.07697478272888 30.123832577126326,
              -98.07697478272888 30.535734310413392,
              -97.48302581787107 30.535734310413392,
              -97.48302581787107 30.123832577126326,
              -98.07697478272888 30.123832577126326,))';

SELECT name
FROM county_shapes
WHERE MBRContains(ST_GeomFromText(@poly), SHAPE);
Run Code Online (Sandbox Code Playgroud)

SELECT name
FROM county_shapes
WHERE MBRContains(ST_GeomFromText('Polygon((
              -98.07697478272888 30.123832577126326,
              -98.07697478272888 30.535734310413392,
              -97.48302581787107 30.535734310413392,
              -97.48302581787107 30.123832577126326,
              -98.07697478272888 30.123832577126326))'), SHAPE);
Run Code Online (Sandbox Code Playgroud)

  • 哇,这有道理!(从几何的角度来看,多边形是一个封闭的平面图形,因此起点和终点必须相等......)太棒了! (2认同)