我无法从以下测试中获得任何回报。
mysql版本:5.6.16(win32)
SELECT (ST_WITHIN(GeomFromText('POINT(110.341903 1.558064)'), ST_GeomFromText(
"POLYGON((1.558467 110.341781 1.558081 110.342317 1.557764 110.34175 1.558467 110.341781 ))"
)))
我只想看到多边形内的那个点。从地图上可以看出,我做错了什么?
我试了一下,也行不通了
mysql> SET @g1 = ST_GEOMFROMTEXT('POINT(110.341903 1.558064)');
Query OK, 0 rows affected (0.00 sec)
mysql> SET @g2 = ST_GEOMFROMTEXT('POLYGON((1.558467 110.341781 1.558081 110.3423
17 1.557764 110.34175 1.558467 110.341781 ))');
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT ST_WITHIN(@g1,@g2);
+--------------------+
| ST_WITHIN(@g1,@g2) |
+--------------------+
| NULL |
+--------------------+
1 row in set (0.00 sec)
答案 0 :(得分:1)
在多边形的定义中,您没有在每对值之后添加逗号。
你有:
POLYGON((1.558467 110.341781 1.558081 110.342317 1.557764 110.34175 1.558467 110.341781 ))
应该是:
POLYGON((1.558467 110.341781, 1.558081 110.342317, 1.557764 110.34175, 1.558467 110.341781 ))
另外,我怀疑你已经交换了坐标值,因为POINT(110.341903 1.558064)
显然不能位于该多边形内,而POINT(1.558064 110.341903)
可以。{/ p>
这没有问题:
SELECT (
ST_WITHIN(
GeomFromText(
'POINT(1.558064 110.341903)'
),
ST_GeomFromText(
'POLYGON((1.558467 110.341781, 1.558081 110.342317, 1.557764 110.34175, 1.558467 110.341781 ))'
)
)
)
答案 1 :(得分:0)
对不起。我的错。它是正确的,我更新了错误的数据库并查询了另一个数据库。