2010-01-21 21 views
1

在Google地球(或其他可能的KML友好客戶端)中發現覆蓋圖和時間軸的問題。KML + Google地球:使用時間軸選擇器進行大型複雜重疊?

我有一天中每天的每一分鐘的數據,代表地圖上各個區域的數值,我想以基本類似於天氣雷達地圖的方式顯示數據。所以,對於每一分鐘,我基本上都有一大堆經緯度邊界框,每個框都有一個相關的數值;顯示將涉及在有界區域上繪製多邊形,並且多邊形的顏色將取決於該數值。

我可以看到許多方法在一個時刻做到這一點;或者用ImageMagick爲整個地圖區域構建一個PNG並覆蓋位圖,或者直接在地圖上繪製多邊形......但問題是,我可以如何設置,因此時間範圍可以由用戶,並且所有適合該時間範圍的疊加都將被顯示。它必須儘可能地做出反應,所以效率是關鍵。

例如,可以預先渲染大量和大量的PNG文件,每個時間片一個;或者使用多邊形會更好,還是...?

最後 - Google Earth是最好的客戶端嗎?或者我可能會更好用別的東西?

謝謝!

回答

3

Open Geospatial ConsortiumWMS standard服務映射定義了對TIME參數的支持,該參數允許支持臨時請求。提供這種支持的WMS服務稱爲WMS-T。據我所知,在開源地圖服務器只有Mapserver和部分Geoserver提供支持WMS-T(我可能是非常錯誤的,因爲我只是從個人經驗說話)。檢查此頁面以獲取有關設置WMS-T服務的所有細節:

http://mapserver.org/ogc/wms_time.html

你可以很容易地看到如何在看看這個網址的請求工作:

http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?LAYERS=nexrad-n0r-wmst&TRANSPARENT=true&FORMAT=image%2Fpng&TIME=2005-08-29T13%3A00%3A00Z&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-90,22.5,-67.5,45&WIDTH=256&HEIGHT=256

請注意TIME參數如何從2005-08-29T13%3A00%3A00Z2005-08-30T13%3A00%3A00Z(時間根據ISO 8601規範格式化)。

http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?LAYERS=nexrad-n0r-wmst&TRANSPARENT=true&FORMAT=image%2Fpng&TIME=2005-08-30T13%3A00%3A00Z&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-90,22.5,-67.5,45&WIDTH=256&HEIGHT=256

在客戶端,雖然谷歌地球可以作爲WMS客戶端行爲,我不認爲它支持WMS的請求時間維度。在另一方面,構建支持它們的網絡客戶端是OpenLayers,一個開源的JavaScript的網絡映射框架很容易,因爲你可以在下面的例子中看到:

http://dev.openlayers.org/releases/OpenLayers-2.8/examples/wmst.html

希望這會給你一些線索。


編輯:可以定義多個時間值,單一範圍或多個範圍。例如,對於一個範圍的網址爲:

http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?LAYERS=nexrad-n0r-wmst&TRANSPARENT=true&FORMAT=image%2Fpng&TIME=2005-08-30T13%3A00%3A00Z/2005-09-01T13%3A00%3A00Z&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-90,22.5,-67.5,45&WIDTH=256&HEIGHT=256

注意時間參數爲2005-08-30T13%3A00%3A00Z/2005-09-01T13%3A00%3A00Z

+0

這聽起來像是一種確定的可能性 - 你知道它的速度和效率嗎?它可以處理1000個基於矢量的多邊形的圖層嗎?是否有可能指定一個時間範圍,而不是一個時間? – DanM 2010-01-22 20:08:44

+0

檢查RANGE支持的編輯答案。至於性能,我已經使用MapServer讀取shape文件或具有數千個功能的PostGIS表格來設置WMS服務,並且性能非常好。您可以定義增加MapServer性能,將其設置爲FastCGI,特別是如果您的數據位於PostGIS表中。我沒有親自使用臨時請求,但請記住,最後,這是應用於原始數據集的過濾器,可能更復雜的是請求(即時間範圍與單個時刻),要求更高將呈現。 – amercader 2010-01-23 22:19:36

+0

Geoserver執行WMS-T - 請參閱http://docs.geoserver.org/latest/en/user/webadmin/data/layers.html#webadmin-layers-edit-dimensions配置端,http:// docs.geoserver.org/latest/en/user/services/wms/time.html供客戶端使用。如果您爲WMS服務器配置了WMS-T的數據,然後將WMS圖層添加到Google地球,然後以編程方式將KML的單個快照擴充爲URL中帶有額外TIME = ..參數的一組圖層,並且時間跨度在圖片疊加中,您可以讓Google地球進行緩存,然後服務器進行渲染。 – 2015-07-15 18:53:36

2

KML的時間特徵爲well documented幷包含時間跨度。我建議你嘗試使用矢量和基於圖像的方法取決於如何關閉在用戶縮放:

  • 當用戶縮小(小規模)大量的細胞將需要繪製,使其更有效地使用圖像。 PNG可以打包成kmz文件,這只是一個壓縮目錄。
  • 當用戶放大關閉(大規模)時,需要繪製更少的單元格,從而使矢量成爲最有效的方法。谷歌地球可以繪製大量的矢量,沒有太多的麻煩,但有一定的限制。

谷歌地球作爲一個非常非常用戶友好的通用查看器是神奇的。但是,時間序列工具更加複雜,因此它將取決於用戶的複雜程度。它對您的項目的適用性取決於您擁有的數據類型和您想要的輸出類型。使用閃光燈可能會獲得更好的效果。

+0

如果您可以將數據放入Mapserver或Geoserver中,則可以使用不同的TIME = ..../....參數與時間跨度匹配,然後以編程方式編寫KML文件,然後讓谷歌地球撞擊WMS-T服務器,然後使用自己的時間滑塊來緩存需要的內容。 – 2015-07-15 18:35:42