2016-09-17 74 views
0

我有一個xml項目文件有幾個圖層,其中許多依次劃分爲2個(低/高)或3個(低/中/高)層,每個圖層覆蓋不同縮放範圍。整個層數(考慮細分)也是42.我使用mapnik 3.0.12的python-mapnik綁定。 那麼,如果我看看PostgreSQL日誌,每次我在給定的縮放級別上請求一個地圖圖像(一個簡單的靜態圖像,而不是一系列的圖塊),通常只需要12個42)要執行的查詢,我總是看到這個42倍:Mapnik:太多的「LIMIT 0」查詢

「時間:xx.xxx毫秒聲明:」

隨後查詢itsefl的定義,再加上「LIMIT 0」結尾。 然後我可以找到這個12倍:

「時間:xx.xxx MS執行:」

這是有關實際上需要執行的12個查詢。 我想42個查詢的尾部「LIMIT 0」是「檢查查詢」,執行分析哪個索引是最好的使用,等等......但我想知道是否有辦法做這僅適用於實際必須一次執行的查詢,而不適用於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

我意識到這是我的錯:在我的代碼中,我反覆調用每個tile請求的'mapnik.load_map(...)'方法,而不是在啓動服務器時調用一次。 – Andrea