2014-01-29 23 views
0

有沒有方法可以統計圖層接收到多少個項目/幾何圖形?我想要做的是繪製一個不同的符號,如果查詢返回太多的項目。例如:計算MapServer中整個圖層的符號

MAXFEATURES 10001 #if I get 10001 results, please zoom in 

CLUSTER 
    MAXDISTANCE 20 
    REGION "retangular" 
END 

LAYER 
    CLASS 
    EXPRESSION ([countPoints] > 10000) 
    STYLE 
     SYMBOL "to_many_points_please_zoom_in" 
    END 
    END 

    CLASS 
    EXPRESSION ([countPoints] < 10000 and [Cluster:FeatureCount] > 1) 
    STYLE 
     SYMBOL "cluster" 
    END 
    END 
    CLASS 
    EXPRESSION ([countPoints] < 10000 and [Cluster:FeatureCount] == 1) 
    STYLE 
     SYMBOL "point" 
    END 
    END 

END 

我試圖用[集羣:FeatureCount],但它無法計數整個層,它只是計數分在幾組。

回答

0

據我所知,沒有內置的地圖服務器參數與您的countPoints僞參數匹配,所以不幸的是,在一個普通的地圖文件中沒有辦法做到你想要的。在我看來,你有兩種方法可供選擇:

  1. 使用MapScript:您可以使用getNumFeatures()一個層上檢索的功能,數量和編程調整基於結果的類和造型。

  2. 將特徵計數信息嵌入源數據中,或者顯式地使用包含特徵計數的屬性字段,或者如果MAXFEATURES > 10000隱含地通過改變存在的屬性來嵌入。使用後一個選項,您可以檢查屬性是否存在於映射文件表達式中。

走下去嵌入特徵計數在源數據信息的路徑意味着你需要產生數據爲每個請求作爲已經從映射文件來創建該數據的代碼移動的邏輯。這意味着要麼使用SQL調用一個封裝了邏輯的過程的數據庫來獲取數據,要麼使用帶有您控制的遠程數據源(例如,OGR CONNECTIONTYPE可以通過腳本生成的HTTP使用HTTP的GeoJSON資源)的圖層CONNECTIONTYPE