Ben*_*rce 6 mysql polygon spatial-query
我正在使用下面的语句将名为'lattitude'和'longitude'的两个varChar格式化列写入名为'coordinate'的Point格式化列.
"UPDATE table_name SET coordinate = PointFromText(CONCAT('POINT(',table_name.longitude,' ',table_name.lattitude,')'))"
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下语句对坐标列执行空间查询.
SELECT id , coordinate FROM table_name WHERE MBRContains(GeomFromText('Polygon(-126.728566 49.226434, -123.652395 23.586457,-56.679738 23.908252,-53.076223 55.243002)'), coordinate)
Run Code Online (Sandbox Code Playgroud)
根据这个工具,我的查询中的多边形覆盖整个美国我知道我的表中有些点落在美国但我仍然没有得到任何结果(注意我得到的结果是空的而不是错误).关于我做错了什么的任何想法?
UPDATE.以下是根据以下建议执行查询的更新尝试.
SET @g1 = GeomFromText('Polygon((23.586457 -123.652395,23.908252 -56.679738,55.243002 -53.076223,55.243002 -53.076223,23.586457 -123.652395))');
SELECT id , coordinate FROM table_name WHERE MBRContains(@g1, coordinate)
Run Code Online (Sandbox Code Playgroud)
SELECT id , coordinate FROM table_name WHERE MBRContains(GeomFromText('Polygon((-126.728566 49.226434, -123.652395 23.586457,-56.679738 23.908252,-53.076223 55.243002, -126.728566 49.226434))'), coordinate)
Run Code Online (Sandbox Code Playgroud)
这应该有效。问题是多边形坐标应该位于双括号中。它与内环(多边形)有关。另外,大卫注意到你需要关闭多边形。
PS:我注意到您使用经度作为 X,纬度作为 Y,而这应该是相反的。X 为水平方向,Y 为垂直方向。
| 归档时间: |
|
| 查看次数: |
1340 次 |
| 最近记录: |