2016-09-17 8 views
0

여러 개의 레이어가있는 XML 프로젝트 파일이 있는데, 대부분이 2 (저/고) 또는 3 (저/중/고) 레이어로 나누어 져 있습니다. 줌 범위. 레이어의 전체 수 (하위 부문도 고려)는 42입니다. 저는 python-mapnik 바인딩을 mapnik 3.0.12와 함께 사용합니다. 글쎄, PostgreSQL 로그를 살펴보면 주어진 줌 레벨에서 단일 맵 이미지 (일련의 타일이 아닌 단순한 정적 이미지)를 요청할 때마다 일반적으로 12 개 밖에 필요하지 않습니다. 마지막에 쿼리 itsefl의 정의 다음Mapnik : "LIMIT 0"쿼리가 너무 많습니다.

, 플러스 "LIMIT 0"

"기간 : : : xx.xxx MS 문"42) 쿼리는 항상 42 번이 참조, 실행합니다.

: 은 그 때 나는 12 번이 찾을 수 있습니다 "기간 : xx.xxx MS 실행 :"실제로 실행 될 필요가 있었다 (12 개) 쿼리에 관한

합니다. "LIMIT 0"의 후행 42 개 쿼리는 "검사 쿼리"로 간주되어 어떤 인덱스가 가장 적합한 인덱스인지를 분석합니다.하지만 할 일이 있는지 알고 싶습니다. 이는 실제로 한 번에 실행해야하는 쿼리에 대해서만 사용되며 project.xml 파일의 모든 쿼리 (레이어)에 대해서는 수행되지 않습니다.

답변

0

MapNik 프로젝트 파일에서 Node.js 바인딩을 사용하여 비슷한 동작을 감지했습니다. 나는 Datasource 요소에 extentsrid 매개 변수를 제공하여 데이터베이스에 쿼리의 수를 줄일 수 있었다 :

<Datasource> 
    <Parameter name="extent">-180 -90,180 90</Parameter> 
    <Parameter name="srid">4326</Parameter> 
</Datasource> 

내가 mapnik이 SRID를 결정하는 기능을 검색하기 위해 앞서 쿼리 두 개의 쿼리를 실행 믿고 레이어의 범위. 데이터 소스에서 이들을 미리 제공함으로써 mapnik은 이러한 쿼리를 실행할 필요가 없습니다.

+0

필자는 내 코드에서 서버를 시작할 때 한 번만 호출하는 것이 아니라 각 타일 요청에서'mapnik.load_map (...) '메서드를 반복적으로 호출하고 있다고 내 코드에서 깨달았다. – Andrea