SQL空间线串与其他线串相交的次数

时间:2015-05-28 16:19:27

标签: sql-server sqlgeography

所以,我有一个名为“lines”的表,其中有一个名为“WKT”的字段,其中包含相应的地理位置。

我构建了一个查询,它给出了相交的行的名称,如下所示:

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception
  def authentication_callback
    auth = request.env['omniauth.auth']
    render json: auth.as_json
  end

end

它运作良好。有问题的情况是这个@DF线是“通过相同的路径返回”。在这种情况下,我想知道相交的重复行的名称。

这可能吗?

1 个答案:

答案 0 :(得分:0)

不确定。假设你有一个计数表(即一个数字为1到一些大数字的表):

DECLARE @DF GEOGRAPHY  
Set @DF=GEOGRAPHY::STLineFromText('LINESTRING(-9.564498 52.237100,-9.564906 52.243924,-9.565699 52.245563,-9.568173 52.251014,-9.567142 52.257567,-9.564291 52.262366,-9.563453 52.262972,-9.563447 52.262980,-9.563447 52.262980,-9.563447 52.262980)', 4326)  

WITH cte AS (
    SELECT n, @DF.STCurveN(n) AS curve
    FROM dbo.Numbers
    WHERE n <= @DF.STNumCurves()
)
select name, @DF.STIntersects(WKT) AS inters
from lines AS l
JOIN cte AS c
    ON l.WKT.STIntersects(c.curve) = 1

我确信你可以在不使用CTE的情况下离开,但这才是我脑子里最有意义的。