OpenLayers多源資料載入一 資料組織

2021-08-21 19:45:26 字數 2109 閱讀 5327

openlayers的地圖資料通過圖層(layer)進行組織渲染,然後通過資料來源(source)設定具體的地圖資料**。

layer可看作渲染地圖的層容器,具體的資料需要通過source設定。

地圖資料根據資料來源(source)可分為imagetilevector三大型別的資料來源類,對應設定到地圖圖層(layer)的imagetilevector三大類的圖層中。其中,向量圖層vector通過樣式(style)來設定向量要素渲染的方式和外觀。

source和layer是一對一的關係,有乙個source,必然需要乙個layer,然後把layer新增到map上,就可以顯示出來了。

在資料來源中:

image類為單一影象基類,其子類作為畫布(canvas)元素、伺服器、單個靜態、wms單一影象等的資料來源。ol.source.image對應的是一整張圖,而不像瓦片那樣很多張圖,從而無需切片,也可以載入一些地圖,適用於一些小場景地圖。

tile類為瓦片抽象基類,其子類作為各類瓦片資料的資料來源。

vector類則為向量類,可直接例項化建立向量資料的資料來源(支援各種格式的向量資料),其子類則為擴充套件的某類向量資料的資料來源。

從上述openlayers的空間資料組織可知,地圖資料的資料來源可分為image、tile、vector三大型別,其中,image為資料來源,tile為瓦片資料來源,兩者本質基本相同,均為或集。ol.source.vector則為向量資料來源基類,為向量圖層提供具體的資料**,包括直接組織或讀取的向量資料(features)、遠端資料來源的向量資料(即通過url設定資料來源路徑)等。若是url設定的向量資料來源,則通過解析器format(即ol.format.feature的子類)來解析各類向量資料,如xml、text、json、gml、kml、gps、wfs、wkt、geojson等地圖資料。

從複雜度來分析,ol.source.image和ol.source.vector都不複雜,其資料格式和**方式都簡單。而ol.source.tile則不一樣,由於一些歷史問題,多個服務提供商,多種標準等諸多原因,導致要支援世界上大多數的瓦片資料來源,就需要針對這些差異提供不同的tile資料來源支援。我們先來看一下openlayers現在支援的source具體有哪些:

上圖中的類是按照繼承關係,從左向右展開的,左邊的為父類,右邊的為子類。在使用時,一般來說,都是直接使用葉子節點上的類,基本就可以完成需求。父類需要自己進一步擴充套件或者處理才能有效使用。

我們先了解最為複雜的ol.source.tile,其葉子節點類有很多,大致可以分為幾類:

支援協議標準的source,包括ol.source.tilearcgisrest、ol.source.tilewms、ol.source.wmts、ol.source.utfgrid、ol.source.tilejson。如果要使用它們,首先你得先學習對應的協議,之後必須找到支援這些協議的伺服器來提供資料來源,這些伺服器可以是底圖服務提供商提供的,也可以是自己搭建的伺服器,關鍵是得支援這些協議。

ol.source.image雖然有幾種不同的子類,但大多比較簡單,因為不牽涉到過多的協議和伺服器提供商。而ol.source.vector就更加簡單了,但有時候其唯一的子類ol.source.cluster在處理大量的feature時,我們可能需要使用。

在大概了解了整個source之後,緊接著該介紹它的搭檔layer了,同樣的,我們還是先從openlayers現有的layer類圖大致了解一下:

為了便於了解和使用,圖中標註了每乙個layer對應的source。通過上圖可以看到layer相對於source而言,真是太簡單了。

多源資料融合學習

多源資訊融合 multi source information fusion 最早由美國學者提出,這是乙個新興的交叉領域,近些年獲得廣泛的發展。應用於多個領域 目標識別 遙感 醫學等。多源資訊融合是對多種資料進行認知 綜合 判斷的過程,參與融合的資料往往具有 多源性 異構性 不完備性等,按照融合的層...

多源對多源最短路徑

魔方國有n座城市,編號為1 sim n1 n。城市之間通過n 1條無向道路連線,形成乙個樹形結構。在若干年之後,其中p座城市發展成了大都會,道路的數量也增加到了m條。大都會之間經常有 往來,因此,對於每座大都會,請你求出它到離它最近的其它大都會的距離。蒟蒻第一次見多源對多源最短路,沒想到是這種處理方...

vue 多源資料怎麼處理

情況描述 專案需要增加乙個新服務,且兩個服務ip一樣,埠號不一致,以下兩種情況 1 開發環境下 可以在config index.js中直接配置 是原本服務,scan 是新增的,可以進行除錯,兩邊介面都可以用 2 部署打包 需要固定的ip 埠,進行重定向使用,可能會出現跨域問題,一般跨域後台解決 兩個...