本發明屬于webgis系統領域,尤其涉及一種動態服務和瓦片服務的無縫集成方法及系統。
背景技術:
在webgis網絡地理信息系統的建設過程中,地圖中所展示的數據均由服務的形式發布出來,在webgis系統中進行展示。傳統的webgis地圖系統工程中,影像地圖往往都需要發布為瓦片服務,以加速地圖的加載顯示。為此工程師會針對地圖的比例尺構建一套生成瓦片的金字塔方案,具體采用四叉樹的格式定義,即下一級別的縮放比例尺為上一級別的2倍。據此,每多生成一級瓦片,生成的瓦片數據總量會呈3-4倍的速度遞增。影像地圖一般會采用瓦片地圖發布,影像地圖根據分辨率不同分為多種規格,常見有0.5m,1m,2m等等,數字越小,地圖上的地物越清晰。因此,在地圖分級或影像地圖縮放的比例尺超過了瓦片影像地圖本身的最大分辨率時,地圖上的地物將會呈現出馬賽克狀,變得非常模糊。
對于超出分辨率的瓦片,實際作為顯示來講沒有任何實際的觀察意義,反而因為更深層級的瓦片引起切換數據總量的巨大增長所帶來的空間占用,這些模糊的瓦片會占用大量的服務器磁盤空間造成不必要的浪費。
技術實現要素:
鑒于上述問題,本發明的目的在于提供一種動態服務和瓦片服務的無縫集成方法及系統,旨在解決現有webgis系統容易產生不必要的服務器磁盤空間浪費的技術問題。
一方面,所述動態服務和瓦片服務的無縫集成方法包括下述步驟:
配置服務切換策略,所述切換策略包括設置切換動態服務對應的動態比例尺范圍以及切換瓦片服務對應的瓦片比例尺范圍;
當進行地圖縮放時,獲取地圖當前比例尺數值,若所述比例尺數值落入到的動態比例尺范圍內,則加載動態服務到地圖上,瓦片服務從地圖上移除,若所述比例數值落入到瓦片比例尺范圍內,則加載瓦片服務到地圖上,動態服務從地圖上移除。
另一方面,所述動態服務和瓦片服務的無縫集成系統包括:
策略配置單元,用于配置服務切換策略,所述切換策略包括設置切換動態服務對應的動態比例尺范圍以及切換瓦片服務對應的瓦片比例尺范圍;
服務切換加載單元,用于當進行地圖縮放時,獲取地圖當前比例尺數值,若所述比例尺數值落入到的動態比例尺范圍內,則加載動態服務到地圖上,瓦片服務從地圖上移除,若所述比例數值落入到瓦片比例尺范圍內,則加載瓦片服務到地圖上,動態服務從地圖上移除。
本發明的有益效果是:本發明通過在webgis系統中調整圖層的控制策略,在不影響系統使用體驗的前提下來避免無謂的空間占用,具體的,采用動態服務和瓦片服務相結合的方式來對影像地圖服務進行重新組織,實現以縮放比例尺來控制地圖服務的加載過程,小比例尺加載影像地圖的瓦片服務,大比例尺加載影像地圖的動態服務,在地圖瀏覽效率和服務器硬件資源利用上達到了的良好平衡。
附圖說明
圖1是本發明第一實施例提供的動態服務和瓦片服務的無縫集成方法的流程;
圖2是切換策略示意圖;
圖3是比例尺范圍示意圖;
圖4是地圖窗口范圍;
圖5是本發明第二實施例提供的動態服務和瓦片服務的無縫集成系統的結構方框圖。
具體實施方式
為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
為了說明本發明所述的技術方案,下面通過具體實施例來進行說明。
實施例一:
圖1示出了本發明實施例提供的動態服務和瓦片服務的無縫集成方法的流程,為了便于說明僅示出了與本發明實施例相關的部分。
如圖1所示,本實施例提供的動態服務和瓦片服務的無縫集成方法包括:
步驟s1、配置服務切換策略,所述切換策略包括設置切換動態服務對應的動態比例尺范圍以及切換瓦片服務對應的瓦片比例尺范圍。
步驟s2、當進行地圖縮放時,獲取地圖當前比例尺數值,若所述比例數值落入到瓦片比例尺范圍內,則加載瓦片服務到地圖上,動態服務從地圖上移除若所述比例尺數值落入到的動態比例尺范圍內,則加載動態服務到地圖上,瓦片服務從地圖上移除。
由于動態服務無需預生成地圖瓦片,實時從數據庫中獲取指定范圍的數據并返回給webgis系統進行展示。而瓦片服務直接從影像地圖數據的緩存數據直接加載。因此本實施例為了解決當地圖縮放的比例尺超過了瓦片影像地圖本身的最大分辨率時,地圖上的地物將會呈現出馬賽克狀,變得非常模糊的問題,調整了圖層的切換控制策略,在小比例尺級別使用地圖影像數據的緩存數據,即使用瓦片服務加載數據,在超出地圖影像數據分辨率的大比例尺級別調用動態服務加載數據,即實時從數據庫中獲取當前顯示范圍的數據,可以很好避免出現馬賽克情況。
在組織地圖服務結構的過程中,首先配置服務切換策略,具體為將影像數據發布為一個瓦片服務和一個動態服務的策略。具體實現時,考慮采用一個可配置的xml結構來定義,如下所示:
<?xmlversion="1.0"encoding="utf-8"?>
<fusionservicename="影像地圖">
<scaleinfomin="30000"max="5000">
<servicetype="tiled"url="tileurl"/>
</scaleinfo>
<scaleinfomin="5000"max="1000">
<servicetype="dynamic"url="dynamicurl"/>
</scaleinfo>
</fusionservice>
這里,fusionservice表示一個經過集成后的服務節點,name為集成后服務的名稱;通過scaleinfo節點來定義服務切換策略,min和max分別表示開始在地圖上顯示的最小比例尺和最大比例尺。本實施例中,瓦片服務對應的瓦片比例尺范圍為1:30000-1:5000(含),動態服務對應的動態比例尺范圍為1:5000-1:1000,兩個范圍的臨界點就是地圖瓦片的最大分辨率。結合圖2所示的切換策略示意圖,當地圖縮放時,獲取地圖當前比例尺,與fusionservice中所定義的比例尺范圍進行比對,將滿足落在范圍內的服務加載到地圖,不在范圍內的服務從地圖上移除。也就是說,若當前比例尺數值在1:30000-1:5000內時,加載瓦片服務,直接使用瓦片地圖數據,加載非常迅速,若當前比例尺數值在1:5000-1:1000內時,加載動態服務,實時從數據庫中獲取當前窗口范圍的數據,并進行地圖展示,避免出現顯示馬賽克情況,這些馬賽克碎片也會占用磁盤空間。
本發明使用動態服務和瓦片服務相結合的方式來對影像地圖服務進行重新組織,通過webgis系統中配置化的xml結構,實現以縮放比例尺來控制地圖服務的加載過程。小比例尺加載影像地圖的瓦片服務,大比例尺加載影像地圖的動態服務,在地圖瀏覽效率和服務器硬件資源利用上達到了的良好平衡。
另外,在加載動態服務時,需要實時從數據庫中下載當前窗口范圍內的緩存數據,因此在地圖展示過程,顯得加載過程顯的略慢,影響縮放操作體驗。為此,我們可以在縮放操作后,如果當前加載的是動態服務,在當前數據加載完成之后,可以當前比例尺數值附近的比例尺層級下的數據進行預加載,考慮到經過縮放操作后,一般情況下,用戶還會繼續進行縮放操作微調,這樣通過數據預加載,可以明顯加快地圖加載速度,提高操作體驗。
為了具體說明本方案,結合圖3所示,假設所述瓦片比例尺范圍為rmin-rt,所述動態比例尺范圍為rt-rmax,設置比例尺預加載偏移值rv,進行地圖縮放時,假設獲取到的當前比例尺數值為r0,如果rmin≤r0≤rt,則加載瓦片服務,將當前地圖窗口范圍內r0對應的瓦片數據進行加載顯示,如果rt<r0≤rmax,則加載動態服務,實時從數據庫中獲取當前地圖窗口范圍內r0對應層級的緩存數據進行加載顯示。如果數據還未加載完畢,為了保證地圖加載速度,此時不預加載附近比例尺層級的緩存數據,只有在當前的緩存數據加載完畢時刻,如果用戶沒有進行下一步縮放操作,可以利用此時間進行預加載。因此當沒有接收到后續的縮放操作指令后,預加載r0-rv至r0+rv之間各比例尺層級的緩存數據,需要說明的是,由于r0-rv至r0+rv之間的地圖比例尺層級是離散的,所以預加載的比例尺層級也不會很多,再考慮到只用預加載比例尺改變后地圖窗口中心不變時所能展示的地圖窗口范圍的緩存數據,也就是說,如圖4所示,當前地圖窗口范圍是外圍的實線矩形框,當比例尺增大1倍后,地圖窗口中心不變,只需預加載虛線矩形框所示窗口范圍的數據,因此整體來說,預加載的數據也不是很多。另外,如果r0-rv小于rt,則上述預加載的比例尺范圍的下限為rt,如果r0+rv大于rmax,則上述預加載的比例尺范圍的上限為rmax。
特別需要注意的是,由于比例尺越大,地圖窗口范圍內加載的數據量就越多,這樣有必要減小附近預加載比例尺范圍,相反的,比例尺越小,地圖窗口范圍內加載的數據量就越少,可以適量增加附近預加載比例尺范圍。經驗證,可以設置比例尺預加載偏移值
預加載的數據不易長時間駐存磁盤,否則時間間使用后,預加載的數據總量太大,浪費磁盤空間。為此,實施例還對預加載的緩存數據設置生命周期,當生命周期到來時刻,清除所述預加載的數據,可以這樣可以使得保持駐存的預加載數據總量在一個可控的范圍內。在生命周期內,如果后續用戶繼續縮放操作,而且此時的比例尺數值在f大(r0-rv,rt)至f小(r0+rv,rmax)之間,則可直接調用預加載數據,找到相應層級的數據并加載顯示。加載顯示完畢后,同樣也會在后臺預加載此時比例尺數值附近范圍的緩存數據,如果這個數據與之前預加載的數據有重合,則重合的部分無需重新加載,更新生命周期即可,不重合的部分新加載,同樣也要設置生命周期。
如果在預加載期間,用戶發生了縮放操作,則立即中斷預加載,已加載的數據設置生命周期,即刻響應縮放操作。
如果發生地圖退出操作,清空所有預加載數據,不產生額外碎片數據。
通過上述方案,可以明顯加快動態服務時數據的加載顯示速度,而且預加載數據總量保持在一個可控范圍內,不浪費磁盤。
實施例二:
圖5示出了本發明實施例提供的動態服務和瓦片服務的無縫集成系統的結構,為了便于說明僅示出了與本發明實施例相關的部分。
本實施例提供的動態服務和瓦片服務的無縫集成系統,包括:
策略配置單元501,用于配置服務切換策略,所述切換策略包括設置切換動態服務對應的動態比例尺范圍以及切換瓦片服務對應的瓦片比例尺范圍;
服務切換加載單元502,用于當進行地圖縮放時,獲取地圖當前比例尺數值,若所述比例尺數值落入到的動態比例尺范圍內,則加載動態服務到地圖上,瓦片服務從地圖上移除,若所述比例數值落入到瓦片比例尺范圍內,則加載瓦片服務到地圖上,動態服務從地圖上移除。
這里,所述瓦片比例尺范圍為rmin-rt,所述動態比例尺范圍為rt-rmax,設置比例尺預加載偏移值rv,進行地圖縮放時,假設獲取到的當前比例尺數值為r0,如果rmin≤r0≤rt,則加載瓦片服務,將當前地圖窗口范圍內r0對應的瓦片數據進行加載顯示,如果rt<r0≤rmax,則加載動態服務,實時從數據庫中獲取當前地圖窗口范圍內r0對應層級的緩存數據進行加載顯示,在數據加載完畢時刻,如果沒有接收到后續的縮放操作指令,則在f大(r0-rv,rt)至f小(r0+rv,rmax)之間各比例尺層級下并且地圖窗口中心不變時,所能展示的地圖窗口范圍的緩存數據進行預加載,同時對預加載的緩存數據設置生命周期,這里f大(r0-rv,rt)表示取r0-rv和rt中的較大值,f小(r0+rv,rmax)表示取r0+rv和rmax中的較小值,所述比例尺預加載偏移值
當接收到縮放操作指令后,如果獲取到此時比例尺數值在f大(r0-rv,rt)至f小(r0+rv,rmax)之間,則直接調用預加載數據,找到相應層級的數據并加載顯示;
當生命周期到來時刻,清除所述預加載的數據;
如果發生地圖退出操作,清空所有預加載數據,不產生額外碎片數據。
本實施例功能單元501和502對應實現了實施例一中的步驟s1和s2,具體實現過程這里不再贅述。
以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。