1

我有一张名为“Region”的表,它有 2000 条记录。在区域表中,我有 1 个称为点的几何列。现在我有另一个名为 Bus_Route 的表,其几何列名为“geometry”,包含 1000 万条记录。现在我想要位于该区域的点。我正在使用以下查询来查看天气,我的观点是否在该地区,是否使用 STcontains。但是这个查询需要很长时间(大约 3 天)。我在我的 Bus_Route 表上创建了空间索引,该表有 1000 万条记录,但这也没有帮助。

         Select
              Region.BlockID,
              Bus_Route.geometry
              from 
              Bus_Route,                         
              Region
           where 

              Region.points.STContains(Bus_Route.geometry) = 1

请帮忙!

4

1 回答 1

2

几点观察:

  1. 因为您的巴士可能不会穿过平地,所以请使用地理而不是几何。
  2. 如果您要进行交叉连接(如所述的查询正在执行该操作),请通过执行以下操作来明确说明:

    选择 Region.BlockID, Bus_Route.geometry from Bus_Route
    cross join Region

  3. 您是否考虑过使用 STIntersects 而不是 STContains?如果我正确解释了您的问题,那么您正在寻找给定路线经过的区域,这意味着两个地理实例之间的交集将是非空的。您编写的查询将显示完全封闭在区域内的路线。

于 2012-11-12T13:45:17.327 回答