2017-11-09 5 views
3

나는 테이블, 지역이 있습니다 감안할 때LNG 테이블/위도에서 포인트를 포함하는 다각형을 찾기

| id | regionid | lat | lng | 
|----|----------|-------|-------| 
| 1 | 1  | 49.27 | -2.27 | 
| 2 | 1  | 49.27 | -1.99 | 
| 3 | 1  | 49.15 | -2.27 | 
| 4 | 1  | 49.15 | -1.99 | 
... 

:

| id | name  | 
|----|----------| 
| 1 | Jersey | 
| 2 | Scotland | 
... 

및 RegionPoints의 테이블 (각 지역의 경계 상자를 정의) 위도와 경도, 나는 주어진 지점을 포함하는 지역을 찾고 싶다.

나의 이해에서

, 그러나 나는 나의 관심사입니다, 쿼리에 위도와 경도를 사용 ST_Contains에 의해 다음, regionid 다음 사용 ST_ConcaveHull을 집계 할 필요가 각각에 대해 오목 선체를 계산하는 지역의 다수와 매우 비효율적이다.

PostGIS를 처음 사용하기 때문에 조금 갇혀 있습니다.

+1

영역을 폴리곤으로 저장하지 않는 이유는 무엇입니까? – JGH

답변

2

예, "즉시"오목한 선체를 계산하는 것은 많은 양의 데이터로 비효율적 일 수 있습니다.

또한 공간 질의는 질의시 작성되기 때문에 공간 색인을 사용할 수 없습니다.

ST_ConcaveHull 대신 ST_MakeEnvelope를 사용하면 문제를 완화 할 수 있습니다.

그러나 JGH에서 제시 하듯이 ST_MakeEnvelope를 사용하여 좌표를 다각형으로 저장하고 Regions 테이블에 저장해야합니다.

공간 색인을 빌드하고 ST_Contains를 사용하여 점을 포함하는 영역을 확보하십시오.