mapserver+QGIS+openlayers的安裝和配置


1、下載MS4W,不要懷疑MS4W就是mapserver,只是里面集成了一些其他的工具和庫,下載地址:http://www.maptools.org/ms4w/index.phtml?page=downloads.html下載zip就行。

2、將下載的zip解壓到硬盤,最好是根目錄,不然還要配置其他參數,很麻煩。

3、在dos窗口下執行ms4w文件夾下的apache-install.bat

4、打開瀏覽器 輸入http://localhost/或者http://127.0.0.1/ 將可以看到MS4W的首頁面。這樣mapserver就安裝成功了

5、測試mapserver是否支持WMS服務,使用DOS命令行進入MS4W的安裝路徑(如D:\ms4w\Apache\cgi-bin), 執行mapserv -v

6、下載安裝QGIS,地址:http://www.qgis.org/en/site/,QGIS為了生成mapserver要用的mapfile

7、安裝好后在插件>Manage Plugins下添加Mapserver Export插件

8、打開幾個shp圖層,右擊每個圖層,在屬性中設置使用oldsymbology,否則出錯

9、設置好后,導出mapfile文件,一般情況下這個文件不能直接用,需要配置一下,配置的方法自己百度吧

10.配好后在瀏覽器中輸入:http://192.168.1.100/cgi-bin/mapserv.exe?MAP=C:/ms4w/Apache/htdocs/map/ChinaBasint.map&LAYERS=ALL&MODE=MAP

就會出現下圖:

11、下一步就是把地圖嵌入到openlayers的框架內

將openlayers文件夾內的img,theme,OpenLayers.js三個文件復制到C:\ms4w\Apache\htdocs目錄下

這里內容很多,大家可以研究下openlayers自帶的例子,通過例子來學習

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
        <meta name="apple-mobile-web-app-capable" content="yes">
        <title>OpenLayers Buffer Example</title>
        <link rel="stylesheet" href="../theme/default/style.css" type="text/css">
        <link rel="stylesheet" href="style.css" type="text/css">
        <script src="../lib/OpenLayers.js"></script>
        <script type="text/javascript">
            var lon = 0;
            var lat = 0;
            var zoom = 2;
            var map, layer;

            function init(){
                map = new OpenLayers.Map( 'map' );
                layer = new OpenLayers.Layer.WMS( "0 buffer: OpenLayers WMS",
                        "http://vmap0.tiles.osgeo.org/wms/vmap0",
                        {layers: 'basic'}, {'buffer':0} );
                map.addLayer(layer);
                layer = new OpenLayers.Layer.WMS( "1 buffer: OpenLayers WMS",
                        "http://vmap0.tiles.osgeo.org/wms/vmap0",
                        {layers: 'basic'}, {'buffer':1} );
                map.addLayer(layer);
                layer = new OpenLayers.Layer.WMS( "4 buffer: OpenLayers WMS",
                        "http://vmap0.tiles.osgeo.org/wms/vmap0",
                        {layers: 'basic'}, {'buffer':4} );
                map.addLayer(layer);
                map.addControl(new OpenLayers.Control.LayerSwitcher());
                map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
            }
        </script>
    </head>
    <body onload="init()">
        <h1 id="title">Buffer Example</h1>

        <div id="tags">
            buffer, performance, tile, light
        </div>

        <p id="shortdesc">
            This example shows the use of the buffer layer option for any layer that inherits from OpenLayers.Layer.Grid.
        </p>

        <div id="map" class="smallmap"></div>

        <div id="docs">
            Use the buffer property to control how many tiles are included
            outside the visible map area. Default is 0.
        </div>
    </body>
</html>

上面是一個很簡單的例子,我們發布自己的地圖時,可以把下面的代碼段改一下就行了

 layer = new OpenLayers.Layer.WMS( "0 buffer: OpenLayers WMS",
                        "http://vmap0.tiles.osgeo.org/wms/vmap0",
                        {layers: 'basic'}, {'buffer':0} );

下面是我的

Basint =new OpenLayers.Layer.WMS("盆地分布", "http://192.168.1.100/cgi-bin/mapserv.exe?",
        {map:'C:/ms4w/Apache/htdocs/map/ChinaBasint.map',layers:'Basint',transparent: "true"} );

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM