0

AREA_ID列とPolygonタイプのAREA列を持つエリアのテーブルがあります。

次のクエリを実行していますが、機能しないようです。

SELECT AREA_ID, AsText(AREA) 
FROM networkmodel.sit_area 
WHERE Within(AREA, Polygon((
50.913424 -1.420527, 
50.915805 -1.391516, 
50.898053 -1.390142, 
50.895021 -1.428251, 
50.913424 -1.420527)))

このクエリでは、「オペランドには1つの列が含まれている必要があります」というエラーが表示されます。

座標の周りに角かっこを1つ少なくすると、代わりに「解析中に不正な非幾何学的'(50.913424 -1.420527)'値が見つかりました」というエラーが発生します。私の座標は間違った形式ですか?

MySQLのドキュメントから、Within関数が適切に実装されておらず、代わりにMBR実装にフォールバックしていることを認識していますが、現時点ではテスト中です。私は過去にContains関数を使用して、ポリゴンの代わりに2番目のパラメーターとしてPointを使用することで同様の方法でレコードを返すことに成功しましたが、これはその逆であると思われます。

この関数は2つのパラメーターを取り、最初の(この場合は私の領域の列)が指定されたポリゴン内にあるかどうかをチェックすることは、ドキュメントからの私の理解です。

どんな助けでもありがたいです。

4

1 に答える 1

0

この関数を使用する代わりに、 Polygon 宣言を次のように変更する必要がありました。

GeomFromText('Polygon((50.913424 -1.420527, 50.915805 -1.391516, 50.898053 -1.390142, 50.895021 -1.428251, 50.913424 -1.420527))')
于 2012-07-20T10:09:15.700 に答える