簡體   English   中英

帶有 POLYGON 的 mysql ST_WITHIN

[英]mysql ST_WITHIN with POLYGON

我無法從以下測試中獲得任何回報。

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)

您沒有在多邊形定義中的每對值后添加逗號。

你有:

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)可以。

這沒有問題:

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

對不起。 我的錯。 它是正確的,我更新了錯誤的數據庫並查詢了另一個數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM