2010-08-03 4 views
4

효율적으로 쿼리하기에는 조각난 것처럼 보이는 라디오 맵으로 작업하고 있습니다. 단일 점이 다중 다각형 내에 있는지 묻는 경우 응답 시간은 20-40 초입니다 ("within"/ "contains"/ "overlap"을 테스트했습니다). GeoDjango와 함께 PostGIS를 사용하여 쿼리를 추상화합니다.PostGIS로 큰 다중 다각형을 효율적으로 쿼리하는 방법

다중 다각형 열은 GiST 색인을 가지고 있으며, 나는 VACUUM ANALYZE를 시도했다. 나는 PostgreSQL 8.3.7을 사용합니다. 장고 1.2.

지도는 넓은 지역에 걸쳐 펼쳐집니다. 그들은 지형 인식 라디오 도구에 의해 원래 생성되었으며 the radio cells/polygons are therefore fragmented입니다.

내 목표는 다중 다각형 (신호로 덮여있을 수도 있고 그렇지 않을 수도있는 집) 내의 지점을 쿼리하는 것입니다.

모든 라디오 맵은 100,000 ~ 300,000 개의 정점 (총)으로 구성되며, 폴리곤 수가 매우 다양합니다. 일부지도에는 10 다각형 이하가 있습니다. 거기에서 그것은 10.000과 30.000 사이의 다각형으로 점프합니다. 정점에 대한 폴리곤의 비율은 쿼리가 매우 완료되는 데 걸리는 시간에는 영향을주지 않는 것으로 보입니다.

저는 투영 된 좌표계를 사용하고 주택과 라디오 부문 모두에 동일한 시스템을 사용합니다. Qgis는 라디오 섹터와지도가 지형에 정확하게 배치되었음을 보여줍니다.

내 테스트 검색어는 단일 무선지도 내에서 한 번에 한 집만 있습니다. 내가// "중복"을 "포함" "내"와 같은 쿼리를 테스트 한 결과이 같은 : 집이 라디오지도 "멀리에서"경우

  • 하위 두 번째 응답 (나는이 추측 이는 쿼리에서 자동으로 사용되는 경계 상자 바깥에 있기 때문입니다.

  • 집/지점이 무선지도에 있거나 근접한 경우 응답 시간이 20-40 초입니다.

쿼리를 최적화하는 다른 방법이 있습니까? 아니면 어떤 방식으로 원본 자료를 변경/단순화해야합니까? 모든 조언을 부탁드립니다. 내가 할 것

+0

http://gis.stackexchange.com/questions – amercader

+0

제임스 당신이 임에게 초보자를 무슨 짓을했는지 여기에 공유 될까요 입력하고 임씨도 똑같은 문제에 직면하고 있는데 어떻게 해야할지 모르겠습니다. 고마워요. –

답변

3

안녕하세요

우선 하나의 폴리곤으로 다중 다각형을 분할하고 새로운 인덱스를 만드는 것이 었습니다. 그러면 색인이 더 효과적으로 작동합니다. 이제 전체 다중 다각형에는 하나의 큰 경계 상자가 있으며 인덱스는 집이 경계 상자 안에 있는지 여부를 알 수있는 것 이상을 수행 할 수 없습니다. 따라서 전체 데이터 세트와 관련하여 작은 폴리곤 일수록보다 효율적인 인덱스 사용이 가능합니다. 그리드와 함께 단일 폴리곤을 작은 것들로 분할하여 쿼리의 인덱스 부분을 훨씬 더 효율적으로 만드는 기술조차 있습니다. 그러나 먼저 ST_Dump()를 사용하여 다중 다각형을 단일 다각형으로 분할해야합니다. 같은 테이블에 많은 속성을 가지고 있다면 다른 테이블에 넣고 그 ID가 어떤 radiomap에 속하는지를 알려주는 것이 현명 할 것입니다. 그렇지 않으면 많은 중복 된 속성 데이터를 얻게됩니다.

HTH 니클라스

당신은 전용 사이트에서 GIS 관련 질문에 대한 더 전문적인 답변을 찾을 수 있습니다
+0

감사합니다. 성능은지도를 그리드로 분할 한 후 이전과 비교하여 지붕을 통과했습니다. 이제는 프로세서 코어 당 초당 100 개 이상의 하우스를 사용하여 배치 커버리지 쿼리를 수행 할 수 있습니다. –

관련 문제