2012-08-24 25 views
2

我有一個問題,我有大量的數據存儲在EPSG:27700(OSGB)需要被映射。我已經使用OpenLayers開發了一個映射器,並在英國法令調查中爲OpenSpace開發了一個基礎層(http://www.ordnancesurvey.co.uk/oswebsite/web-services/os-openspace/api/index)。 HTML)。然而,這個底層是投影在27700,所以我沒有問題,直到這一點,因爲所有的投影(從地圖服務器和基礎層)是相同的。是否可以使用不同投影的另一個WMS圖層顯示OSM數據?

現在需要進一步放大圖層,而不是自由條例調查允許的範圍(即使質量下降)。我發現可以使用OpenLayers進一步放大它們基於圖塊的圖層,例如OSM。我遇到的問題是試圖讓OpenLayers在投影EPSG中顯示OSM數據和我的圖層:27700。

這甚至可能嗎?

謝謝。

回答

3

OpenLayers無法重新投影圖像圖層。原因在於OpenLayers使用CSS來疊加圖像層,CSS不夠豐富,無法完成空間轉換所需的複雜幾何操作。

作爲一種解決方案,您需要將您的數據從EPSG:27700重新投影到WMS服務器中的基礎圖層投影(EPSG:900913,如果使用OpenStreetMap)。您可以使用MapServer或GeoServer進行此操作。

另一種解決方案是將WFS用於疊加層:然後OpenLayers可以重新映射疊加層中每個矢量要素的位置。看看WFS reproejction example

最後,還有一個使用HTML5 Canvas和JavaScript版本GDAL的柵格轉化的實驗方案:

http://dev.openlayers.org/sandbox/camptocamp/canvas/openlayers/examples/raster-reprojection.html

+0

在你的評論的背面,我已經有地圖服務器將數據從27700重新投影到900913,但現在數據似乎是一個200米來自OSM。任何線索? –

+0

MapServer中的SRS定義是否正確? – EPSG31468

+0

地圖文件是: '投影 \t 「INIT = EPSG:900913」 END WEB METADATA 「wms_srs」 「EPSG:900913」 END END' 層本身是 'PROJECTION 「INIT = epsg:27700「 END METADATA \t \t 」wms_srs「」EPSG:900913「 END' –

0

OSM數據通常在EPSG:900913中以瓷磚的形式提供,因此不可能將瓷磚轉換爲其他投影(您可以嘗試,但由於尖端具有小分辨率,質量會下降)。你可以做的是下載所有的OSM數據,並在你喜歡的EPSG中運行自己的tile服務。

但首先,請在openLayers文檔中查看map對象的所有特性。您可以設置地圖的縮放級別。如果不這樣做,默認情況下地圖對象會從第一個加載圖層獲取縮放級別,可能這是您的問題,因爲英國操作系統圖層可能在幾個縮放級別下工作。

+0

與設置我自己的縮放級別的問題是,的OpenLayers嘗試查詢英國OS服務器對於新的縮放級別,所有我得到的是一個錯誤的請求,因爲縮放級別不支持,然後基層因爲請求失敗變粉紅色。 –

+0

這可能是因爲它不是WMS,而且tileservice只有某些縮放級別預生成...您可以嘗試找出英國OS縮放級別的分辨率,並將相同的分辨率設置到您的應用程序中,但可能會顯示UK OS圖層只在放大它的作品。但是你不能實現你的目標,因爲英國的操作系統地圖在較小的縮放級別上消失...... – Odoakr

相關問題