2012-10-10 3 views
4

SQL Server 2008 R2를 사용하고 있는데 두 개의 테이블, 영역 및 기능이 있습니다. 둘 다 지리 요소가 포함 된 열이 있습니다.지리적 열의 SQL 서버 통합

나는이처럼 geograpy 요소의 교차점에 노조를 계산하려면 :

SELECT * from Regions join Facilities on [Regions].[geography].STIntersects([Facilities].[geography]) 

물론 어떤이 작동하지 않습니다. 영역은 큰 폴리곤이며 기능은 각각 하나의 다각형에만 포함 된 점입니다.

나는 (의사)

for each r in Regions: 
    for each f in Facilities: 
     if f.[geography].STIntersects(r.[geography]): 
      print r, f 

하지만 데이터베이스가 설정되지 않은 요소에서 작동하도록 확실히이다 사용의 전체 지점의 어떤 종류를 작성할 수?

이렇게하려면 더 좋은 방법이 있습니까? 그것은 당신의 WHERE 조건이된다 즉, 0 또는 1
을 그래서

감사 멜라니

+2

이 인쇄 (r, f)가 아닌가요? 'r.geography.STIntersects (f.geography) = 1'에있는 시설 r에 가입하십시오. – RichardTheKiwi

+0

네, 그걸 답으로 써주세요. 고마워요. 고마워요. 마술은 끝에 = 1을 넣는 것입니다. – Melanie

답변

6

STIntersect는(), 모든 부울 SQL 서버 기능처럼 비트를 반환합니다.

r 및 f의 foreach는 JOIN 문에 내포되어 있습니다.

SELECT r.geography, f.geography 
from Regions r 
join Facilities f on r.geography.STIntersects(f.geography)=1