2015-12-30 19 views
0

這裏是我的代碼:MySQL的:提供的功能無效的GIS數據st_geometryfromtext

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); 

每當我跑,我得到一個「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); 

任何想法?

+2

到底哪個MySQL的5.7版本?在[5.7.5]之前(https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-5.html#mysqld-5-7-5-spatial-support) ,通過定義序列中的第一個和最後一個點是相同的,必須明確地關閉環。 – eggyal

+0

5.7.10。但是將第一個和最後一個點定義爲相同的確定了問題。謝謝! – neubert

+0

此主題引導我創建[這一個](http://stackoverflow.com/q/44050320/1219280)。 – Veverke

回答

4

您需要指定第一個和最後一個點相同。

試試這個。

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); 

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); 
+0

哇,這是有道理的! (從幾何角度來看,多邊形是一個封閉的平面圖,因此起點和終點必須等於...)好極了! – Veverke

+0

你好!我在這裏有另一個問題:https://stackoverflow.com/questions/45808396/mysql-5-7-19-invalid-gis-data-provided-to-function-st-geometryfromtext,你能檢查出來嗎?謝謝 – mkmnstr

相關問題