주어진 포인트가 다각형인지 아닌지를 결정하는 SQL 쿼리를 작성하려고합니다. (저는 SQL Server 2008 R2를 사용하고 있습니다).SQL Server 용 다각형 알고리즘의 포인트
나는 다음과 같습니다 this tutorial (그냥 복사/붙여 넣기 및 테이블 이름 변경) 대략적으로 작동하지만 전혀 정확하지 않습니다. 예를 들어 좌표가 주어진 점을 고려해 봅시다 :
P = 45.7664, 4.87383
. 당신이 4 개 정점에이 점 주위에 작은 다각형 (대략 사각형)을 그리면
좌표 : 그것은 반면
S = 45.97215 4.693909, 45.687 4.674683, 45.73302 5.460205, 46.05227 5.366821, 45.97215 4.693909
아래 링크에 주어진 절차는 점이 다각형에없는 대답 .. . 이 (내 자신의 형식 텍스트)의 출력입니다 :
(다각형 20 위의 다각형이다) 그러나 당신이 광장을 확대하는 경우 (내 테스트에서 10 배 더 큰), 홍보 ocedure 대답 내 지점에 사각형입니다.
그래서 저는 다른 알고리즘을 찾고 있습니다. 여기
내 정점 테이블은 모든 정점을 포함하는 것은 내 DB의 각 폴리곤의 좌표입니다 내가 매개 변수에 전달 주어진 포인트가 다각형 인 경우 (몇 수천가) 모든 다각형에 대해 확인해야
(그리고 그렇다면 어떤 것입니까?). 루프를 혼자서 할 수는 있지만 정확히 놓치지 마십시오 다각형의 점 알고리즘.
누군가 나를 도울 수 있습니까? 대단히 감사합니다.
요약
대응하는 SQL 바이올린 : http://sqlfiddle.com/#!3/0caa4/1
데이터베이스에 거대한 레코드가있는 경우 성능이 떨어지고 1600000 개 레코드에서이 쿼리를 시도하고 완료하는 데 평균 2 분이 걸립니다. –
안녕하세요 Jitendra, 이것은 오래된 질문이지만 프로젝트는 아직 개발 중입니다 (개인 프로젝트 임)[email protected] Thul에 대한 설명과 함께 내 링크에 제공된 알고리즘을 구현했지만 완벽하게 작동하지만 너무 많은 레코드로 시도한 적이 없었습니다. 당신은 대답으로 더 나은 알고리즘을 제안 할 수 있습니다, 그것은 환영합니다! – AlexB