慢速版本(没有空间索引):
SELECT *
FROM mytable
WHERE MBRIntersects(mypolygon, LineString(Point(@X - @distance, @Y - @distance), Point(@X + @distance, @Y + @distance))
Run Code Online (Sandbox Code Playgroud)
要使用空间索引,您需要对表进行非规范化,以便每个多边形顶点都存储在其自己的记录中。
SPATIAL INDEX然后在包含顶点坐标的字段上创建并发出以下查询:
SELECT DISTINCT polygon_id
FROM vertices
WHERE MBRContains(vertex, LineString(Point(@X - @distance, @Y - @distance), Point(@X + @distance, @Y + @distance))
Run Code Online (Sandbox Code Playgroud)
UTM如果您在数据库中存储坐标而不是纬度和经度,事情会容易得多。
| 归档时间: |
|
| 查看次数: |
5434 次 |
| 最近记录: |