2000 레코드가있는 'Region'이라는 테이블이 하나 있습니다. 지역 테이블에는 점이라는 1 개의 기하학 컬럼이 있습니다. 이제 1 천만 개의 레코드가있는 'geometry'라는 기하 구조 열이있는 Bus_Route라는 다른 테이블이 있습니다. 이제 저는 그 지역에있는 요점들을 원합니다. 다음 쿼리를 사용하여 내 포인트가 해당 지역에 있는지 여부를 STcontains를 사용하여 확인합니다. 그러나이 쿼리는 오랜 시간이 걸립니다 (약 3 일). 나는 Bus_Route 테이블에 Spatial 인덱스를 만들었습니다.이 테이블에는 1,000 만 개의 레코드가 있지만 그것은 도움이되지 않습니다.STcontains() 쿼리가 공간 인덱스로도 느리게 실행 됨
Select
Region.BlockID,
Bus_Route.geometry
from
Bus_Route,
Region
where
Region.points.STContains(Bus_Route.geometry) = 1
도와주세요!
안녕 벤, 감사합니다. 지리 정보를 지형으로 변환했습니다. 문제는 4000 개의 위도/경도로 지역을 만들고, 1 포인트 위도/경도가 해당 지역 (4000 포인트)에 있는지 확인하고 싶습니다. 어떻게 STContains 지형을 사용할 수 있습니까? DECLARE @g geography; DECLARE @h 지리; SET @g = 위도/경도가 4000 포인트이며 DB에 저장 됨 SET @h = geography (확인하고 싶은 위도/경도) 도와주세요! –
영역을 만드는 4000 점이 있다고 말하면 영역의 경계를 정의하는 선분의 끝점을 가리키고 있습니까? 나는 여기서 포인트를 얻지는 않겠지 만 그 자체로 흥미로운 질문입니다 (즉, 그것에 대해 별도의 질문을해야합니다). 내 첫 번째 추측은 점에서 영역의 텍스트 표현을 가져온 다음 정적 지리 메서드를 사용하여이를 다시 지리 인스턴스로 구문 분석해야한다는 것입니다. 그것은 나에게 둥근 것처럼 보인다. 나는 파기를 할거야. –
답장을 보내 주셔서 감사합니다. 나는 더 자세히 설명 할 것이다. 지형으로 위도/경도 (위도/경도의 개요)가 있습니다. 이제 1 포인트 위도/경도가 있고 그 지점이 내 지역에 있는지 확인하고 싶습니다. 나는 어떻게 그럴 래? 그래서 여기서 4000 포인트는 지역의 개요를 만들고 1 포인트는 그 지역에 존재하는지 아닌지를 확인하는 것입니다. 어떻게 확인할 수 있습니까? 당신의 대답에 대한 감사합니다 벤! –