慢速版本(无空间索引):
SELECt *FROM mytableWHERe MBRIntersects(mypolygon, LineString(Point(@X - @distance, @Y - @distance), Point(@X + @distance, @Y + @distance))
要使用空间索引,您需要对表格进行非规范化,以便将每个多边形顶点存储在其自己的记录中。
然后
SPATIAL INDEX在包含顶点坐标的字段上创建,然后发出以下查询:
SELECt DISTINCT polygon_idFROM verticesWHERe MBRContains(vertex, LineString(Point(@X - @distance, @Y - @distance), Point(@X + @distance, @Y + @distance))
如果您将
UTM坐标存储在数据库中而不是纬度和经度,那么事情会容易得多。



